3.有4个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入4个 学生数据,要求打印出3门课总平均成绩以及最高分的学生的数据。要求:1使用结构体数组
时间: 2024-10-26 08:04:12 浏览: 46
首先,我们可以创建一个结构体,用于存储学生的信息,包括学号、姓名和三门课程的成绩。然后,我们可以使用结构体数组来存放这四个学生的数据。下面是一个简单的步骤描述:
1. **定义结构体**:
```c
struct Student {
int id;
char name[50];
int score1;
int score2;
int score3;
};
```
2. **初始化结构体数组**:
```c
struct Student students[4];
```
3. **从键盘读取输入**:
```c
for (int i = 0; i < 4; i++) {
printf("请输入学生%d的学号、姓名和三门课成绩:\n", i + 1);
scanf("%d%s%d%d%d", &students[i].id, students[i].name, &students[i].score1, &students[i].score2, &students[i].score3);
}
```
4. **计算总平均成绩**:
```c
double total_avg_score = 0.0;
for (int i = 0; i < 4; i++) {
total_avg_score += students[i].score1 + students[i].score2 + students[i].score3;
}
// 平均成绩
total_avg_score /= 12; // 总共3门课 * 4名学生
printf("所有学生的总平均成绩为: %.2f\n", total_avg_score);
```
5. **查找最高分学生和其成绩**:
```c
int max_score = students[0].score1; // 初始假设第一个学生分数最高
int max_student_index = 0;
for (int i = 1; i < 4; i++) {
if (students[i].score1 > max_score || (students[i].score1 == max_score && students[i].score2 > max_score) ||
(students[i].score1 == max_score && students[i].score2 == max_score && students[i].score3 > max_score)) {
max_score = students[i].score1;
max_student_index = i;
}
}
printf("最高分的学生信息为: 学号 %d, 姓名 %s, 最高分 %.2f\n",
students[max_student_index].id, students[max_student_index].name, max_score);
```
阅读全文