1050 小高考

这道题的核心逻辑在于条件判断计数。我们需要先判断是否有科目不及格(D 级),如果没有,再统计 A 的个数并根据规则计算加分。


题目逻辑解析

我们可以将解题步骤分为三部分:

  1. 输入与初始化:读取 4 门功课的分数,设定一个变量 a_count 来记录 A 的数量。
  2. 等级判定
    • 如果分数 \(< 60\),直接判定为 D 级,输出 "Poor LanYangYang" 并结束程序。
    • 如果分数 \(\ge 90\),则判定为 A 级,a_count 加 1。
  3. 计算加分
    • 如果 4 门全是 A (a_count == 4),加分为 5 分。
    • 否则,加分等于 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)在代码逻辑中其实不需要显式判断。
posted @ 2026-01-30 09:53  张一信奥  阅读(21)  评论(0)    收藏  举报