top1编程
← 返回题目
题解

童童的数字游戏

1 条题解

  • 0
    @ 2026-8-5 0:36:21

    解题思路

    题目要求用 do while。读入一个范围 [a, b](可能 a > b,要先交换保证 a ≤ b),然后循环读数字(0 结束),统计在范围内的个数。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int a, b;
        cin >> a >> b;        // 范围的开始和结束
        if (a > b) {          // 如果开始比结束大,交换保证a<=b
            int t = a; a = b; b = t;
        }
    
        int x, cnt = 0;       // x是读入的数字,cnt是范围内个数
        do {
            cin >> x;
            if (x >= a && x <= b) cnt++;   // 在范围内就计数
        } while (x != 0);                  // 读到0结束
    
        cout << cnt << endl;
        return 0;
    }
    

    复杂度分析

    读入 n 个数处理一遍,时间复杂度 O(n),额外空间复杂度 O(1)。

    • 1