用c语言编写输入10个学生5门课的成绩,分别用函数计算每个学生平均分,每门课平均分和找出所有50个分数中最高分数对应的学生和课程
时间: 2024-12-18 07:34:18 浏览: 25
在C语言中,为了实现这个需求,你需要创建几个函数来处理不同的任务:输入成绩、计算平均分、查找最高分以及打印结果。这里是一个简单的示例代码片段:
```c
#include <stdio.h>
// 定义结构体表示学生和课程
typedef struct {
int id;
float scores[5];
} Student;
// 输入10个学生的成绩
void input_scores(Student students[], int n) {
for (int i = 0; i < n; i++) {
printf("请输入学生%d的五门课成绩:\n", i+1);
for (int j = 0; j < 5; j++) {
scanf("%f", &students[i].scores[j]);
}
}
}
// 计算单个学生平均分
float calculate_average(Student s) {
return (float)sum(s.scores) / 5;
}
// 计算某门课程的所有学生平均分
float course_average(int course_scores[]) {
float sum = 0;
for (int i = 0; i < 10; i++) {
sum += course_scores[i];
}
return sum / 10;
}
// 找出50个分数中的最高分
float find_highest_score(Student* students) {
float highest_score = students[0].scores[0];
int student_id = 0;
for (int i = 1; i < 10; i++) {
for (int j = 0; j < 5; j++) {
if (students[i].scores[j] > highest_score) {
highest_score = students[i].scores[j];
student_id = i + 1;
}
}
}
return highest_score, student_id;
}
int main() {
Student students[10];
input_scores(students, 10);
// 计算平均分和最高分
float total_avg = 0;
float course_averages[5];
for (int i = 0; i < 10; i++) {
total_avg += calculate_average(students[i]);
}
for (int j = 0; j < 5; j++) {
course_averages[j] = course_average(&students[0].scores[j]);
}
float highest_score, student_id;
highest_score = find_highest_score(students);
// 输出结果
printf("所有学生平均分:%.2f\n", total_avg / 10);
for (int k = 0; k < 5; k++) {
printf("第 %d 门课平均分:%.2f\n", k+1, course_averages[k]);
}
printf("最高分 (%.2f) 学生ID:%d, 分数在第%d门课\n", highest_score, student_id, highest_score_index);
return 0;
}
```
注意:此代码未包含`find_highest_score`中的`highest_score_index`计算部分,因为题目并未明确指出最高分出现在哪门课上。如果需要找到对应的课程编号,需在`find_highest_score`内部添加额外的逻辑。
阅读全文