用c语言编写输入20名同学的学号、姓名、三门课程成绩; 计算每位同学的总分与平均分; 输出成绩表、显示总分最高分与最低分学生的成绩信息。
时间: 2024-10-20 11:09:07 浏览: 27
在C语言中,你可以通过结构体和数组来组织这个数据,并结合循环和函数来实现所需的功能。这里是一个简单的步骤说明:
1. 首先,创建一个结构体表示学生信息:
```c
struct Student {
int id;
char name[50];
float score1, score2, score3; // 三门课程的成绩
};
```
2. 定义一个数组来存储20位同学的数据:
```c
struct Student students[20];
```
3. 编写一个函数,用于读取每位同学的信息:
```c
void inputStudentInfo(struct Student *student) {
scanf("%d", &student->id);
scanf("%s", student->name);
scanf("%f %f %f", &student->score1, &student->score2, &student->score3);
}
```
4. 创建一个主函数来获取所有学生的数据并计算总分和平均分:
```c
int main() {
for (int i = 0; i < 20; i++) {
inputStudentInfo(&students[i]);
students[i].total_score = students[i].score1 + students[i].score2 + students[i].score3;
students[i].average_score = students[i].total_score / 3.0;
}
// 找出最高分和最低分的学生
struct Student max_student = students[0], min_student = students[0];
for (int i = 1; i < 20; i++) {
if (students[i].total_score > max_student.total_score) {
max_student = students[i];
}
if (students[i].total_score < min_student.total_score) {
min_student = students[i];
}
}
// 输出成绩表和最高分、最低分学生的成绩信息
printf("学号\t姓名\t总分\t平均分\n");
for (int i = 0; i < 20; i++) {
printf("%d\t%s\t%.2f\t%.2f\n", students[i].id, students[i].name, students[i].total_score, students[i].average_score);
}
printf("最高分:学号%d, 学生:%s, 总分 %.2f\n", max_student.id, max_student.name, max_student.total_score);
printf("最低分:学号%d, 学生:%s, 总分 %.2f\n", min_student.id, min_student.name, min_student.total_score);
return 0;
}
```
运行上述代码,就可以得到你需要的结果。
阅读全文