C++数字字符串循环位移(+1)实现与注意事项
好的,这是一个典型的字符串字符映射转换问题。根据你的要求,我会用 **C++** 实现。 ## 💡 问题分析 我们需要将一个由数字字符组成的字符串,每个数字都 `+1`,并且要考虑边界情况 `9` 变成 `0`。本质上是一个 `(原数字 + 1) % 10` 的运算。 你提供的提示公式很精妙: ```cpp s[i] = (s[i] - '0' + 1) % 10 + '0'; ``` 关键步骤分解: 1. `s[i] - '0'` → 将字符数字转为整型数字 (如 `'3' -> 3`) 2. `+ 1` → 加1 3. `% 10` → 对 10 取模,使得 `9 + 1 = 10` 变为 `0` 4. `+ '0'` → 再转回数字字符 ## 🧩 完整代码实现 ```cpp #include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; // 读入数字字符串 for (int i = 0; i < s.size(); i++) { // 每个字符循环移位 s[i] = (s[i] - '0' + 1) % 10 + '0'; } cout << s << endl; // 输出结果 return 0; } ``` ## ✅ 代码说明 | 部分 | 说明 | |------|------| | `cin >> s` | 读取输入的一行数字字符串,不含空格 | | `s.size()` | 获取字符串长度 | | `s[i] - '0'` | 将字符 `'0'~'9'` 转为整数 `0~9` | | `% 10` | 处理 `9 -> 0` 的循环 | | `+ '0'` | 再转回字符 | | `cout << s` | 输出修改后的字符串 | ## ⚠️ 开发建议与常见陷阱 1. **不要直接用 ASCII 值+1**:例如 `'9' + 1` 会变成 `':'`(ASCII 58),不是 `'0'`。所以务必使用取模运算。 2. **注意输入可能有换行问题**:`cin >> s` 会忽略空格和换行,只读取连续的数字串。如果题目要求读取整行含空格的,则应使用 `getline(cin, s)`。 3. **边界测试**:建议测试极端情况: - 输入 `"0"` → 输出 `"1"` - 输入 `"9"` → 输出 `"0"` - 输入 `"000"` → 输出 `"111"` - 输入 `"999"` → 输出 `"000"` 4. **代码可扩展性**:如果题目改为“向后移动 k 位”,只需要将公式中的 `+1` 改为 `+k`,并仍使用 `% 10` 即可。 ## 🧪 运行示例 **输入**: ``` 789 ``` **处理过程**: - `'7'` -> (7+1)%10=8 -> `'8'` - `'8'` -> (8+1)%10=9 -> `'9'` - `'9'` -> (9+1)%10=0 -> `'0'` **输出**: ``` 890 ``` ######[AI写代码神器 | 786点数解答 | 2026-06-21 20:04:22]
- C++ 求解:最少操作次数让字符串无子串 “friend” (字节豆包 | 153点数解答 | 2024-08-17 16:29:54)515
- C++ 求解:最少操作次数让字符串不再含 “friend” 子串!(讯飞星火 | 260点数解答 | 2024-08-17 16:30:49)505
- Python 巧解:最少操作次数让字符串告别“friend”子串(字节豆包 | 139点数解答 | 2024-08-18 13:04:14)442
- 3414 数字游戏:Python 求解 8 位 01 字符串中 1 的个数 (字节豆包 | 106点数解答 | 2024-10-27 14:23:27)465
- 巧用字符添加,计算字符串中“our”最大数量及开发注意要点(DeepSeek | 376点数解答 | 2025-10-30 19:20:06)118
- C 语言实现:处理字符串生成最多 “our” 串,附代码及关键开发注意点 (DeepSeek | 257点数解答 | 2025-10-30 19:20:36)172
- C++ 实现:精准统计给定范围 [L, R] 内数字 2 出现的次数及代码详解(字节豆包 | 401点数解答 | 2026-02-05 21:17:05)93
- C++实现:统计[L, R]范围内数字2出现的次数及代码详解(字节豆包 | 489点数解答 | 2026-02-07 17:12:26)108
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)474
- Python 正则表达式:从“文本+数字+顿号”字符串中精准提取内容(字节豆包 | 218点数解答 | 2024-11-07 12:17:47)245
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)549
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)422