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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录