酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

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]

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