用C语言编程输入10个学生5门课的成绩,分别用函数求:(1)每个学生的平均分;(2)每门课的平均分;(3)找出平均分最高的学生。
时间: 2023-11-20 13:04:44 浏览: 162
C语言程序设计-有一个一维数组score,内放10个学生的成绩,用一个函数来求平均成绩;
5星 · 资源好评率100%
下面是一个实现以上功能的C语言程序:
```c
#include <stdio.h>
#define N 10
#define M 5
void input_scores(int scores[N][M]);
void compute_student_avg(int scores[N][M], float student_avg[N]);
void compute_course_avg(int scores[N][M], float course_avg[M]);
int find_max_avg_student(float student_avg[N]);
int main() {
int scores[N][M];
float student_avg[N], course_avg[M];
int max_avg_student;
input_scores(scores);
compute_student_avg(scores, student_avg);
compute_course_avg(scores, course_avg);
max_avg_student = find_max_avg_student(student_avg);
printf("每个学生的平均分如下:\n");
for (int i = 0; i < N; i++) {
printf("学生%d的平均分为:%.2f\n", i+1, student_avg[i]);
}
printf("每门课的平均分如下:\n");
for (int j = 0; j < M; j++) {
printf("第%d门课的平均分为:%.2f\n", j+1, course_avg[j]);
}
printf("平均分最高的学生是学生%d,平均分为%.2f\n", max_avg_student+1, student_avg[max_avg_student]);
return 0;
}
void input_scores(int scores[N][M]) {
printf("请输入%d个学生的%d门课的成绩:\n", N, M);
for (int i = 0; i < N; i++) {
printf("请输入第%d个学生的%d门课的成绩:", i+1, M);
for (int j = 0; j < M; j++) {
scanf("%d", &scores[i][j]);
}
}
}
void compute_student_avg(int scores[N][M], float student_avg[N]) {
for (int i = 0; i < N; i++) {
int sum = 0;
for (int j = 0; j < M; j++) {
sum += scores[i][j];
}
student_avg[i] = (float) sum / M;
}
}
void compute_course_avg(int scores[N][M], float course_avg[M]) {
for (int j = 0; j < M; j++) {
int sum = 0;
for (int i = 0; i < N; i++) {
sum += scores[i][j];
}
course_avg[j] = (float) sum / N;
}
}
int find_max_avg_student(float student_avg[N]) {
int max_index = 0;
for (int i = 1; i < N; i++) {
if (student_avg[i] > student_avg[max_index]) {
max_index = i;
}
}
return max_index;
}
```
程序中定义了常量N和M分别表示学生数和课程数,用二维数组scores[N][M]存储学生成绩。程序中定义了4个函数,分别实现输入成绩、计算每个学生的平均分、计算每门课的平均分、找出平均分最高的学生。在主函数中,先调用input_scores函数输入成绩,然后分别调用compute_student_avg函数和compute_course_avg函数计算每个学生的平均分和每门课的平均分,最后调用find_max_avg_student函数找出平均分最高的学生,并输出结果。
阅读全文