#include
#include
#define N 5
#define M 3
void duru(int score[][M],long num[],int n)
{
int i,j;
printf("Input student's ID and score as:MH EN PH:\n");
for(i=0;i<N;i++)
{
scanf("%ld",&num[i]);
for(j=0;j<M;j++)
{
scanf("%d",&score[i][j]);
}
}
}
void aver(int score[][M],int n)
{
int i;
float aver;
float sum=0;
for(i=0;i<N;i++)
{
sum=sum+score[i][0];
}
aver=sum/N;
printf("第一门课程平均数为%.2f\n",aver);
}
void fail(double(*p)[M])
{
int i,j,count=0;
double sum=0;
for(i=0;i
{
count=0;
sum=0;
for(j=1;j
{
if(*(*(p+i)+j)
{
count++;
}
}
if(count>=2)
{
for(j=1;j<M;j++)
{
sum+= ((p+i)+j);
}
printf("该学生有超过两门以上课程不及格\n");
printf("\n平均成绩为%.3f\n",sum/M);
}
}
}
void youxiu(double(*p)[M])
{
int i,j,count=0;
double sum=0;
for(i=0;i
{
count=0;
sum=0;
for(j=1;j
{
sum+=*(*(p+i)+j);
if(*(*(p+i)+j)>=85)
{
count++;
}
}
if(count==M)
{
printf("该学生全部课成绩在 85 分以上\n");
printf("\n平均成绩为%.3f\n",sum/M);
}
else( sum/M >= 90)
{
printf("该学生所有成绩平均分在 90 分以上\n");
printf("\n平均成绩为%.3f\n",sum/M);
}
}
}
int main()
{
int iSelect=1;
int score[N][M],sum[N],n;
long num[N];
printf("Input the total number of the students(n<=5):");
scanf("%d",&n);
while(iSelect!=0)
{
printf(" Menu \n");
printf("**************************************************************************************\n");
printf("*1.任务1:录入每个学生的学号和成绩; *\n");
printf("*2.任务2:求第一门课的平均分; *\n");
printf("*3.任务3:找出有 2 门以上课程不及格的学生, 输出他们的学号、全部课程成绩、平均成绩; *\n");
printf("*4.任务4:找出平均成绩 90 分以上或全部课成绩在 85 分以上的学生。 *\n");
printf("*5.退出 *\n");
printf("**************************************************************************************\n");
scanf("%d",&iSelect);
switch(iSelect)
{
case 1:
duru(score,num,n);
break;
case 2:
aver(score,n);
break;
case 3:
fail(score,num,n);
break;
case 4:
youxiu(score,num);
break;
case 5:
break;
}
}
return 0;
}
有一个班 5 个学生,3 门课。用二维数组作函数参数编程实现如下菜单 驱动的学生成绩管理系统:
(1) 录入每个学生的学号和成绩;
(2) 求第一门课的平均分;
(3) 找出有 2 门以上课程不及格的学生, 输出他们的学号、全部课程成绩、平均成绩;
(4) 找出平均成绩 90 分以上或全部课成绩在 85 分以上的学生。
(5) 退出
要求:分别编 4 个函数,通过指针运算实现以上 4 个功能。