memset void * memset ( void * ptr, int value, size_t num );
#include
#includeint main()
{//利用英文文档学习memset// //设置内存的时候是以字节为单位的//每个字节的内容都是一样的valuechar arr[] = "hello world";memset(arr , 'x', 5);printf("%s", arr);return 0;
}
注意: 库函数必须知道的一个秘密就是:使用库函数,必须包含 #include 对应的头文件。
ret_type fun_name(para1, * ) { statement;//语句项 } ret_type 返回类型 fun_name 函数名 para1 函数参数
自定义函数练习:
#include//写一个函数可以找出两个数的最大值int get_max(int x, int y)
{if (x > y)return x;elsereturn y;
}int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);//使用函数求a和b的较大值//Max();int m = get_max(a, b);printf("%d\n", m);return 0;
}
#include//写一个函数可以交换两个整形变量的内容
void swap(int *pa, int *pb)
{int tmp = *pa;*pa = *pb;*pb = tmp;
}int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);printf("交换前:a=%d,b=%d\n", a, b);swap(&a, &b);printf("交换后:a=%d,b=%d\n", a, b);return 0;
}
#include
#include//写一个函数求素数
int is_prime(int n)
{int j = 0;for (j = 2; j <= sqrt(n); j++)if (n % j == 0)return 0;return 1;
}int main()
{//打印100~200之间的素数int i = 0;for (int i = 100; i <= 200; i++)if (is_prime(i) == 1)printf("%d ", i);return 0;
}
#include//写一个函数判断一年是不是闰年
int is_leap_year(int y)
{return (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0));
}int main()
{//1000~2000年的闰年int y = 0;for (y = 1000; y <= 2000; y++)if (is_leap_year(y) == 1)printf("%d ", y);return 0;return 0;
}
#include//二分查找
int binary_search(int arr[], int k, int sz)
{int left = 0;int right = sz - 1;while (left <= right) {int mid = left + (right - left) >> 1;if (arr[mid] < k)left = mid + 1;else if (arr[mid] > k)right = mid - 1;elsereturn mid;}return -1;
}int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int k = 0;scanf("%d", &k);//要查找的元素int sz = sizeof(arr) / sizeof(arr[0]);int ret = binary_search(arr, k, sz);if (ret == -1)printf("找不到\n");elseprintf("找到了,下标是:%d\n", ret);return 0;
}
#include//写一个函数,每调用一次这个函数,就会将 num 的值增加1。
void test(int* p)
{*p = *p + 1;
}int main()
{int num = 0;test(&num);printf("%d\n", num);return 0;
}
#include void new_line()
{printf("hehe\n");
}void three_line()
{int i = 0;for (i = 0; i < 3; i++){new_line();}
}int main()
{three_line();return 0;
}
把一个函数的返回值作为另外一个函数的参数。
#include
#include //int main()
//{
// char arr[20] = "hello";
// int ret = strlen(strcat(arr, "bit"));//这里介绍一下strlen函数
// printf("%d\n", ret);
// return 0;
//}#include
int main()
{printf("%d", printf("%d", printf("%d", 43)));//结果是啥?//注:printf函数的返回值是打印在屏幕上字符的个数return 0;
}
注意:
函数可以嵌套调用,但是不能嵌套定义。
放置函数的声明 #ifndef __TEST_H__ #define __TEST_H__ //函数的声明 int Add(int x, int y); #endif //__TEST_H__
test.c的内容
放置函数的实现 #include "test.h" //函数Add的实现 int Add(int x, int y) { return x+y; }
#include //接受一个整型值(无符号),按照顺序打印它的每一位。
void print(int n)
{if (n > 9){print(n / 10);}printf("%d ", n % 10);
}int main()
{int num = 1234;print(num);return 0;
}
#include//编写函数不允许创建临时变量,求字符串的长度。
int Strlen(const char* str)
{if (*str == '\0')return 0;elsereturn 1 + Strlen(str + 1);
}int main()
{const char* p = "abcd";int len = Strlen(p);printf("%d\n", len);return 0;
}
#include//求n的阶乘
int factorial(int n)
{if (n <= 1)return 1;elsereturn n * factorial(n - 1);
}int main()
{int n = 0;scanf("%d", &n);int ret = factorial(n);printf("%d\n", ret);return 0;
}
#include//求第n个斐波那契数。
int fib(int n)
{if (n <= 2)return 1;elsereturn fib(n - 1) + fib(n - 2);
}int main()
{int n = 0;scanf("%d", &n);int ret = fib(n);printf("%d\n", ret);return 0;
}