top1编程
← 返回题目
题解

成绩等级与分数

1 条题解

  • 0
    @ 2026-8-5 21:17:14

    P4260 成绩等级与分数(入门)

    解题思路

    这道题就像自动售货机:你按哪个按钮,它就吐哪个商品。输入一个等级字符,输出对应的分数范围。

    用 if...else if...else 一档一档判断:

    • 'A' → 90~100
    • 'B' → 80~90
    • 'C' → 60~80
    • 'D' → fail
    • 其他任何字符 → error

    注意 else 的用法:判断完 A、B、C、D 都"不成立"之后,剩下的所有情况统一走最后的 else,这样"其他等级"就自动全部归到 error,不需要再写一堆条件。

    边界情况:

    • 如果输入小写字母 'a',和 'A' 不相等(字符比较区分大小写),最后会落到 else 输出 error,符合题目"输入其他等级则输出 error"的要求。
    • 输入保证是一个字符,char c; cin >> c; 就能读进来,不用考虑读入多个字符。

    比如输入 A,第一条判断 c=='A' 成立,输出 "90~100",后面的分支都不再执行。

    参考代码

    // 用途:根据输入的等级字符,输出对应的分数区间或错误提示
    #include <iostream>
    using namespace std;
    
    int main() {
        char c;
        cin >> c;
        if (c == 'A') cout << "90~100" << endl;   // A对应90~100
        else if (c == 'B') cout << "80~90" << endl;
        else if (c == 'C') cout << "60~80" << endl;
        else if (c == 'D') cout << "fail" << endl; // D表示不及格
        else cout << "error" << endl;              // 其他字符一律报错
        return 0;
    }
    

    复杂度分析

    最多依次判断 5 次(4 个 if 加 1 个 else),之后立即输出,和输入的字符是什么无关,时间复杂度 O(1),额外空间 O(1)。这类"多选一"的分支题,分支再多也只执行其中一条,永远是最快的。

    • 1