输入M名学生N门课程的成绩,分别用函数求出:每门课程的平均分,找出所有成绩中的最高分数以及所对应的学生和课程,并在主函数中输出第一个最高分
时间: 2023-12-17 17:02:28 浏览: 295
C语言程序设计-输入2个学生3门课的成绩,计算学生成绩平均分,课程平均分和最高分.
5星 · 资源好评率100%
以下是实现该功能的代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 100;
// 求每门课程的平均分
void avg_score(int scores[][MAXN], int m, int n, double avg[]) {
memset(avg, 0, sizeof(avg)); // 初始化平均分数组为0
for (int j = 0; j < n; j++) {
for (int i = 0; i < m; i++) {
avg[j] += scores[i][j];
}
avg[j] /= m;
}
}
// 找出所有成绩中的最高分数以及所对应的学生和课程
void find_max_score(int scores[][MAXN], int m, int n,
int &max_score, int &max_student, int &max_course) {
max_score = -1;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (scores[i][j] > max_score) {
max_score = scores[i][j];
max_student = i;
max_course = j;
}
}
}
}
int main() {
int m, n; // m个学生,n门课程
int scores[MAXN][MAXN]; // 成绩矩阵
double avg[MAXN]; // 每门课程的平均分
int max_score, max_student, max_course; // 最高分数,对应的学生和课程
// 输入成绩矩阵
cout << "请输入学生人数和课程数:";
cin >> m >> n;
cout << "请输入成绩矩阵:\n";
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> scores[i][j];
}
}
// 求每门课程的平均分并输出
avg_score(scores, m, n, avg);
cout << "每门课程的平均分:\n";
for (int j = 0; j < n; j++) {
cout << avg[j] << " ";
}
cout << endl;
// 找出所有成绩中的最高分数以及所对应的学生和课程,并输出第一个最高分
find_max_score(scores, m, n, max_score, max_student, max_course);
cout << "最高分数:" << max_score << endl;
cout << "对应的学生:" << max_student + 1 << endl;
cout << "对应的课程:" << max_course + 1 << endl;
return 0;
}
```
代码中的 `avg_score` 函数用于求每门课程的平均分,它接收一个二维数组 `scores` 表示成绩矩阵,以及矩阵的行数 `m` 和列数 `n`,并将每门课程的平均分保存在一个一维数组 `avg` 中。代码中的 `find_max_score` 函数用于找出所有成绩中的最高分数以及所对应的学生和课程,它接收一个二维数组 `scores` 表示成绩矩阵,以及矩阵的行数 `m` 和列数 `n`,并将最高分数、对应的学生和课程分别保存在三个整型变量 `max_score`、`max_student` 和 `max_course` 中。
在主函数中,首先输入成绩矩阵,然后调用 `avg_score` 函数求每门课程的平均分并输出,最后调用 `find_max_score` 函数找出所有成绩中的最高分数以及所对应的学生和课程,并输出第一个最高分。注意,在输出对应的学生和课程时,由于数组下标是从0开始的,所以需要将其加1。
阅读全文