有一个班30个学生,已知每个学生有5门科目的成绩,要求输出平均成绩最高的同学的成绩以及该学生的序号。
假设定义了一个名为 scores 的二维数组,其中 scores[i][j] 表示第 i 个学生的第 j 门科目的成绩
#include <stdio.h>
#define NUM_STUDENTS 30
#define NUM_SUBJECTS 5
int main(void) {
int scores[NUM_STUDENTS][NUM_SUBJECTS];
// 为了简化代码,假设你已经在此处输入了每个学生的成绩
int i, j;
int highest_average_index = 0; // 最高平均分的学生的序号
int highest_average = 0; // 最高平均分
// 遍历学生
for (i = 0; i < NUM_STUDENTS; i++) {
int total = 0; // 该学生的总分
// 遍历该学生的每门科目
for (j = 0; j < NUM_SUBJECTS; j++) {
total += scores[i][j];
}
// 计算该学生的平均分
int average = total / NUM_SUBJECTS;
// 如果平均分最高,则更新最高平均分和对应的学生序号
if (average > highest_average) {
highest_average = average;
highest_average_index = i;
}
}
// 输出最高平均分和对应的学生序号
printf("Student %d has the highest average score of %d\n", highest_average_index + 1, highest_average)
望采纳
详细的分析解答和代码实现及注释如下,望采纳
可以使用一个二维数组来存储每个学生的成绩,然后遍历数组,求出每个学生的平均成绩,并记录下最大的平均成绩以及对应的学生的序号。
#include <iostream>
#include <cstring>
using namespace std;
const int N = 30;
struct Student {
int num;
float score[5];
float average;
}
stu[N];
int main() {
for (int i = 0; i < N; i++) {
cin >> stu[i].num;
for (int j = 0; j < 5; j++) {
cin >> stu[i].score[j];
}
}
// 计算平均分
for (int i = 0; i < N; i++) {
float sum = 0;
for (int j = 0; j < 5; j++) {
sum += stu[i].score[j];
}
stu[i].average = sum / 5.0;
}
// 找到平均分最高的学生
int max_index = 0;
for (int i = 1; i < N; i++) {
if (stu[i].average > stu[max_index].average) {
max_index = i;
}
}
cout << "序号: " << stu[max_index].num << endl;
cout << "成绩: ";
for (int i = 0; i < 5; i++) {
cout << stu[max_index].score[i] << " ";
}
cout << endl;
return 0;
}