用c语言编写程序,100 个学生的考试成绩如下,其中学号为无符号整型。 编写三个函数,分别实现下面的功能: (1)键盘输入每位学生学号及每科成绩: (2)显示所有学生学号及各科成绩信息: (3)求每科课程的最高分及最高分学生学号; 编写主函数,在主函数中测试以上函数。
时间: 2025-01-01 13:36:06 浏览: 45
在C语言中,你可以使用结构体来存储每个学生的学号和成绩,并通过指针数组来管理这100位学生的信息。首先,我们创建一个结构体定义:
typedef struct {
unsigned int student_id; // 学号
float scores[3]; // 三科成绩
} Student;
然后定义三个函数:
- 输入学生信息: ```c void input_students(Student* students, int num_students) { for (int i = 0; i < num_students; ++i) { printf("请输入学生 %d 的学号:", i+1); scanf("%u", &students[i].student_id); for (int j = 0; j < 3; ++j) { printf("请输入第%d科的成绩:", j+1); scanf("%f", &students[i].scores[j]); } getchar(); // 消除回车符的影响 }
}
2. **显示学生信息**:
```c
void display_students(const Student* students, int num_students) {
for (int i = 0; i < num_students; ++i) {
printf("学号:%u\n", students[i].student_id);
for (int j = 0; j < 3; ++j) {
printf("第%d科成绩:%.2f\n", j+1, students[i].scores[j]);
}
printf("\n");
}
}
计算每科最高分: ```c void find_max_scores(Student* students, int num_students) { float max_scores[3] = {INT_MIN, INT_MIN, INT_MIN}; // 初始化为负无穷大
for (int i = 0; i < num_students; ++i) { for (int j = 0; j < 3; ++j) { if (students[i].scores[j] > max_scores[j]) { max_scores[j] = students[i].scores[j]; max_student_id = i + 1; // 记录最高分学生的学号 } } }
for (int j = 0; j < 3; ++j) { printf("第%d科最高分:%.2f,由学号%d的学生获得。\n", j+1, max_scores[j], max_student_id); }
}
最后,在**主函数main()**中调用这三个函数:
```c
int main() {
const int num_students = 100;
Student students[num_students];
input_students(students, num_students);
display_students(students, num_students);
find_max_scores(students, num_students);
return 0;
}
相关推荐


















