有 10 个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入10个学生数据,输出最高分的学生数据(包括学号、姓名、3门课的成绩) 要求:input)函数输入 10 个学生数据;用 max 函数找出最高分的学生数据;所有学生数据、最高分学生数据在主函数中输出。
时间: 2025-02-23 11:31:50 浏览: 78
为了完成这个任务,你需要定义一个结构体来存储学生的数据,然后使用`scanf`函数从键盘读取数据,接着创建一个数组来存储这10个学生的信息。最后,你可以遍历整个数组,使用`max`函数找到最高分数并记录对应的学生信息。
以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int id; // 学号
char name[50]; // 姓名
float score1; // 第一门课成绩
float score2; // 第二门课成绩
float score3; // 第三门课成绩
} Student;
// 自带比较功能的max函数,用于找到最大值
Student find_max(Student arr[], int n) {
Student max_student = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i].score1 > max_student.score1 ||
(arr[i].score1 == max_student.score1 &&
(arr[i].score2 > max_student.score2 ||
(arr[i].score2 == max_student.score2 && arr[i].score3 > max_student.score3)))) {
max_student = arr[i];
}
}
return max_student;
}
int main() {
const int num_students = 10;
Student students[num_students];
// 输入10个学生数据
for (int i = 0; i < num_students; i++) {
printf("请输入第 %d 个学生的信息(学号 姓名 成绩1 成绩2 成绩3): ", i + 1);
scanf("%d", &students[i].id);
fgets(students[i].name, sizeof(students[i].name), stdin); // 注意去除换行符
scanf("%f", &students[i].score1);
scanf("%f", &students[i].score2);
scanf("%f", &students[i].score3);
}
// 找到最高分学生并输出
Student max_student = find_max(students, num_students);
printf("最高分学生信息:\n");
printf("学号: %d\n", max_student.id);
printf("姓名: %s\n", max_student.name);
printf("成绩1: %.2f\n", max_student.score1);
printf("成绩2: %.2f\n", max_student.score2);
printf("成绩3: %.2f\n", max_student.score3);
return 0;
}
```
在这个例子中,我们假设输入时包含换行符,所以使用了`fgets`函数处理姓名输入。别忘了在`main`函数中处理输入的数据类型以确保正确接收数值。
阅读全文
相关推荐



















