top1编程
← 返回题目
题解

荣誉奖章

1 条题解

  • 0
    @ 2026-8-4 10:00:35

    解题思路

    这道题要我们数一数:三科成绩里面,有几科考了满分(100分)。

    我们只需要把三科成绩一个一个拿来和 100 比一比:

    • 第一科如果等于 100,计数器加 1;
    • 第二科如果等于 100,计数器再加 1;
    • 第三科如果等于 100,计数器再加 1。

    最后输出计数器的值就是答案。这里的计数器就是一个 int 变量,我们给它起名叫 cnt(count 的缩写,表示“个数”)。

    有两个容易出错的地方:

    1. 计数器一开始必须设成 0。如果不初始化,cnt 里可能是不知道多大的随机数,答案就错了;
    2. 满分是 100 分,要用“等于”符号 == 判断,写成 a == 100,不能写成赋值号 =。

    这种“数一数有多少个满足条件的对象”的方法叫做计数法,是编程里非常常用的方法,以后统计人数、统计个数都会用到。

    参考代码

    #include using namespace std;

    int main() { int a, b, c; // a、b、c 分别表示三个科目的成绩 cin >> a >> b >> c; // 读入三个成绩

    int cnt = 0;        // cnt 记录拿到奖章(满分)的科目个数,先设为 0
    if (a == 100) cnt = cnt + 1;  // 第一科是满分,奖章数加 1
    if (b == 100) cnt = cnt + 1;  // 第二科是满分,奖章数加 1
    if (c == 100) cnt = cnt + 1;  // 第三科是满分,奖章数加 1
    
    cout << cnt << endl;  // 输出奖章总数
    return 0;
    

    }

    复杂度分析

    本题固定只有 3 科成绩要判断,判断的次数固定是 3 次,不会随着输入变大而变多,所以时间复杂度是 O(1)。程序只用了 4 个 int 变量,空间大小固定,空间复杂度也是 O(1)。

    • 1