C++实现输出所有aabb四位数及开发要点
这是一个经典的C++编程题,我们需要找出所有形如 `aabb` 的四位数。`aabb` 意味着前两位相同,后两位相同,但前两位和后两位可以相同也可以不同。范围是 1000 到 9999。 ## 🧮 问题分析 - **四位数范围**:1000 ~ 9999 - **形如 aabb**:千位和百位相同(a),十位和个位相同(b) - **包含 aaaa**:即 a == b 的情况,如 1111, 2222 等 ## 💻 解决方案 最简单的做法是**枚举所有四位数**,检查每个数是否满足 `aabb` 格式。我们有两种实现思路: ### 方法一:逐位拆分检查 ```cpp #include <iostream> using namespace std; int main() { for (int num = 1000; num <= 9999; num++) { int a = num / 1000; // 千位 int b = (num / 100) % 10; // 百位 int c = (num / 10) % 10; // 十位 int d = num % 10; // 个位 if (a == b && c == d) { cout << num << endl; } } return 0; } ``` ### 方法二:直接构建 aabb(更高效) 因为 a 和 b 都只能是 0-9,但 a 不能为 0(否则不是四位数),所以: ```cpp #include <iostream> using namespace std; int main() { for (int a = 1; a <= 9; a++) { // 千位不能为0 for (int b = 0; b <= 9; b++) { // 十位可以为0 int num = a * 1100 + b * 11; // aabb 组合 cout << num << endl; } } return 0; } ``` ## 🔍 详细解释 **方法一** 简单直观,但效率略低(检查 9000 个数)。 **方法二** 只生成 9×10=90 个数,效率更高,且代码更简洁。 **公式推导**: - 千位和百位都是 a,所以高位贡献 `a * 1000 + a * 100 = a * 1100` - 十位和个位都是 b,所以低位贡献 `b * 10 + b = b * 11` - 总和:`num = a * 1100 + b * 11` **注意**:a 从 1 开始(保证四位数),b 从 0 开始(允许类似 1100 这样的数)。 ## 📝 运行结果(节选) ``` 1100 1111 1122 ... 9988 9999 ``` 共输出 **90** 行。 ## ⚙️ 编译与运行 如果你使用 g++ 编译器: ```bash g++ -o solution solution.cpp ./solution ``` ## 💡 开发建议 1. **边界处理**:明确 `a` 的取值范围,避免出现 `0110` 这类非四位数。 2. **效率优化**:如果数据规模大,优先使用构造法而非全量枚举。 3. **代码可读性**:变量命名要清晰(如用 `a`、`b` 表示数字位),并添加注释。 4. **测试用例**:验证 `1111`(a==b 的情况)和 `1100`(b==0 的情况)是否包含在内。 5. **格式输出**:确认每行一个数字,且无额外空格或换行问题。 ######[AI写代码神器 | 847点数解答 | 2026-08-28 20:34:06]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)571
- 工程师必知:软件系统用户文档编写九大要点揭秘(百度文心 | 350点数解答 | 2023-11-09 18:23:53)325
- C++ 求解:最少操作次数让字符串无子串 “friend” (字节豆包 | 153点数解答 | 2024-08-17 16:29:54)570
- C++ 求解:最少操作次数让字符串不再含 “friend” 子串!(讯飞星火 | 260点数解答 | 2024-08-17 16:30:49)569
- Python 巧解:最少操作次数让字符串告别“friend”子串(字节豆包 | 139点数解答 | 2024-08-18 13:04:14)500
- Python 高效求解:让数列变身接龙数列最少需删多少数?(字节豆包 | 493点数解答 | 2025-12-13 10:25:59)125
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)165
- 无名杀1.11.0:三国杀“韬晦”技能代码详解,开发避坑指南! (百度文心 | 1168点数解答 | 2026-01-12 21:02:27)217
- 深入探究:n 位格雷码中编号 k 二进制串的求解算法与实现(DeepSeek | 726点数解答 | 2026-01-13 12:31:37)150
- 使用C++实现S国军用密码破译及信息翻译(字节豆包 | 447点数解答 | 2026-05-24 15:57:19)67
- C++实现字符串字符转换最小操作次数问题求解(字节豆包 | 557点数解答 | 2026-07-26 14:51:19)28
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)483