某班级M位学生 每位学生有N门课程成绩 编程求出课程的平均成绩和每位学生的平均成绩
时间: 2024-11-18 11:16:17 浏览: 8
为了实现这个功能,你需要定义一个结构体来存储每个学生的姓名和他们的所有课程成绩,然后遍历数据结构,计算每门课程的总分以及每位学生的平均成绩。以下是一个简单的C语言程序示例:
```c
#include <stdio.h>
// 定义学生结构体
typedef struct {
char name[M]; // 假设姓名不超过M个字符
float scores[N]; // 学生的N门课程成绩数组
} Student;
// 计算单门课程的平均分
float calculate_subject_average(float scores[], int n) {
float sum = 0;
for (int i = 0; i < n; i++) {
sum += scores[i];
}
return sum / n;
}
// 计算每位学生的平均分
float calculate_student_average(Student student) {
int total_courses = sizeof(student.scores) / sizeof(student.scores[0]);
float average = 0;
for (int i = 0; i < total_courses; i++) {
average += student.scores[i];
}
return average / total_courses;
}
// 主函数
int main() {
Student students[M]; // 假设已经填充了学生的数据
int nCourses = sizeof(students[0].scores) / sizeof(students[0].scores[0]); // 获取课程数量
// 初始化平均值变量
float subject_avg, student_avg;
for (int i = 0; i < M; i++) {
student_avg = calculate_student_average(students[i]);
printf("学生 %s 的平均成绩为: %.2f\n", students[i].name, student_avg);
subject_avg = calculate_subject_average(students[i].scores, nCourses);
printf("课程的平均成绩为: %.2f\n", subject_avg);
}
return 0;
}
```
在这个例子中,首先定义了一个`Student`结构体,包含姓名和分数数组。接着定义了两个辅助函数:`calculate_subject_average`用于计算一门课程的平均分,`calculate_student_average`用于计算每位学生的平均分。
在`main`函数中,我们创建了一个学生数组并获取课程的数量。然后逐个遍历学生,调用这两个函数并输出结果。
阅读全文