c语言

c语言水仙花数问题怎么解决

小亿
213
2023-12-07 17:49:44
栏目: 编程语言

水仙花数是指一个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次幂之和。最后,通过条件判断来确定结果是否等于原始输入数字,从而确定是否为水仙花数。

0
看了该问题的人还看了