2.有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩。从键盘输入10个学生的数据,要求输出 3 门课程的总平均成绩,以及最高分的学生的学号、姓名、3 门课程成绩、平均分数。(定义结构体)。算法分析
时间: 2023-12-15 08:17:15 浏览: 66
定义一个结构体Student,包含学号、姓名、3门课程的成绩。然后定义一个数组students,用于存储10个学生的数据。从键盘输入每个学生的数据,计算出每门课程的总成绩和平均成绩。再找出总成绩最高的学生,输出该学生的学号、姓名、3门课程成绩、平均分数。
具体算法如下:
1.定义结构体Student,包含学号、姓名、3门课程的成绩。
struct Student{
int id;
char name[20];
float score[3];
};
2.定义一个数组students,用于存储10个学生的数据。
Student students[10];
3.从键盘输入每个学生的数据,并计算出每门课程的总成绩和平均成绩。
float sum[3] = {0}; //每门课程的总成绩
for(int i=0; i<10; i++){
printf("请输入第%d个学生的学号、姓名、3门课程的成绩:\n", i+1);
scanf("%d %s %f %f %f", &students[i].id, students[i].name, &students[i].score[0], &students[i].score[1], &students[i].score[2]);
sum[0] += students[i].score[0];
sum[1] += students[i].score[1];
sum[2] += students[i].score[2];
}
float avg[3] = {0}; //每门课程的平均成绩
avg[0] = sum[0] / 10;
avg[1] = sum[1] / 10;
avg[2] = sum[2] / 10;
printf("每门课程的总平均成绩为:%f %f %f\n", avg[0], avg[1], avg[2]);
4.找出总成绩最高的学生,输出该学生的学号、姓名、3门课程成绩、平均分数。
float max_score = 0; //最高分数
int max_index = 0; //最高分数的下标
for(int i=0; i<10; i++){
float total_score = students[i].score[0] + students[i].score[1] + students[i].score[2];
if(total_score > max_score){
max_score = total_score;
max_index = i;
}
}
printf("总成绩最高的学生信息如下:\n");
printf("学号:%d 姓名:%s\n", students[max_index].id, students[max_index].name);
printf("成绩:%f %f %f\n", students[max_index].score[0], students[max_index].score[1], students[max_index].score[2]);
printf("平均分数:%f\n", (students[max_index].score[0] + students[max_index].score[1] + students[max_index].score[2]) / 3);
完整代码如下:
阅读全文