返回指针值的函数小练习--处理学生成绩
程序员文章站
2022-03-07 16:33:19
题目:一个班有4名学生,5门课程,分别写三个函数实现以下功能 1.求第一门课程的平均分 2.找出两门以上不及格学生,输出其学号,全部成绩及平均成绩 3.找出平均成绩在90分以上,及全部成绩在85分以上的学生 思路:这题就是对返回指针值的函数知识点的巩固。唯一需要注意的是,我们要在函数中处理二维数组时 ......
题目:一个班有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 }
运行结果: