以下是一种可能的实现方式:

#include <iostream>
#include <cmath> // 计算绝对值用到的头文件
using namespace std;

int main() {
    const int NUM_SUBJECTS = 5; // 科目数量
    int scores[NUM_SUBJECTS]; // 每科成绩
    int sum = 0; // 所有成绩的和
    double avg; // 平均成绩

    // 输入每科成绩,同时计算总分
    for (int i = 0; i < NUM_SUBJECTS; i++) {
        cout << '请输入第' << i+1 << '科成绩:';
        cin >> scores[i];
        sum += scores[i];
    }

    // 计算平均成绩
    avg = static_cast<double>(sum) / NUM_SUBJECTS;

    // 找出最接近且不小于平均成绩的科目
    int closest = -1; // 最接近的科目编号
    int minDiff = INT_MAX; // 最小差值(初始化为一个大整数,保证第一次比较一定成立)
    for (int i = 0; i < NUM_SUBJECTS; i++) {
        int diff = abs(scores[i] - avg); // 当前科目与平均成绩的差值
        if (scores[i] >= avg && diff < minDiff) { // 如果当前科目成绩不小于平均成绩且差值更小
            closest = i; // 更新最接近的科目编号
            minDiff = diff; // 更新最小差值
        }
    }

    // 输出结果
    if (closest == -1) { // 如果没有找到符合条件的科目
        cout << '没有找到符合条件的科目' << endl;
    } else {
        cout << '最接近且不小于平均成绩的科目是第' << closest+1 << '科,成绩为' << scores[closest] << endl;
    }

    return 0;
}

程序先定义了一个 NUM_SUBJECTS 常量表示科目数量,然后定义了一个数组 scores 存储每科成绩。在输入每科成绩的同时,累加总分。然后计算平均成绩。

接下来,程序使用一个循环遍历每个科目,计算当前科目成绩与平均成绩的差值 diff,如果当前科目成绩不小于平均成绩且差值更小,则更新最接近的科目编号 closest 和最小差值 minDiff

最后,程序判断是否找到符合条件的科目。如果没有找到,则输出提示信息;否则,输出最接近且不小于平均成绩的科目编号和成绩。

C++ 找出最接近且不小于平均成绩的科目

原文地址: https://www.cveoy.top/t/topic/nQ5f 著作权归作者所有。请勿转载和采集!

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