C++ 找出最接近且不小于平均成绩的科目
以下是一种可能的实现方式:
#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。
最后,程序判断是否找到符合条件的科目。如果没有找到,则输出提示信息;否则,输出最接近且不小于平均成绩的科目编号和成绩。
原文地址: https://www.cveoy.top/t/topic/nQ5f 著作权归作者所有。请勿转载和采集!