C++ 寻找最接近平均成绩的科目
C++ 寻找最接近平均成绩的科目
本程序用于从5个科目成绩中找出最接近且不小于平均成绩的科目序号。
输入: 从键盘输入5个数表示成绩,以空格分隔。
输出: 输出1个要找的序号内容:(1-5),如果有多个科目的成绩都满足条件,则输出最小的那个序号。
示例:
输入: '89 76 92 88 76'
输出: '1'
输入: '85 85 85 85 85'
输出: '1'
说明: 第1个样例中,平均成绩为84.2,与89最接近且不小于平均成绩,因此输出1。第2个样例中,所有科目成绩均为85,因此输出1。
代码示例:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> scores(5);
int sum = 0;
// 输入成绩
for (int i = 0; i < 5; ++i) {
cin >> scores[i];
sum += scores[i];
}
// 计算平均成绩
double average = (double)sum / 5;
// 找到最接近且不小于平均成绩的科目
int closestIndex = 0;
double minDifference = abs(scores[0] - average);
for (int i = 1; i < 5; ++i) {
double difference = abs(scores[i] - average);
if (difference < minDifference || (difference == minDifference && i < closestIndex) || scores[i] >= average && scores[closestIndex] < average) {
minDifference = difference;
closestIndex = i;
}
}
// 输出结果
cout << closestIndex + 1 << endl;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/nQ49 著作权归作者所有。请勿转载和采集!