top1编程
← 返回题目
题解

统计正数

1 条题解

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

    P4422 统计正数(入门)

    解题思路

    读入一串整数,最后一个0表示结束,要统计其中有多少个正整数。正数就是大于0的数,判断条件 x>0。和"以0结尾"的其他题目一样,用 while(cin>>x && x!=0) 读入,读到0就停。这里要特别小心:输入里可能混有负数,比如样例中的-3,它既不是正整数,也不是结束信号,所以我们要用 x>0 判断,而不是别的条件;0虽然被排除在循环外了,但我们本来也不数它。边界情况:如果读入的全是负数和0,cnt保持0;如果第一个数就是0,说明没有数据,输出0;如果数据里有很大的正数比如100000,也照样计数。

    参考代码

    // 程序用途:读入一串整数(以0结尾),统计其中正整数的个数
    #include <iostream>
    using namespace std;
    
    int main() {
        int x, cnt = 0;                 // x是读入的数,cnt是正整数的个数
        while (cin >> x && x != 0) {    // 读到0结束
            if (x > 0) cnt++;           // 只有正数才计数,0和负数不算
        }
        cout << cnt << endl;
        return 0;
    }
    

    复杂度分析

    一共读入n个整数处理一遍,每个数判断一次,所以时间复杂度 O(n);只用x、cnt两个变量,额外空间复杂度 O(1)。

    • 1