C语言用函数计算水仙花数
时间: 2024-11-12 17:44:23 浏览: 14
在C语言中,计算水仙花数(也叫 narcissistic number 或者 Armstrong number)是指一个三位数(或更多位数),其各位数字的立方和等于该数本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。
下面是一个简单的C函数,用于判断一个给定的整数是否是水仙花数:
```c
#include <stdio.h>
int is_narcissistic(int num) {
int digits[4], sum = 0; // 假设最多支持4位数
if (num <= 0)
return 0;
// 分离每位数字
while (num > 0) {
digits[sum++] = num % 10;
num /= 10;
}
// 计算各位数字的立方和并比较
for (int i = 0; i < sum; ++i) {
if (digits[i] != pow(digits[i], 3)) {
return 0; // 如果有不符合条件的,立即返回0
}
}
return 1; // 所有位都满足条件,返回1表示是水仙花数
}
int main() {
int num;
printf("请输入一个三位数:");
scanf("%d", &num);
if (is_narcissistic(num))
printf("%d 是水仙花数。\n", num);
else
printf("%d 不是水仙花数。\n", num);
return 0;
}
```
在这个程序中,`is_narcissistic` 函数首先检查输入的数值是否大于0,然后通过除法和取余操作分离每一位数字,并计算它们的立方和。如果所有位的立方和与原数相等,则返回1,否则返回0。
阅读全文