酷代码 AI
菜单
服务商

c++初学者方法解决:输入一个整数n,统计数字n中,有多少个0,多少个1,多少个2,并分别把统计的结果输出。 输入: 一个整数n。 输出: 三个整数,分别表示数字n中0的个数,1的个数,2的个数,每个数字之间用空格隔开。

```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; int count0 = 0; int count1 = 0; int count2 = 0; if (n == 0) { count0 = 1; } else { if (n < 0) { n = -n; } while (n > 0) { int digit = n % 10; if (digit == 0) { count0++; } else if (digit == 1) { count1++; } else if (digit == 2) { count2++; } n /= 10; } } cout << count0 << " " << count1 << " " << count2 << endl; return 0; } ``` 代码解释 1. 输入处理: - 使用 `cin` 读取用户输入的整数 `n`。 2. 初始化计数器: - 定义三个变量 `count0`、`count1` 和 `count2`,分别用于统计数字 `n` 中 0、1、2 的个数,初始值都设为 0。 3. 特殊情况处理: - 如果输入的 `n` 为 0,直接将 `count0` 设为 1,因为数字 0 中只有一个 0。 - 如果输入的 `n` 为负数,将其转换为正数,因为数字的正负不影响各个数字的个数统计。 4. 逐位检查: - 使用 `while` 循环,只要 `n` 大于 0 就继续循环。 - 在每次循环中,通过 `n % 10` 得到 `n` 的最后一位数字 `digit`。 - 检查 `digit` 的值,如果是 0 则 `count0` 加 1,如果是 1 则 `count1` 加 1,如果是 2 则 `count2` 加 1。 - 然后通过 `n /= 10` 将 `n` 去掉最后一位,继续下一轮循环。 5. 输出结果: - 使用 `cout` 输出统计结果,三个计数器用空格隔开。 复杂度分析 - 时间复杂度:$O(k)$,其中 $k$ 是输入数字 `n` 的位数。因为需要逐位检查数字 `n`。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 [2025-12-26 19:58:59 | AI问答 | 610点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多