1.函数介绍
tolower:字母转小写
参数:可以传ASCII码值 也可以传字符 复制代码
printf("%c ", tolower('A')); //a printf("%d ", tolower('A')); //97 printf("%c ", tolower(65)); //a // 'A' : 65 // 'a' : 97 复制代码
toupper:字母转大写
参数:可以传ASCII码值 也可以传字符 复制代码
printf("%d ", toupper('a')); //65 printf("%c ", toupper('a')); //'A' 复制代码
fabs() / abs() :求绝对值
//注意fabs()函数返回值为double类型 且要引头文件math.h printf("%d ", abs(-1.1)); //1 printf("%.2lf ", fabs(-1.1)); //1.10 复制代码
sqrt:开平方函数
printf("%.2lf ", sqrt(4)); //2.00 printf("%.2lf ", sqrt(8)); //2.83 复制代码
pow:求平方函数
第一个参数:底数:x 第二个参数:次幂:y 复制代码
printf("%.2lf ", pow(2,3)); //2的三次方 8 printf("%.2lf ", pow(3,2));//3的平方 9 复制代码
strcpy函数-字符串拷贝
第一个参数:目标位置 第二个参数:要拷贝的字符串---因为不作修改,所以可以加const修饰 //注意:可以不接收strcpy函数返回值 //strcpy函数返回值为:目标空间的地址 //要保证目标空间足够大 复制代码
int main() { char arr[20] = { 0 }; //目标空间 char* arr2 = "hello world"; char* ret =strcpy(arr, arr2); printf("%s\n", arr); //hello world printf("%s\n", ret); //hello world return 0; } 复制代码
memset函数
将dest指向的内存块的前count个字节设置为指定值
第一个参数:指针 第二个参数:要设置的指定值 可以为整数也可以为字符 第三个参数:字节数,可以为变量也可以为常量 注意:以字节为单位进行扩充 如果要接收返回值,要强制类型转化一下,因为返回类型是void*.不转换也不会出错,但是规范点比较好 也可以不接收返回值 复制代码
int main() { char arr[20] ="hello world"; int n = 5; char *ret = (char*)memset(arr, 'x', n); printf("%s\n", arr); //xxxxx world printf("%s\n",ret); //xxxxx world return 0; } 复制代码
//想要将数组前五个元素初始化为1 //错误程序: int main() { int arr[10] = {0}; memset(arr,1,5*sizeof(int)); return 0; } 复制代码
原因:memset是以字节为单位初始化
整形->4个字节 共初始化字节数为5*sizeof(int) =20个字节
所以前5个元素被初始化为0x01010101,而并非0x00000001
2.自定义函数
1.求两个数的较大值
int get_max(int a, int b) { return a > b ? a : b; } int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); int max = get_max(a, b);// printf("%d和%d的较大者为:%d\n",a,b,max); } 复制代码
2.交换两个数的值
//错误程序 void Swap(int x, int y) { int tmp = x; x = y; y = tmp; } int main() { int a = 10; int b = 20; printf("before: a = %d,b = %d\n", a, b); //20 10 Swap(a, b); printf("after: a = %d,b = %d\n", a, b); //20 10 return 0; } //原因:传值时,实参a和b传给形参x,y时,形参是实参的一份临时拷贝 //改变形参变量x,y不会影响实参a和b 复制代码
//正解->传址 void Swap(int* x, int* y) { int tmp =*x; *x = *y; *y = tmp; } int main() { int a = 10; int b = 20; printf("before: a = %d,b = %d\n", a, b); //20 10 Swap(&a,&b); printf("after: a = %d,b = %d\n", a, b); //10 20 return 0; } 复制代码
3.写一个函数判断一个数是不是素数
方法1:试除法
//写法1: //是素数返回1,不是素数返回0 int is_prime(int n) { int i = 0; for (i = 2; i < n; i++) { if (n %i == 0) { return 0; } } return 1; } //写法2 //用布尔类型 ->引用头文件 stdbool.h bool is_prime(int n) { int i = 0; for (i = 2; i < n; i++) { if (n %i == 0) { return false; } } return true; } 复制代码
法2:开平方
int is_prime(int n) { int i = 0; for (i = 2; i < sqrt(n); i++) { if (n %i == 0) { return 0; } } return 1; } 复制代码