编写一段源程序, 输入10个学生5门课程的成绩,分别用函数实现下列功能: (1)计算每个学生的平均成绩; (2)计算每门课的平均成绩; (3)找出所有50个分数中最高的分数所对应的学生和课程。 各函数采用指针法完成
时间: 2023-06-24 13:03:47 浏览: 97
下面是符合要求的源程序:
```c
#include <stdio.h>
void calcStuAvg(int (*scores)[5], float *stuAvg); // 计算每个学生的平均成绩
void calcCourseAvg(int (*scores)[5], float *courseAvg); // 计算每门课的平均成绩
void findMax(int (*scores)[5], int *maxScore, int *maxStu, int *maxCourse); // 找出所有50个分数中最高的分数所对应的学生和课程
int main() {
int scores[10][5]; // 存储10个学生5门课程的成绩
float stuAvg[10]; // 存储每个学生的平均成绩
float courseAvg[5]; // 存储每门课的平均成绩
int maxScore = 0, maxStu = 0, maxCourse = 0; // 最高分数、对应的学生和课程
// 输入成绩
printf("请输入10个学生5门课程的成绩:\n");
for(int i = 0; i < 10; i++) {
printf("请输入第%d个学生的成绩:\n", i+1);
for(int j = 0; j < 5; j++) {
scanf("%d", &scores[i][j]);
}
}
// 计算每个学生的平均成绩
calcStuAvg(scores, stuAvg);
// 输出每个学生的平均成绩
printf("每个学生的平均成绩为:\n");
for(int i = 0; i < 10; i++) {
printf("第%d个学生的平均成绩为:%.2f\n", i+1, stuAvg[i]);
}
// 计算每门课的平均成绩
calcCourseAvg(scores, courseAvg);
// 输出每门课的平均成绩
printf("每门课的平均成绩为:\n");
for(int i = 0; i < 5; i++) {
printf("第%d门课的平均成绩为:%.2f\n", i+1, courseAvg[i]);
}
// 找出所有50个分数中最高的分数所对应的学生和课程
findMax(scores, &maxScore, &maxStu, &maxCourse);
// 输出最高分数、对应的学生和课程
printf("最高分数为:%d\n", maxScore);
printf("对应的学生为第%d个,对应的课程为第%d门\n", maxStu+1, maxCourse+1);
return 0;
}
void calcStuAvg(int (*scores)[5], float *stuAvg) {
for(int i = 0; i < 10; i++) {
float sum = 0;
for(int j = 0; j < 5; j++) {
sum += scores[i][j];
}
stuAvg[i] = sum / 5;
}
}
void calcCourseAvg(int (*scores)[5], float *courseAvg) {
for(int i = 0; i < 5; i++) {
float sum = 0;
for(int j = 0; j < 10; j++) {
sum += scores[j][i];
}
courseAvg[i] = sum / 10;
}
}
void findMax(int (*scores)[5], int *maxScore, int *maxStu, int *maxCourse) {
for(int i = 0; i < 10; i++) {
for(int j = 0; j < 5; j++) {
if(scores[i][j] > *maxScore) {
*maxScore = scores[i][j];
*maxStu = i;
*maxCourse = j;
}
}
}
}
```
在这个程序中,我们定义了三个函数:`calcStuAvg`、`calcCourseAvg` 和 `findMax`。这三个函数分别用于计算每个学生的平均成绩、计算每门课的平均成绩和找出最高分数所对应的学生和课程。这三个函数都采用了指针作为参数,以便能够修改函数外部的变量。
在 `main` 函数中,我们首先定义了一个二维数组 `scores`,用于存储10个学生5门课程的成绩,以及三个一维数组 `stuAvg`、`courseAvg` 和 `maxScore`,分别用于存储每个学生的平均成绩、每门课的平均成绩和最高分数、对应的学生和课程。然后,我们通过 `scanf` 函数从终端输入成绩,并依次调用 `calcStuAvg`、`calcCourseAvg` 和 `findMax` 函数来计算平均成绩和最高分数,并输出结果。
阅读全文