用c语言实现有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的平均成绩,以及平均成绩最高的学生的数据(包括学号、姓名、3门课成绩、平均分数)。
时间: 2023-12-15 07:23:13 浏览: 72
以下是用C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
struct Student {
char id[10];
char name[20];
int scores[3];
float avg_score;
};
int main() {
struct Student students[10];
float avg_scores[3] = {0};
float max_avg_score = 0;
int max_avg_index = 0;
// 输入学生数据
for (int i = 0; i < 10; i++) {
printf("请输入第%d个学生的学号、姓名和3门课成绩:\n", i + 1);
scanf("%s %s %d %d %d", students[i].id, students[i].name, &students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
// 计算平均成绩
students[i].avg_score = (float)(students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / 3;
// 累加各科成绩
avg_scores[0] += students[i].scores[0];
avg_scores[1] += students[i].scores[1];
avg_scores[2] += students[i].scores[2];
// 找出平均成绩最高的学生
if (students[i].avg_score > max_avg_score) {
max_avg_score = students[i].avg_score;
max_avg_index = i;
}
}
// 计算各科平均成绩
for (int i = 0; i < 3; i++) {
avg_scores[i] /= 10;
}
// 输出平均成绩
printf("3门课的平均成绩分别为:%.2f, %.2f, %.2f\n", avg_scores[0], avg_scores[1], avg_scores[2]);
// 输出平均成绩最高的学生数据
printf("平均成绩最高的学生为:%s %s %d %d %d,平均成绩为%.2f\n", students[max_avg_index].id, students[max_avg_index].name, students[max_avg_index].scores[0], students[max_avg_index].scores[1], students[max_avg_index].scores[2], students[max_avg_index].avg_score);
return 0;
}
```
在上述代码中,我们定义了一个 `Student` 结构体来存储每个学生的数据,包括学号、姓名、3门课的成绩和平均成绩。然后,我们使用一个数组 `students` 来存储所有学生的数据。我们还定义了一个数组 `avg_scores` 来存储各科成绩的平均值。
我们使用一个 `for` 循环来输入每个学生的数据,并计算平均成绩,并在循环中累加各科成绩和找出平均成绩最高的学生。然后,我们再次使用一个 `for` 循环来计算各科成绩的平均值。最后,我们输出各科成绩的平均值和平均成绩最高的学生的数据。
阅读全文