欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-16 23:49:53
题目:一个班有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 }

 运行结果:

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