C++ 水仙花数完整代码实现与解析
好的,我们先来一步步完成这个C++代码,找出所有的3位水仙花数。 ## 🧩 题目回顾 **水仙花数**:一个三位数,其各位数字的立方和等于该数本身。 例如: `370 = 3³ + 7³ + 0³` 我们要找100~999之间所有满足条件的数。 --- ## 🔧 补全并解析代码 我会在您给定的代码框架中按步骤填写缺失的部分,并解释每一行的作用。 ### ✅ 完整代码示例 ```cpp #include <iostream> using namespace std; int main() { // 遍历所有三位数:100 到 999 for (int i = 100; i <= 999; i++) { // 三位数的个位 int a = i % 10; // 三位数的十位 int b = (i / 10) % 10; // 三位数的百位 int c = i / 100; // 判断是否为水仙花数 if (a*a*a + b*b*b + c*c*c == i) { cout << i << " "; } } return 0; } ``` ### 📌 关键部分解释 - **`int a = i % 10;`** 取个位:数 `i` 除以10的余数就是它的个位数字。 - **`int b = (i / 10) % 10;`** 取十位:先除以10去掉个位,再取余数得到新的个位(即原来的十位)。 - **`int c = i / 100;`** 取百位:除以100取整,得到百位数字(因为i是三位数,范围100~999,所以直接除100得到百位数)。 - **`if (a*a*a + b*b*b + c*c*c == i)`** 检查各位立方和是否等于原数 `i`。 --- ## 🖨️ 输出结果 运行后会得到: ``` 153 370 371 407 ``` 这四个数就是所有的3位水仙花数。 --- ## 💡 开发建议 1. **注意整数范围**:循环变量 `i` 从100到999,确保只处理三位数。 2. **分解位数技巧**: - 个位:`i % 10` - 十位:`(i / 10) % 10` - 百位:`i / 100` 这种分解方式通用且性能高。 3. **使用 `*` 乘法代替 `pow` 函数**: `a*a*a` 比 `pow(a, 3)` 更快、更可控(避免浮点数精度问题)。 4. **输出格式**:用 `" "` 分隔,末尾不要换行,符合题目要求(输出样例中未要求换行)。 5. **可扩展思考**:如果要求任意位数(如4位数的“四叶玫瑰数”),可写成通用函数,提高复用性。 --- ## 🧠 常见陷阱(FAQ) | 陷阱 | 说明 | |------|------| | 把0当作个位时处理错误 | 例如 `i=100`,个位是0,`a*a*a` 没问题。 | | 只判断三位数 | 注意循环范围,不要包含100以下或999以上的数。 | | 使用 `pow()` 可能导致浮点误差 | 建议用整数乘法,确保精确。 | --- ## 📘 推荐阅读 - [C++ 运算符与表达式](https://en.cppreference.com/w/cpp/language/expressions) - 练习:修改代码找出“四叶玫瑰数”(4位数,每位四次方和等于本身)。 ######[AI写代码神器 | 852点数解答 | 2026-06-07 13:57:04]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)415
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)329
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)344
- C++ 实现我的世界基岩版:从简单框架到开发要点揭秘(字节豆包 | 182点数解答 | 2025-02-22 15:53:11)229
- C++ 实现完整斗地主:含洗牌、发牌与手牌展示,可按需扩展!(字节豆包 | 1028点数解答 | 2026-01-10 08:02:37)71
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)376
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)526
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)404
- iOS开发:手把手教你完整实现代理模式,含声明与实现步骤!(阿里通义 | 268点数解答 | 2023-11-08 00:39:55)286
- JavaScript 开发:用 Animation 实现自定义动画的简易教程 (阿里通义 | 333点数解答 | 2023-11-09 01:50:07)276
- Vue.js 与 Matter.js 碰撞:轻松实现物理模拟全攻略 (讯飞星火 | 522点数解答 | 2024-05-29 22:26:06)461
- JS实现移动端网页快捷键创建方式及注意事项(阿里通义 | 284点数解答 | 2024-06-05 19:02:59)290