有5个学生,每个学生的数据包括学号、姓名、三门课的成绩。

从键盘输入5个学生的数据,要求打印出每门课程的平均成绩,以及最高分学生的数据。(包括学号、姓名、三门课的成绩)。还是c++

#include<iostream>
#include<string.h>
using namespace std;
#define N  3//考试的科目数
#define M  5//全班的学生的数目
struct student
{
char name[20];
int score[N];
float aver;

}stu[M];
void Creat(student *stu)
{
int i,n,j;
char ch[2]="!";
printf("请依次输入学生的姓名和成绩:\n");
for(i=0;i<M;i++)
{
scanf("%s",stu[i].name);
float sum=0.0;
for(j=0;j<N;j++)
{
scanf("%d",&stu[i].score[j]);
sum=sum+stu[i].score[j];

}
stu[i].aver=sum/N;
}
*stu[i].name=*ch;
}
void show(student *stu)
{
int i=0;
float gread[N]={0.0};
printf("\n他们的成绩及平均分如下:\n");
for(i=0;i<M;i++)
{
int j;
printf("%-10s",stu[i].name);
for( j=0;j<N;j++)
{
printf("%-4d",stu[i].score[j]);
gread[j]=gread[j]+stu[i].score[j];
}
printf("%.2f",stu[i].aver);
printf("\n");
}
printf("三科成绩的平均分是:\n");
printf("%-8.2f %-8.2f %-8.2f\n",gread[0]/M,gread[1]/M,gread[2]/M);


}

void Sort(student *stu)
{
int i=0,k=0;
student s,max=stu[0];
for(i=0;i<M;i++)
{ for(int j=0;j<M-1-i;j++)
{
if(stu[j].aver<stu[j+1].aver)
{
s=stu[j];
stu[j]=stu[j+1];
stu[j+1]=s;
}

}
}
printf("\n成绩最好的是:\n");
printf("%-10s",stu[0].name);
for( int j=0;j<N;j++)
{
printf("%-4d",stu[0].score[j]);

}
printf("\n");
}

void main()
{
int k;

Creat(stu);

Sort(stu);


printf("\n");

show(stu);
}

 

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答