返回指针值的函数小练习--处理学生成绩

2018-01-20 08:04:37来源:cnblogs.com作者:xtu熊大人点击

分享

题目:一个班有4名学生,5门课程,分别写三个函数实现以下功能

1.求第一门课程的平均分

2.找出两门以上不及格学生,输出其学号,全部成绩及平均成绩

3.找出平均成绩在90分以上,及全部成绩在85分以上的学生

思路:这题就是对返回指针值的函数知识点的巩固。唯一需要注意的是,我们要在函数中处理二维数组时,实参是二维数组名,形参是指向一维数组的指针变量,具体看代码

 1 #include<stdio.h> 2 int main(){ 3     void avg1(int (*p)[5]); 4     void fail2(int (*p)[5]); 5     void dalao(int (*p)[5]); 6     int a[4][5]; 7      8     for(int i=0;i<4;i++){ 9         printf("请输入第 %d 个学生成绩:/n",i+1);10         for(int j=0;j<5;j++){11             scanf("%d",&a[i][j]);12         }13     }14     avg1(a); 15     printf("/n");16     fail2(a);17     printf("/n");18     dalao(a);19 }20     //求第一门课的平均成绩 21 void avg1(int (*p)[5]){22         int sum=0;23         for(int i=0;i<4;i++){24             sum=sum+*(*(p+i)+0);25         }26         printf("第一门课的平均成绩为 %.2f 分/n",(float)sum/4);27     }28     //找出挂两门学生,并输出他们的全部成绩和平均成绩 29 void fail2(int (*p)[5]){30     int f;31     int sum;32     for(int i=0;i<4;i++){33         f=0;sum=0;34         for(int j=0;j<5;j++){35             if(*(*(p+i)+j)<60) f++;36             sum=sum+*(*(p+i)+j);37         }38         if(f>2){39             printf("第 %d 个学生有两门以上不及格,他的成绩如下:/n",i+1);40             for(int k=0;k<5;k++)41               printf("%d ",*(*(p+i)+k));42             printf(" 平均成绩为 %.2f",(float)sum/5);43         }44         printf("/n");45     }46 } 47       //找出平均成绩在90分以上及全部成绩在 85分之上的优秀学生 48 void dalao(int (*p)[5]){49     int flag[4]={0,0,0,0};50     int sum,g,c=0;51     for(int i=0;i<4;i++){52         sum=0;g=0;53         for(int j=0;j<5;j++){54              sum=sum+*(*(p+i)+j);55              if(*(*(p+i)+j)>85) g++;56         }    57          if(g==5) flag[i]=1;58          if((sum/5)>90) flag[i]=1;59     }60     for(int k=0;k<4;k++){61         if(flag[k]==1) printf("第 %d 位学生符合标准",k+1);62         else if(flag[k]==0) c++;63     }64     if(c==4) printf("无人符合标准"); 65 }

 运行结果:

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台