c语言中输入10个学生3门课成绩,找出所有分数中对应最高分的学生和课程
时间: 2024-11-18 19:18:56 浏览: 55
在C语言中,你可以通过动态内存分配和结构体来实现这个功能。首先,创建一个结构体来存储学生的姓名和三门课的成绩,然后定义一个数组来存储这10个学生的信息。接下来,遍历数组找到每门课的最高分及其对应的学生成绩。
这是一个简单的步骤概述:
1. 定义一个结构体 `Student`:
```c
typedef struct {
char name[50];
int score[3]; // 三门课的成绩
} Student;
```
2. 创建一个 `Student` 类型的数组 `students` 存储10个学生信息:
```c
Student students[10];
```
3. 获取用户输入,填充学生信息:
```c
for (int i = 0; i < 10; i++) {
printf("请输入学生%d的姓名:", i + 1);
fgets(students[i].name, sizeof(students[i].name), stdin); // 推荐使用fgets以避免换行符
for (int j = 0; j < 3; j++) {
printf("请输入第%d门课的成绩:", j + 1);
scanf("%d", &students[i].score[j]); // 注意处理输入错误
}
}
```
4. 遍历数组,查找各科最高分及其对应的学生成绩:
```c
int highestScore[3] = {INT_MIN, INT_MIN, INT_MIN}; // 初始化最低分
char* topStudentName = NULL;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 3; j++) {
if (students[i].score[j] > highestScore[j]) {
highestScore[j] = students[i].score[j];
topStudentName = students[i].name;
}
}
}
// 输出结果
printf("最高分及对应学生:\n");
for (int j = 0; j < 3; j++) {
printf("第%d门课最高分: %d, 学生:%s\n", j + 1, highestScore[j], topStudentName);
}
```
阅读全文