有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
#include <stdio.h>
#include <stdlib.h>
struct Student{
char ID[100];
char Name[100];
int Score[3];
int Total;
};
void Input(struct Student*P,int Student_Num){
struct Student*Temp;
for(Temp=P;Temp<P+Student_Num;Temp++){
scanf("%s %s %d %d %d",Temp->ID,Temp->Name,&(Temp->Score[0]),&(Temp->Score[1]),&(Temp->Score[2]));
Temp->Total=Temp->Score[0]+Temp->Score[1]+Temp->Score[2];
}
}
void Print_Everage(struct Student*P,int Student_Num){
float Everage;
for(int i=0;i<3;i++){
for(struct Student*Temp=P;Temp<P+Student_Num;Temp++){
Everage+=Temp->Score[i];
}
printf("%.2lf ",Everage/Student_Num);
Everage=0;
}
}
void Print_Max(struct Student*P,int Student_Num){
int Temp=0;
for(int i=0;i<Student_Num-1;i++){
if(P[i].Total<P[i+1].Total){
Temp++;
}
}
printf("\n%s %s %d %d %d",P[Temp].ID,P[Temp].Name,P[Temp].Score[0],P[Temp].Score[1],P[Temp].Score[2]);
}
int main(){
struct Student*List;
int Student_Num;
scanf("%d",&Student_Num);
while(getchar()=='\n') break;
if(Student_Num>0&&Student_Num<100){
List=(struct Student*)malloc(sizeof(struct Student)*Student_Num);
}
else return 0;
Input(List,Student_Num);
Print_Everage(List,Student_Num);
Print_Max(List,Student_Num);
free(List);
return 0;
}