输出所有水仙花数c语言
时间: 2025-05-25 22:03:58 浏览: 23
### 使用C语言实现输出所有水仙花数的方法
水仙花数是指一个三位数,其各个位上的数字立方之和等于该数本身。以下是通过C语言编写的程序来找出所有的水仙花数。
#### 方法一:基于循环与条件判断
此方法利用`for`循环遍历100到999之间的所有三位数,并分别提取百位、十位和个位的数值,计算它们的立方和并与原始数字比较。如果两者相等,则打印该数字[^3]。
```c
#include<stdio.h>
int main(){
int i, j, n, k;
for(n=100; n<1000; n++){
i = n / 100; // 获取百位
j = n / 10 % 10; // 获取十位
k = n % 10; // 获取个位
if(n == i*i*i + j*j*j + k*k*k){ // 判断是否为水仙花数
printf("%-5d", n);
}
}
printf("\n");
return 0;
}
```
#### 方法二:简化版逻辑处理
另一种方式同样采用三重嵌套结构分解数字,但更注重代码简洁性和可读性。这里直接使用模运算 `%` 和除法 `/` 来分离每位数字,并验证这些数字的三次幂总和是否匹配原数[^4]。
```c
#include<stdio.h>
int main() {
printf("输出水仙花数:\n");
for (int i = 100; i <= 999; i++) { // 遍历所有三位数
int a = i % 10; // 提取个位
int b = (i / 10) % 10; // 提取十位
int c = i / 100; // 提取百位
if (i == a * a * a + b * b * b + c * c * c) {
printf("%d\t", i); // 如果符合条件则输出
}
}
return 0;
}
```
以上两种方法均能有效找到并显示全部的水仙花数。第一种方法较为直观易懂,而第二种方法更加紧凑高效。
#### 运行结果展示
运行上述任一段代码后,将会得到如下输出:
```
输出水仙花数:
153 370 371 407
```
这四个数字即为所求的所有三位水仙花数。
阅读全文
相关推荐

















