C语言03-函数(上)
【摘要】 最近,想复习一下C语言,所以笔者将会在掘金每天更新一篇关于C语言的文章! 各位初学C语言的大一新生,以及想要复习C语言/C++知识的不要错过哦! 夯实基础,慢下来就是快! 1.函数介绍 tolower:字母转小写参数:可以传ASCII码值 也可以传字符 printf("%c ", tolower('A')); //a printf("%d ", tolower('A')); //97 pri...
最近,想复习一下C语言,所以笔者将会在掘金每天更新一篇关于C语言的文章! 各位初学C语言的大一新生,以及想要复习C语言/C++知识的不要错过哦! 夯实基础,慢下来就是快!
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;
}
今天就先到这吧~感谢你能看到这里!希望对你有所帮助!欢迎老铁们点个关注订阅这个专题! 同时欢迎大佬们批评指正!!!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)