题解
统计正数
1 条题解
-
0
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