【C语言】习题---函数(1)
1.常用库函数输出
printf( )
putchar( )
fgets( )
fprint( )
输入
scanf( )
getchar( )
fput( )
fscanf( )
其他(1)
sort( )
abs( )
sqrt( )
malloc( )
其他(2)
srand( )
strcpy( )
meset( )
strlen( )
2.函数练习题
【交换两个整形变量的内容】
(1)a,b的值没有交换的原因:形参与实参存在于不同的地址块,对于形参的改变不会影响实参
可理解为:x,y分别在红色,黑色 盒子里---形参
a,b分别在黄色,绿色 盒子里---实参
(2)调用change(int x,int y)交换的是形参x,y;而实参a,b没有交换
(3)解决方法:取地址
void change(int* x,int* y){int temp=0;temp=*x;//*x就是a*x=*y;*y=temp;}int main(){int a=10;int b=20;printf("交换前a为%db为%d\n",a,b);change(&a,&b);printf("交换后a为%db为%d\n",a,b);}【判断一个数是否为素数】
试除法只需到sqrt(x)即可
int is_prime(int x){int j=0;for(j=2;j<=sqrt(x);j++){ if(x%j==0) return 0; }return 1;}int main(){int i=0;for(i=100;i<200;i++){ if(is_prime(i)==1); printf("%d是素数\n",i); }}
[*]判断年份是否为闰年
四年一闰,百年不闰,四百年再闰
int is_prime(int x){int j=0;for(j=2;j<=sqrt(x);j++){ if(x%j==0) return 0; }return 1;}int main(){int i=0;for(i=100;i<200;i++){ if(is_prime(i)==1); printf("%d是素数\n",i); }}【二分查找】
(1)设置三个指针:left,right,mid
(2)数组作为实参时,传递的是第一个元素的位置
int search(int arr[],int x,int sz){int left=0;int right=sz-1; while(left<=right){ int mid=(left+right)/2; if(arr<x) left=mid+1; else if(arr>x) right=mid-1; else return mid;}return -1;}int main(){int arr[]={1,2,3,4,5,6,7,8,9,10};int key=7;int sz=sizeof(arr)/sizeof(arr);int ret=search(arr,key,sz);//y接受到的是search()的返回值midif(ret==-1){ printf("找不到key\n");}else{ printf("key已找到,元素下标为:%d\n",ret);}return 0;}【每次调用函数,num的值加1】
(1)*p++; × (*p)++;√
void Add(int* p){(*p)++;//num++}int main(){int num=0;int i=0;for(i=0;i<4;i++){ Add(&num); printf("num=%d\n",num);}}
https://blog.51cto.com/u_15459193/4804988
页:
[1]