酷代码 AI
菜单
服务商

C++ 程序:输入两数求和,精准统计和中数字 2 的个数!

以下是使用 C++ 编写的程序,用于输入两个整数 `a` 和 `b`,计算它们的和 `n`,并输出 `n` 的每一位中数字 2 的个数: ```cpp #include <iostream> using namespace std; int main() { int a, b; // 从标准输入读取两个整数 a 和 b cin >> a >> b; // 计算 a 和 b 的和,存储在变量 n 中 int n = a + b; // 处理 n 为负数的情况,将其转换为正数,因为负数的每一位数字与它绝对值的每一位数字相同 if (n < 0) { n = -n; } int count = 0; // 用于记录数字 2 出现的次数 // 使用 while 循环逐位检查 n 的每一位 while (n > 0) { int digit = n % 10; // 取出 n 的个位数字 if (digit == 2) { count++; // 如果个位数字是 2,计数加 1 } n /= 10; // 去掉 n 的个位数字 } // 输出数字 2 出现的总次数 cout << count << endl; return 0; } ``` 代码解释: 1. 输入与求和: - 程序首先使用 `cin` 从标准输入读取两个整数 `a` 和 `b`。 - 然后计算它们的和 `n = a + b`。 2. 负数处理: - 如果 `n` 是负数,将其转换为正数,因为负数的每一位数字与它绝对值的每一位数字相同,不影响数字 2 的计数。 3. 逐位检查: - 使用一个 `while` 循环对 `n` 的每一位进行检查。在每次循环中,通过 `n % 10` 取出 `n` 的个位数字。 - 如果取出的个位数字等于 2,则将计数器 `count` 加 1。 - 接着,通过 `n /= 10` 去掉 `n` 的个位数字,以便在下一次循环中处理更高位的数字。 4. 输出结果: - 当 `n` 变为 0 时,循环结束,此时 `count` 中存储的就是 `n` 的每一位中数字 2 的个数,将其输出。 复杂度分析: - 时间复杂度:$O(log_{10} n)$,其中 $n$ 是 `a` 和 `b` 的和。因为需要逐位处理 `n` 的数字,而整数 `n` 的位数大约是 $log_{10} n$。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 667点数解答 | 2025-12-12 20:15:39]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]