水仙花数是指一个n位数,它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为1的3次方+5的3次方+3的3次方等于153。
要解决C语言的水仙花数问题,可以使用循环和条件判断来判断每个数是否是水仙花数。以下是一种解决方案:
#include <stdio.h>
#include <math.h>
int main() {
int num, originalNum, remainder, n = 0, result = 0;
printf("输入一个正整数:");
scanf("%d", &num);
originalNum = num;
// 计算输入数字的位数
while (originalNum != 0) {
originalNum /= 10;
++n;
}
originalNum = num;
// 检查是否为水仙花数
while (originalNum != 0) {
remainder = originalNum % 10;
result += pow(remainder, n);
originalNum /= 10;
}
if (result == num)
printf("%d 是水仙花数。\n", num);
else
printf("%d 不是水仙花数。\n", num);
return 0;
}
这段代码中,首先通过循环计算输入数字的位数。然后使用循环和取余运算符来逐位计算数字的n次幂之和。最后,通过条件判断来确定结果是否等于原始输入数字,从而确定是否为水仙花数。