本文主要是介绍用指针实现,一个班有四个学生,每个学生有5门课程的成绩,实现三种函数的结果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
//第三章的第15题,一个班级四个学生,5门课程
#include<stdio.h>
#include<math.h>
void aver(int (*p)[5])
{int i=0,j;float ave;
float sum=0;for(j=0;j<5;j++){sum+=*(*(p+i)+j);}ave=sum/4;//总共有四个学生printf("第一门课的平均分是:%f\n",ave);}void oup(int (*p)[5],int *x)
{int n=0;//记录不及格的科目数是多少int i,j,t;float ave;float sum=0;for(i=0;i<4;i++){for(j=0;j<5;j++){if(*(*(p+i)+j)<60)n++;if(n>=2){printf("这个学生的学号是:%d\n",*(x+i));for(t=i,j=0;j<5;j++){printf("学号为%d的学生的各科成绩为%d\t",*(x+i),*(*(p+i)+j));sum+=*(*(p+i)+j);ave=sum/5;}printf("输出第%d学生的平均成绩为%f\n",*(x+i),ave);}}}}//以上两个函数的实现均是正确的//再来看下面这个函数的实现是有问题的
void abov(int (*p)[5],int *x)
{int i,j,k;float ave,sum=0;for(i=0;i<4;i++){for(j=0;j<5;j++){sum+=*(*(p+i)+j);}ave=sum/5;// for(k=0;k<5;k++)if(ave>90)printf("%d学号的学生\n",*(x+i));}//平均数大于90或者没门课程都大于85,//或者的情况没有考虑}
int main()
{int a[4][5]={{35,56,67,78,98},{45,55,67,77,88},{34,45,56,67,78},{67,88,89,90,77}};//每个学生的五个课程是int b[4]={1,2,3,4};//学生的学号是这么多// float *p(float);//定义一个指针函数aver(a);oup(a,b);abov(a,b);return 0;
}
自我感觉实现的第三个小题有点问题,比如找出所有科目的成绩均大于85或者是平均成绩在90以上的学生的学号是多少?我目前只考虑了一种平均成绩大于90的情况
本题为谭浩强第四版第八章的第15题
有很多不足的地方,大家感兴趣的话可以帮忙指正一下。
这篇关于用指针实现,一个班有四个学生,每个学生有5门课程的成绩,实现三种函数的结果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!