写点什么

函数初认识 - 上

作者:芒果酱
  • 2022 年 7 月 16 日
  • 本文字数:1779 字

    阅读完需:约 6 分钟

最近,想复习一下 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'));  //65printf("%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.00printf("%.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,不是素数返回0int is_prime(int n){  int i = 0;  for (i = 2; i < n; i++)  {    if (n %i == 0)    {      return 0;    }  }  return 1;}//写法2//用布尔类型 ->引用头文件 stdbool.hbool 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;}
复制代码



今天就先到这吧~感谢你能看到这里!希望对你有所帮助!欢迎老铁们点个关注订阅这个专题! 同时欢迎大佬们批评指正!!!
发布于: 刚刚阅读数: 3
用户头像

芒果酱

关注

我们都在努力奔跑,我们都是追梦人! 2022.02.14 加入

个人宣言:功崇惟志,业广惟勤 个人简介: 0.在校大学生 1.CSDN:C/C++领域新星创作者 2.掘金LV3创作者 3.华为云开发者社区云享专家 4.阿里云开发者社区专家博主 5.InfoQ创作者

评论

发布
暂无评论
函数初认识-上_C语言_芒果酱_InfoQ写作社区