C语言输入3个学生数据,每个学生的数据包括学号、姓名、3门课程的成绩,输出三门课程的总平均成绩,以及最高分的学生数据(包括学号、姓名、3门课程平均成绩、平均分数)
时间: 2024-09-25 07:08:00 浏览: 124
在C语言中,你可以通过以下几个步骤来完成这个需求:
1. 定义结构体 `Student` 包含学号、姓名和三个课程的成绩数组。
```c
typedef struct {
int student_id;
char name[50];
float scores[3]; // 代表三门课程的成绩
} Student;
```
2. 输入学生数据函数,提示用户输入信息并存储在 `Student` 结构体中。
```c
void input_student(Student* s) {
printf("请输入学生信息:\n");
scanf("%d %s", &s->student_id, s->name);
for (int i = 0; i < 3; i++) {
scanf("%f", &s->scores[i]);
}
}
```
3. 计算总平均成绩和最高分学生的信息。
```c
void calculate_average_and_highest(Student students[], int count) {
float total_avg = 0;
float highest_avg = students[0].scores[0], max_score = students[0].scores[0];
int max_index;
// 计算所有学生的总平均成绩
for (int i = 0; i < count; i++) {
total_avg += students[i].scores[0] + students[i].scores[1] + students[i].scores[2];
}
total_avg /= count * 3;
// 找出最高平均成绩和对应的索引
for (int i = 1; i < count; i++) {
if (students[i].scores[0] + students[i].scores[1] + students[i].scores[2] > highest_avg) {
highest_avg = students[i].scores[0] + students[i].scores[1] + students[i].scores[2];
max_index = i;
}
}
printf("\n总平均成绩: %.2f\n", total_avg);
printf("最高分学生信息:\n");
printf("学号: %d, 姓名: %s, 平均成绩: %.2f\n", students[max_index].student_id, students[max_index].name, highest_avg);
}
```
4. 主函数中调用以上函数,并创建并输入学生数组。
```c
int main() {
Student students[3]; // 假设最多有3个学生
int count = 0;
while (count < 3) {
input_student(&students[count++]);
}
calculate_average_and_highest(students, count);
return 0;
}
```
阅读全文