【c语言水仙花数】在C语言编程中,“水仙花数”是一个经典的数学问题,常用于练习循环结构和条件判断。本文将对“水仙花数”的概念、判断方法以及相关代码进行总结,并通过表格形式展示结果。
一、什么是水仙花数?
水仙花数(Narcissistic number),又称自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数,是指一个n位数,其各位数字的n次幂之和等于该数本身。
例如:
- 153 是一个三位数,1³ + 5³ + 3³ = 153
- 370 是一个三位数,3³ + 7³ + 0³ = 370
常见的水仙花数包括:153、370、371、407 等。
二、如何判断一个数是否为水仙花数?
判断步骤如下:
1. 确定位数:计算该数有多少位。
2. 分解每一位数字:将每个数字提取出来。
3. 计算各数字的n次幂之和。
4. 比较总和与原数:若相等,则是水仙花数。
三、C语言实现思路
使用 `for` 循环遍历一定范围内的数字(如 100 到 999),逐个判断是否为水仙花数。
示例代码片段:
```c
include
include
int main() {
int num, original, remainder, n = 0, sum = 0;
for (num = 100; num <= 999; num++) {
original = num;
n = 0;
sum = 0;
// 计算位数
while (original != 0) {
original /= 10;
++n;
}
original = num;
// 计算各数字的n次幂之和
while (original != 0) {
remainder = original % 10;
sum += pow(remainder, n);
original /= 10;
}
if (sum == num)
printf("%d\n", num);
}
return 0;
}
```
四、常见水仙花数一览表
| 数字 | 是否为水仙花数 | 说明 |
| 153 | 是 | 1³ + 5³ + 3³ = 153 |
| 370 | 是 | 3³ + 7³ + 0³ = 370 |
| 371 | 是 | 3³ + 7³ + 1³ = 371 |
| 407 | 是 | 4³ + 0³ + 7³ = 407 |
| 123 | 否 | 1³ + 2³ + 3³ = 36 ≠ 123 |
| 947 | 否 | 9³ + 4³ + 7³ = 1160 ≠ 947 |
五、总结
“c语言水仙花数”是一个基础但重要的编程练习题,能够帮助初学者理解循环、条件判断和数学运算的结合使用。通过编写程序判断水仙花数,可以加深对数组、指针和函数调用的理解。
掌握这一知识点后,可以尝试扩展到更高位数的水仙花数(如四位、五位等),进一步提升逻辑思维和编程能力。


