您现在的位置是:首页 > 严选问答网站首页严选问答
用C语言编写判断是否是水仙花数的程序
- 编辑:伊叶树
- 2025-10-25 23:03:25
- 来源:网易
【用C语言编写判断是否是水仙花数的程序】在编程学习中,水仙花数是一个经典的数学问题,常用于练习条件判断和循环结构。水仙花数(Narcissistic number)也称为自恋数、自幂数或阿姆斯壮数,是指一个n位数,其各位数字的n次幂之和等于该数本身。
例如:153 是一个 3 位数,1³ + 5³ + 3³ = 153,因此它是水仙花数。
一、水仙花数的基本概念
| 概念 | 说明 | 
| 水仙花数 | 一个 n 位数,其各位数字的 n 次幂之和等于该数本身 | 
| 举例 | 153、370、371、407 等为 3 位数的水仙花数 | 
| 特点 | 需要计算每一位数字的 n 次方并求和 | 
二、C语言实现思路
1. 输入一个整数:用户输入一个数,可能是任意位数。
2. 确定位数:通过循环或数学方法确定该数的位数 n。
3. 分解每一位数字:将每一位数字提取出来。
4. 计算各数字的 n 次方之和。
5. 比较总和与原数:若相等,则为水仙花数,否则不是。
三、代码示例
```c
include 
include 
int main() {
int num, originalNum, remainder, n = 0, sum = 0;
printf("请输入一个整数: ");
scanf("%d", &num);
originalNum = num;
// 计算位数
while (originalNum != 0) {
originalNum /= 10;
++n;
}
originalNum = num;
// 计算各位数字的n次方之和
while (originalNum != 0) {
remainder = originalNum % 10;
sum += pow(remainder, n);
originalNum /= 10;
}
if (sum == num)
printf("%d 是水仙花数。\n", num);
else
printf("%d 不是水仙花数。\n", num);
return 0;
}
```
四、测试结果示例
| 输入数值 | 是否为水仙花数 | 说明 | 
| 153 | 是 | 1³+5³+3³=153 | 
| 370 | 是 | 3³+7³+0³=370 | 
| 407 | 是 | 4³+0³+7³=407 | 
| 123 | 否 | 1³+2³+3³=36 ≠ 123 | 
| 9474 | 是 | 9⁴+4⁴+7⁴+4⁴=9474 | 
五、总结
通过 C 语言编写判断水仙花数的程序,可以很好地锻炼逻辑思维和对循环、条件语句的理解。掌握这一过程后,可以进一步扩展到其他类型的数字判断,如“阿姆斯特朗数”、“完全数”等。理解并实现水仙花数的判断,是学习编程的一个良好起点。