【用C语言编写判断是否是水仙花数的程序】在编程学习中,水仙花数是一个常见的入门问题。水仙花数(Narcissistic number)也被称为自恋数、自幂数或阿姆斯壮数(Armstrong number),是指一个n位数,其各位数字的n次幂之和等于它本身。例如:153 是一个三位数的水仙花数,因为 1³ + 5³ + 3³ = 153。
本文将介绍如何使用C语言编写一个程序来判断一个数是否为水仙花数,并以总结加表格的形式展示结果。
一、水仙花数的定义
类型 | 说明 |
一位数 | 所有1位数都是水仙花数(如1~9) |
三位数 | 满足 a³ + b³ + c³ = abc 的三位数 |
四位数 | 满足 a⁴ + b⁴ + c⁴ + d⁴ = abcd 的四位数 |
n位数 | 满足各位数字的n次幂之和等于该数 |
二、C语言实现思路
1. 输入一个整数
用户输入一个整数,程序读取该数。
2. 计算位数
通过循环或数学方法确定该数的位数。
3. 分解各位数字
将每一位数字提取出来。
4. 计算各位数字的n次幂之和
将每一位数字的n次幂相加。
5. 比较总和与原数
如果总和等于原数,则是水仙花数;否则不是。
三、C语言代码示例
```c
include
include
int isNarcissistic(int num) {
int original = num;
int sum = 0;
int digits = 0;
// 计算位数
while (num > 0) {
num /= 10;
digits++;
}
num = original;
// 分解各位并计算n次幂之和
while (num > 0) {
int digit = num % 10;
sum += pow(digit, digits);
num /= 10;
}
return (sum == original);
}
int main() {
int number;
printf("请输入一个整数: ");
scanf("%d", &number);
if (isNarcissistic(number)) {
printf("%d 是水仙花数。\n", number);
} else {
printf("%d 不是水仙花数。\n", number);
}
return 0;
}
```
四、测试结果(部分示例)
输入值 | 是否是水仙花数 | 说明 |
1 | 是 | 一位数均为水仙花数 |
153 | 是 | 三位数水仙花数 |
370 | 是 | 三位数水仙花数 |
123 | 否 | 不满足条件 |
9474 | 是 | 四位数水仙花数 |
8208 | 是 | 四位数水仙花数 |
54748 | 是 | 五位数水仙花数 |
五、总结
通过C语言编写判断水仙花数的程序,可以很好地理解循环、数组、数学运算等基础语法。程序的核心在于正确计算数字的位数,并对每一位进行幂运算。通过这种方式,我们不仅能验证一个数是否为水仙花数,还能进一步扩展程序以查找所有范围内的水仙花数。
希望本文能帮助你更好地掌握C语言的基础应用和逻辑思维。