用c语言判断水仙花数
时间: 2025-06-05 20:08:17 浏览: 20
### C语言实现判断水仙花数的方法
以下是基于提供的引用内容以及标准的C语言语法编写的完整代码示例,用于判断一个三位数是否为水仙花数:
```c
#include <stdio.h>
int main() {
int x, a, b, c;
// 输入一个三位数
printf("请输入一个三位数:");
scanf("%d", &x);
// 计算百位、十位和个位上的数值
a = x / 100; // 百位
b = (x / 10) % 10; // 十位
c = x % 10; // 个位
// 判断条件:如果每位数字的立方和等于原数,则它是水仙花数
if (x == a * a * a + b * b * b + c * c * c) {
printf("%d 是水仙花数。\n", x);
} else {
printf("%d 不是水仙花数。\n", x);
}
return 0;
}
```
#### 解析
上述代码实现了以下逻辑:
- 用户输入一个三位整数 `x`。
- 使用取模运算 `%` 和除法 `/` 提取出该数的百位 (`a`)、十位 (`b`) 和个位 (`c`) 数字[^1]。
- 如果满足 \(a^3 + b^3 + c^3 = x\) 的条件,则判定此数为水仙花数;否则不是[^2]。
此外,还可以通过封装函数的方式提高代码可读性和重用性。例如,在引用[4]的基础上设计如下版本:
```c
#include <stdio.h>
#include <stdbool.h>
// 定义判断水仙花数的函数
bool fun(int num) {
int a = num / 100; // 取得百位
int b = (num / 10) % 10; // 取得十位
int c = num % 10; // 取得个位
return (a * a * a + b * b * b + c * c * c == num); // 返回布尔值
}
int main() {
int n;
// 获取用户输入
printf("请输入一个三位数:");
scanf("%d", &n);
// 调用函数并输出结果
if (fun(n)) {
printf("%d 是水仙花数。\n", n);
} else {
printf("%d 不是水仙花数。\n", n);
}
return 0;
}
```
这种写法利用了一个单独的函数 `fun()` 来完成核心计算部分,使主程序更加简洁明了[^3]。
---
阅读全文
相关推荐


















