1050 小高考
这道题的核心逻辑在于条件判断和计数。我们需要先判断是否有科目不及格(D 级),如果没有,再统计 A 的个数并根据规则计算加分。
题目逻辑解析
我们可以将解题步骤分为三部分:
- 输入与初始化:读取 4 门功课的分数,设定一个变量
a_count来记录 A 的数量。 - 等级判定:
- 如果分数 \(< 60\),直接判定为 D 级,输出 "Poor LanYangYang" 并结束程序。
- 如果分数 \(\ge 90\),则判定为 A 级,
a_count加 1。
- 计算加分:
- 如果 4 门全是 A (
a_count == 4),加分为 5 分。 - 否则,加分等于 A 的个数。
- 如果 4 门全是 A (
C++ 代码实现
#include <iostream>
using namespace std;
int main() {
int score;
int a_count = 0; // 记录得 A 的数量
for (int i = 0; i < 4; i++) {
if (!(cin >> score)) break;
// 只要有一门小于 60,直接输出并退出
if (score < 60) {
cout << "Poor LanYangYang" << endl;
return 0;
}
// 统计 A 的数量
if (score >= 90) {
a_count++;
}
}
// 根据 A 的数量判断最终加分
if (a_count == 4) {
cout << 5 << endl;
} else {
cout << a_count << endl;
}
return 0;
}
关键点拨
- 提前退出:在处理 D 级情况时,使用
return 0;或exit(0);可以立即终止程序,避免输出加分结果,这是处理“一票否决”逻辑的常用技巧。 - 4A 特殊规则:题目中提到 4A 加 5 分,而不是 4 分,这是一个容易掉进去的“小坑”,需要用
if-else特别处理。 - 逻辑简化:由于我们只关心是否及格和是否得 A,B 级(75-89)和 C 级(60-74)在代码逻辑中其实不需要显式判断。

浙公网安备 33010602011771号