有一段时间没写博客了,主要原因是忘了写了,哈哈哈。这段时间把分支与循环的内容收了尾,并开启了一个全新篇章函数,我会将我的笔记贴在下面:
库函数( cplusplus.com/reference/clibrary/库函数查询) 常见库函数 strcpy //strcpy-string copy-字符串拷贝 #include<stdio.h> #include<string.h> int main() { char arr1[]="bit";//保证源头字符串长度比目的地长度短或者目的地空间足够大 char arr2[20]="######";//否者会溢出 // bit\0##-实际上拷贝了4个字符,\0是字符串结束标志 strcpy(arr2,arr1); printf("%s\n",arr2); return 0; } memset 即:把“ptr”所指向那块空间的前“num”个字节的内容设置成特定的“value” #include<stdio.h> #include<string.h> int main() { char arr[]="hello world"; memset(arr,'*',5); printf("%s\n",arr); return 0; } 自定义函数 写一个函数,交换两个整型变量的内容 #include<stdio.h> void Swep(int x,int y)//不需要返回值类型,用void { int tmp=0;//临时变量tmp tmp=x; x=y; y=tmp; } int main() { int a=10; int b=20; Swep(a,b); printf("%d %d",a,b); return 0; } //无法完成交换的原因:x,y与a,b储存空间不一样(没有关系),故:a,b无法完成交换 解决方案:使函数内外建立联系(解引用操作) //解引用操作 #include<stdio.h> int main() { int a=0; int* pa=&a;//pa指针变量--->存储a的地址:16进制数字 *pa=20;//解引用操作:从pa更改a的值 printf("%d\n",a); return 0; } //解决方案:使内外建立联系--->应用 解引用操作 #include<stdio.h> void Swep2(int*pa,int*pb)//不需要返回值类型,用void { int tmp=0; tmp=*pa;//*pa:a的地址,*pb:b的地址 *pa=*pb; *pb=tmp; } int main() { int a=10; int b=20; Swep2(&a,&b); printf("%d %d",a,b); return 0; } 函数的参数 函数的调用 //用函数的方法输出素数 #include<stdio.h> #include<math.h> int is_prime(int n)//是素数返回1,否则返回0 { //产生2--n-1的数字 int j=0; for ( j=2; j<=sqrt(n); j++)//i=a*b,例如:16=2*8=4*4 //如果i不是素数,那么a或者b中一定有一个<=开平方i { if (n%j==0)//判断j能否被n整除 return 0;//结束能力强于break,直接结束整个函数 } return 1;//找遍了2——n-1的数字,发现没有其他因数,故为素数 } int main() { int i=0; for ( i = 0; i<=200; i++) { if(is_prime(i)==1)//专门用来判断素数的 { printf("%d\n",i); } } return 0; } //用函数的方式判断是否为闰年 #include<stdio.h> int is_leap_year(int x) { if ((x%4==0 && x%100!=0)||(x%400==0)) return 1; else return 0; } int main() { int year=0; for (year=1000;year<=2000;year++) { if (1 == is_leap_year(year)) { printf("%d\n",year); } } return 0; } //写一个函数,实现一个整形有序数组的二分查找 #include<stdio.h> //本质上这里的arr是个指针 int binary_search(int arr[],int k) { //算法的真正实现 int sz=sizeof(arr)/sizeof(arr[0]); int left=0; int right=sz-1; int mid=(left+right)/2; while (left<=right) { if(arr[mid]<k) { left=mid+1; } else if (arr[mid]>k) { right=mid-1; } else { return mid; } } return -1; } int main() { //二分查找的前提 //在一个有序数组中查找具体某个数 //找到了返回下标,找不到返回-1 int arr[]={1,2,3,4,5,6,7,8,9,10}; int k=7; int ret=binary_search(arr,k);//ret——>接收返回值 // 实际上传递的是数组首元素的地址 if (ret==-1) { printf("找不到指定的数字\n"); } else { printf("找到了,下标是:%d\n",ret); } return 0; } 纠正: #include<stdio.h> int binary_search(int arr[],int k,int sz) { //算法的真正实现 int left=0; int right=sz-1; while (left<=right) { int mid=(left+right)/2;//不能放在循环外 //每次循环都得求一次mid if(arr[mid]<k) { left=mid+1; } else if (arr[mid]>k) { right=mid-1; } else { return mid; } } return -1; } int main() { int arr[]={1,2,3,4,5,6,7,8,9,10}; int k=7; int sz=sizeof(arr)/sizeof(arr[0]); int ret=binary_search(arr,k,sz);//ret——>接收返回值 if (ret==-1) { printf("找不到指定的数字\n"); } else { printf("找到了,下标是:%d\n",ret); } return 0; } //写一个函数,使其每调用一次,num的值增加1 #include<stdio.h> void Add(int* p)//不需要用返回值,所以用void { (*p)++;//++的优先级更高,故*p++中++作用于p,则应该写(*p)++ } int main() { int num=0; Add(&num); printf("num=%d\n",num); Add(&num); printf("num=%d\n",num); return 0; } 函数的嵌套调用和链式访问 嵌套调用:(函数函数的有机组合) #include<stdio.h> void one_line() { printf("hehe\n"); } void three_line() { int i; for ( i = 1; i <= 3; i++) { one_line(); } } int main() { three_line(); return 0; } 链式访问(把一个函数的返回值作为另一个函数的参数): #include<stdio.h> #include<string.h> int main() { int len=0; //1 len=strlen("abc"); printf("%d\n",len); //2--链式访问 printf("%d\n",strlen("abc")); return 0; } 对printf返回值的描述 返回值为打印的字符的个数 #include<stdio.h> int main() { printf("%d",printf("%d",printf("%d",43))); //由内到外依次打印 return 0; } 函数的声明和定义 #include<stdio.h> //函数声明 int Add(int x,int y);//x,y可以省略 int main() { int a=10; int b=20; int sum=0; //函数调用 sum=Add(a,b); printf("%d\n",sum); return 0; } //函数的定义 int Add(int x,int y) { int z=x+y; return z; } 函数的调用真正的作用观看函数(1)3:21:00 那对于函数的调用的真正用法我之前也是有了解的,但是今天学了之后才发现没有我想象那么简单(当然也没有那么难),我觉得最麻烦的是函数声明和函数体要放在两个文件中,也算是增加了一点工作量嘛。但是有一说一,这确实让我们写代码时省了不少功夫,码农们不再需要每次都去写一个新的函数,可以直接调用同伴们写好的函数,既可以减少重复的、无意义的工作,还可以加强我们之间的联系 标签:arr,return,函数,22,int,2023.10,博客,printf,include From: https://www.cnblogs.com/3013304651hc/p/17780885.html