水仙花数(Narcissistic number),也被称为阿姆斯特朗数,是指一个n位正整数,其各位数字的n次幂之和等于该数本身。例如,153是一个水仙花数,因为\(1^3 + 5^3 + 3^3 = 153\)。
在C语言中,我们可以编写一个程序来找出所有三位数范围内的水仙花数。下面是一个简单的实现示例:
```c
include
include
int main() {
int num, originalNum, remainder, n = 0;
// 计算数字的位数
printf("三位数范围内的水仙花数:\n");
for(num = 100; num <= 999; num++) {
originalNum = num;
while (originalNum != 0) {
originalNum /= 10;
++n;
}
originalNum = num;
int sum = 0;
// 计算每位数字的n次幂之和
while (originalNum != 0) {
remainder = originalNum % 10;
sum += pow(remainder, n);
originalNum /= 10;
}
// 如果结果等于原数,则为水仙花数
if (sum == num) {
printf("%d\n", num);
}
// 重置变量
n = 0;
}
return 0;
}
```
这段代码首先定义了一个循环来遍历从100到999的所有三位数。对于每一个数,我们先计算它的位数n,然后计算每一位数字的n次幂之和,并将这个和与原始数字进行比较。如果它们相等,则该数字就是一个水仙花数。
编译并运行上述代码后,你会看到输出如下:
```
三位数范围内的水仙花数:
153
370
371
407
```
这三个数是三位数范围内仅有的水仙花数。通过这个程序,我们可以轻松地找到指定范围内的所有水仙花数。这样的程序不仅有助于理解水仙花数的概念,还展示了如何使用C语言中的循环、条件语句以及基本数学运算来解决问题。