输入10个学生5门课程的成绩,分别用函数实现下列功能: (1)计算每个学生的平均成绩; (2)计算每门课的平均成绩; (3)找出所有50个分数中最高的分数所对应的学生和课程。 各函数采用指针法完成。
时间: 2024-05-11 17:17:52 浏览: 102
编写程序,输入并保存5名学生的信息,计算出平均分,再按照成绩从高到低的顺序输出他们的信息。学生信息包括:学号、姓名、成绩。
下面是实现以上功能的代码:
```c++
#include <iostream>
using namespace std;
const int STUDENT_NUM = 10; // 学生数量
const int COURSE_NUM = 5; // 课程数量
// 计算每个学生的平均成绩
void calc_avg_score_per_student(int (*scores)[COURSE_NUM], double *avg_scores)
{
for (int i = 0; i < STUDENT_NUM; i++)
{
double sum = 0;
for (int j = 0; j < COURSE_NUM; j++)
{
sum += scores[i][j];
}
avg_scores[i] = sum / COURSE_NUM;
}
}
// 计算每门课的平均成绩
void calc_avg_score_per_course(int (*scores)[COURSE_NUM], double *avg_scores)
{
for (int i = 0; i < COURSE_NUM; i++)
{
double sum = 0;
for (int j = 0; j < STUDENT_NUM; j++)
{
sum += scores[j][i];
}
avg_scores[i] = sum / STUDENT_NUM;
}
}
// 找出所有50个分数中最高的分数所对应的学生和课程
void find_highest_score(int (*scores)[COURSE_NUM], int &student, int &course)
{
int max_score = scores[0][0];
student = 0;
course = 0;
for (int i = 0; i < STUDENT_NUM; i++)
{
for (int j = 0; j < COURSE_NUM; j++)
{
if (scores[i][j] > max_score)
{
max_score = scores[i][j];
student = i;
course = j;
}
}
}
}
int main()
{
int scores[STUDENT_NUM][COURSE_NUM]; // 存储成绩的数组
double avg_scores_per_student[STUDENT_NUM]; // 每个学生的平均成绩
double avg_scores_per_course[COURSE_NUM]; // 每门课的平均成绩
int max_score_student, max_score_course; // 最高分数所对应的学生和课程
// 输入成绩
cout << "请输入每位学生的" << COURSE_NUM << "门课程的成绩:" << endl;
for (int i = 0; i < STUDENT_NUM; i++)
{
cout << "学生" << i + 1 << "的成绩:";
for (int j = 0; j < COURSE_NUM; j++)
{
cin >> scores[i][j];
}
}
// 计算每个学生的平均成绩
calc_avg_score_per_student(scores, avg_scores_per_student);
// 输出每个学生的平均成绩
cout << "每个学生的平均成绩:" << endl;
for (int i = 0; i < STUDENT_NUM; i++)
{
cout << "学生" << i + 1 << "的平均成绩为:" << avg_scores_per_student[i] << endl;
}
// 计算每门课的平均成绩
calc_avg_score_per_course(scores, avg_scores_per_course);
// 输出每门课的平均成绩
cout << "每门课的平均成绩:" << endl;
for (int i = 0; i < COURSE_NUM; i++)
{
cout << "第" << i + 1 << "门课的平均成绩为:" << avg_scores_per_course[i] << endl;
}
// 找出所有50个分数中最高的分数所对应的学生和课程
find_highest_score(scores, max_score_student, max_score_course);
// 输出最高分数所对应的学生和课程
cout << "最高分数为:" << scores[max_score_student][max_score_course] << endl;
cout << "最高分数所对应的学生为:" << max_score_student + 1 << endl;
cout << "最高分数所对应的课程为:" << max_score_course + 1 << endl;
return 0;
}
```
运行程序,输入10个学生5门课程的成绩,即可得到每个学生的平均成绩、每门课的平均成绩以及最高分数所对应的学生和课程。
阅读全文