C语言:输入N(定义为符号常量)个学生4门课的成绩,分别用函数实现下列功能: a.计算每个学生的平均分 b.计算每门课程的平均分 c.找出所有4*N个分数中最高的分数所对应的学生和课程
时间: 2024-02-25 20:56:44 浏览: 77
以下是C语言的代码实现:
```c
#include <stdio.h>
#define N 3 // 学生数,可以根据需要修改
// 计算每个学生的平均分
void calcAvgPerStudent(float (*scores)[4], float *avgPerStudent) {
for (int i = 0; i < N; i++) {
float sum = 0;
for (int j = 0; j < 4; j++) {
sum += scores[i][j];
}
avgPerStudent[i] = sum / 4;
}
}
// 计算每门课程的平均分
void calcAvgPerCourse(float (*scores)[4], float *avgPerCourse) {
for (int j = 0; j < 4; j++) {
float sum = 0;
for (int i = 0; i < N; i++) {
sum += scores[i][j];
}
avgPerCourse[j] = sum / N;
}
}
// 找出所有4*N个分数中最高的分数所对应的学生和课程
void findMaxScore(float (*scores)[4], int *maxStudent, int *maxCourse) {
float maxScore = scores[0][0];
*maxStudent = 0;
*maxCourse = 0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < 4; j++) {
if (scores[i][j] > maxScore) {
maxScore = scores[i][j];
*maxStudent = i;
*maxCourse = j;
}
}
}
}
int main() {
float scores[N][4];
float avgPerStudent[N];
float avgPerCourse[4];
int maxStudent, maxCourse;
printf("请输入%d个学生的4门成绩:\n", N);
for (int i = 0; i < N; i++) {
printf("请输入第%d个学生的成绩(用空格分隔):\n", i + 1);
scanf("%f %f %f %f", &scores[i][0], &scores[i][1], &scores[i][2], &scores[i][3]);
}
calcAvgPerStudent(scores, avgPerStudent);
calcAvgPerCourse(scores, avgPerCourse);
findMaxScore(scores, &maxStudent, &maxCourse);
printf("每个学生的平均分如下:\n");
for (int i = 0; i < N; i++) {
printf("第%d个学生的平均分为:%.2f\n", i + 1, avgPerStudent[i]);
}
printf("每门课程的平均分如下:\n");
for (int j = 0; j < 4; j++) {
printf("第%d门课程的平均分为:%.2f\n", j + 1, avgPerCourse[j]);
}
printf("所有4*N个分数中最高的分数为:%.2f,对应的学生为第%d个,对应的课程为第%d门\n", scores[maxStudent][maxCourse], maxStudent + 1, maxCourse + 1);
return 0;
}
```
在代码中,首先定义了符号常量N表示学生数,随后定义了三个函数分别实现计算每个学生的平均分、计算每门课程的平均分、找出所有4*N个分数中最高的分数所对应的学生和课程。在主函数中,先从标准输入中读入N个学生的4门成绩,然后依次调用三个函数,最后输出计算结果。
阅读全文