C++ 实现从输入字符中筛选两数字字符并求和
以下是实现该功能的 C++ 代码: ```cpp #include <iostream> #include <string> int main() { int n; // 读取字符的数量 std::cin >> n; std::string input; // 读取 n 个字符 std::cin >> input; int num1 = -1; int num2 = -1; // 遍历输入的字符串,找出两个数字字符 for (int i = 0; i < n; ++i) { if (input[i] >= '0' && input[i] <= '9') { if (num1 == -1) { // 将字符数字转换为对应的数值 num1 = input[i] - '0'; } else { num2 = input[i] - '0'; break; } } } // 计算两个数字的和 int sum = num1 + num2; // 输出结果 std::cout << sum << std::endl; return 0; } ``` 代码解释 1. 输入部分: - 首先使用 `std::cin >> n;` 读取一个正整数 `n`,它代表接下来要输入的字符数量。 - 然后使用 `std::cin >> input;` 读取 `n` 个字符,并将它们存储在字符串 `input` 中。 2. 变量声明: - 定义两个整数变量 `num1` 和 `num2`,初始值都设为 `-1`,用于存储找到的两个数字字符对应的数值。 3. 遍历字符串: - 使用 `for` 循环遍历输入的字符串 `input`。 - 对于每个字符,检查它是否是数字字符(即其 ASCII 码值在 `'0'` 到 `'9'` 之间)。 - 如果 `num1` 还未被赋值(即 `num1 == -1`),则将当前数字字符转换为对应的数值并赋值给 `num1`。 - 如果 `num1` 已经有值了,将当前数字字符转换为对应的数值并赋值给 `num2`,然后使用 `break` 语句跳出循环。 4. 计算和输出: - 将 `num1` 和 `num2` 相加,得到它们的和 `sum`。 - 使用 `std::cout << sum << std::endl;` 输出结果。 复杂度分析 - 时间复杂度:$O(n)$,其中 $n$ 是输入字符串的长度。因为只需要对输入字符串进行一次遍历。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 636点数解答 | 2025-12-05 19:36:52]
- C++实现读取数字并输出最小值的代码及解释(字节豆包 | 113点数解答 | 2026-03-20 19:32:56)17
- C++ 实现:精准统计给定范围 [L, R] 内数字 2 出现的次数及代码详解(字节豆包 | 401点数解答 | 2026-02-05 21:17:05)46
- C++实现:统计[L, R]范围内数字2出现的次数及代码详解(字节豆包 | 489点数解答 | 2026-02-07 17:12:26)56
- C++实现n×n图案输出:中间行'#'其余'*',开发需注意三点!(字节豆包 | 265点数解答 | 2026-01-16 19:06:25)52
- C++实现输出指定奇数阶中间行带#的矩形图案(字节豆包 | 267点数解答 | 2026-02-14 19:34:03)30
- C++实现输出指定奇数阶中间为#其余为*的方阵(字节豆包 | 385点数解答 | 2026-02-25 16:20:13)24
- C++实现奇数阶矩阵中间行特殊字符输出(DeepSeek | 261点数解答 | 2026-02-28 10:55:53)25
- C++实现特定图案输出的代码示例与开发建议(字节豆包 | 604点数解答 | 2026-03-07 19:39:05)17
- C++实现特定图案输出及开发建议(字节豆包 | 476点数解答 | 2026-03-07 19:39:38)25
- C++实现输出n行n列特定图案(字节豆包 | 352点数解答 | 2026-03-20 19:10:14)32
- C++实现输出指定奇数阶中间为#的矩形图案(字节豆包 | 380点数解答 | 2026-03-20 19:14:24)19
- 计算区间 n 到 m 中数字 x 出现次数的 Python 实现与详解(字节豆包 | 289点数解答 | 2025-12-07 17:14:59)80