用c语言编写,输入10个学生5门课成绩,分别用函数实现:1.计算每个学生的平均分。 2.计算每门课的平均分。3.找出所有50个分数中最高分数所对应的学生和课程
时间: 2024-12-19 09:28:38 浏览: 13
在C语言中,我们可以编写一个结构体`Student`用于存储学生的姓名和五门课的成绩,然后定义三个函数来完成相应的任务。
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
char name[50];
int scores[5]; // 学生成绩数组
} Student;
// 函数1: 计算单个学生的平均分
float average_score(Student student) {
float sum = 0;
for (int i = 0; i < 5; i++) {
sum += student.scores[i];
}
return sum / 5;
}
// 函数2: 计算每门课的平均分
void course_average(int scores[], int n) {
float total_sum = 0;
for (int i = 0; i < n * 5; i += 5) { // 每次遍历5个成绩
total_sum += scores[i] + scores[i+1] + scores[i+2] + scores[i+3] + scores[i+4];
}
printf("每门课的平均分: %.2f\n", total_sum / 5);
}
// 函数3: 查找总成绩最高的学生和课程
void find_highest_score(Student* students, int num_students) {
int highest_score = INT_MIN;
char highest_student_name[50] = "";
int highest_course = -1;
for (int i = 0; i < num_students; i++) {
for (int j = 0; j < 5; j++) {
if (students[i].scores[j] > highest_score) {
highest_score = students[i].scores[j];
strcpy(highest_student_name, students[i].name);
highest_course = j + 1; // 课程编号从1开始
}
}
}
printf("最高分数: %d 分, 所属学生: %s, 所属课程: %d\n", highest_score, highest_student_name, highest_course);
}
int main() {
Student students[10];
// 输入10个学生的成绩,假设已填充好数据
// 调用函数
for (int i = 0; i < 10; i++) {
printf("学生 %s 的平均分: %.2f\n", students[i].name, average_score(students[i]));
}
course_average(students[0].scores, 1); // 使用第一个学生的数据举例
find_highest_score(students, 10);
return 0;
}
```
阅读全文