一、实验内容
一个班上有30名学生,每个学生的数据作为一个记录,每个记录包括学号、姓名、三门课程的成绩和三门课程平均成绩。从键盘输入学生的学号、姓名及三门课的成绩。要求打印三门课程平均成绩最高分的学生记录。
二、实验步骤
1、定义一个结构体类型,包含学号、姓名、成绩等成员。
2、输入每个同学的三门课成绩。
三、过程实现
#include<stdio.h>
#include<string.h>
#define N 3
struct Student {
int Id;
char Name[10];
float Score[3];
} stu[N];
int main() {
int i,j,t;
float Sum[3] = {0},Avg[3] = {1},sum_stu[10]={0},avg_stu[10] = {1};
double Max_Avg,max;
for(i = 0;i < N;i++) {
printf("输入学生[%d]的学号和姓名:",i+1);
scanf("%d,%s",&stu[i].Id,stu[i].Name);
for(j = 0;j < 3;j++) {
printf("学生[%s]课程[%d]成绩为:",stu[i].Name,j+1);
scanf("%f",&stu[i].Score[j]);
sum_stu[i] += stu[i].Score[j];
}
}
max = sum_stu[0];
t = 0;
for (i = 1; i < N; i++) {
if (sum_stu[i] > max) {
max = sum_stu[i];
t = i;
}
}
for(i = 0;i < N;i++) {
sum_stu[0] += stu[0].Score[j];
sum_stu[1] += stu[1].Score[j];
sum_stu[2] += stu[2].Score[j];
avg_stu[0] = sum_stu[0] / 3;
avg_stu[1] = sum_stu[1] / 3;
avg_stu[2] = sum_stu[2] / 3;
}
printf("\n学生[1]平均成绩=%f,学生[2]平均成绩=%f,学生[3]平均成绩=%f\n",avg_stu[0],avg_stu[1],avg_stu[2]);
printf("平均成绩最高的学生记录:学号:%d,姓名:%s\n", stu[t].Id,stu[t].Name);
for (i = 0; i < N; i++) {
printf("课程成绩为:%f ", stu[t].Score[i]);
}
for(i = 0;i < N;i++) {
Sum[0] += stu[i].Score[0];
Sum[1] += stu[i].Score[1];
Sum[2] += stu[i].Score[2];
Avg[0] = Sum[0] / 3;
Avg[1] = Sum[1] / 3;
Avg[2] = Sum[2] / 3;
}
printf("\n课程[1]平均成绩=%f,课程[2]平均成绩=%f,课程[3]平均成绩=%f\n",Avg[0],Avg[1],Avg[2]);
if(Avg[0]>Avg[1]&&Avg[0]>Avg[2])Max_Avg=Avg[0];
else if(Avg[1]>Avg[0]&&Avg[1]>Avg[2])Max_Avg=Avg[1];
else if(Avg[2]>Avg[0]&&Avg[2]>Avg[1])Max_Avg=Avg[2];
printf("课程最大平均值为:%.2lf\n",Max_Avg);
return 0;
}