评论

收藏

[C++] 【C语言】习题---函数(1)

编程语言 编程语言 发布于:2021-12-15 15:26 | 阅读数:370 | 评论:0

1.常用库函数
输出
printf( )
putchar( )
fgets( )
fprint( )
输入
scanf( )
getchar( )
fput( )
fscanf( )
其他(1)
sort( )
abs( )
sqrt( )
malloc( )
其他(2)
srand( )
strcpy( )
meset( )
strlen( )
2.函数练习题
【交换两个整形变量的内容】
DSC0000.png
(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为%d  b为%d\n",a,b);  change(&a,&b);  printf("交换后a为%d  b为%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[mid]<x)    left=mid+1;  else if(arr[mid]>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[0]);  int ret=search(arr,key,sz);//y接受到的是search()的返回值mid  if(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);  }}

关注下面的标签,发现更多相似文章