如何用C语言编程来获取每个学生每门课程的最高分和最低分,并同时显示相应的姓名和成绩?
时间: 2024-10-23 18:16:06 浏览: 30
C语言输入学生成绩,计算并输出这些学生的最低分、最高分、平均分。
在C语言中,处理这样的数据通常需要结构体来存储学生信息,包括姓名和成绩数组,以及一些函数来计算最高分和最低分。下面是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct {
char name[50];
float scores[5]; // 假设一共有5门课程
} Student;
// 计算单门课程的最高分和最低分
void get_course_scores(Student *student, int course_index, float *max_score, float *min_score) {
if (course_index >= 0 && course_index < 5) { // 验证索引是否合理
*max_score = student->scores[course_index];
*min_score = student->scores[course_index];
for (int i = 0; i < 5; i++) {
if (i != course_index && student->scores[i] > *max_score)
*max_score = student->scores[i];
if (i != course_index && student->scores[i] < *min_score)
*min_score = student->scores[i];
}
} else {
printf("Invalid course index.\n");
}
}
// 显示学生信息
void display_student(Student *student) {
printf("Name: %s\n", student->name);
printf("Highest score: %.2f in Course X\n", *max_score); // 用实际的课程名替换Course X
printf("Lowest score: %.2f in Course X\n", *min_score); // 用实际的课程名替换Course X
}
int main() {
// 初始化一个学生
Student student;
strcpy(student.name, "张三"); // 假设名字是张三
student.scores[0] = 90.0;
student.scores[1] = 85.0;
student.scores[2] = 95.0;
student.scores[3] = 78.0;
student.scores[4] = 88.0;
// 计算并显示各门课程的成绩
float max_course1, min_course1;
get_course_scores(&student, 0, &max_course1, &min_course1); // 第一门课
display_student(&student);
float max_course2, min_course2;
get_course_scores(&student, 1, &max_course2, &min_course2); // 第二门课
display_student(&student);
// ... 继续其他课程
return 0;
}
```
这个示例中,我们首先定义了一个`Student`结构,然后编写了两个辅助函数:`get_course_scores`用于计算某门课程的最高分和最低分,`display_student`则用于展示学生的姓名及对应课程的成绩。
注意,你需要根据实际的课程数量和课程名称调整代码。此外,上述代码并没有处理异常情况,例如如果用户提供的输入无效,可能需要添加适当的错误检查。
阅读全文