用c语言编写程序,100 个学生的考试成绩如下,其中学号为无符号整型。 编写三个函数,分别实现下面的功能: (1)键盘输入每位学生学号及每科成绩: (2)显示所有学生学号及各科成绩信息: (3)求每科课程的最高分及最高分学生学号; 编写主函数,在主函数中测试以上函数。
时间: 2025-01-01 08:36:06 浏览: 20
在C语言中,你可以使用结构体来存储每个学生的学号和成绩,并通过指针数组来管理这100位学生的信息。首先,我们创建一个结构体定义:
```c
typedef struct {
unsigned int student_id; // 学号
float scores[3]; // 三科成绩
} Student;
```
然后定义三个函数:
1. **输入学生信息**:
```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");
}
}
```
3. **计算每科最高分**:
```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;
}
```
阅读全文