#include <stdio.h>

int main() { int n, a, b, c; n = 100;

while (n < 1000) {
    a = n / 100;
    b = (n / 10) % 10;
    c = n % 10;

    if (n == a * a + b * b + c * c) {
        printf('%d ', n);
    }

    n++;
}


return 0;

}

你提供的代码已经是一个可以求解水仙花数的示例。这段代码会遍历从 100 到 999 的所有三位数,判断每个数是否满足水仙花数的条件,如果满足则输出。

如果你想修改代码以满足其他要求,例如求解更大范围的水仙花数,你可以按照以下方式进行修改:

#include <stdio.h>

int main() {
    int n, a, b, c, d;
    n = 100;

    while (n < 10000) { // 修改范围为四位数
        a = n / 1000;   // 获取千位数
        b = (n / 100) % 10;  // 获取百位数
        c = (n / 10) % 10;   // 获取十位数
        d = n % 10;   // 获取个位数

        if (n == a * a * a * a + b * b * b * b + c * c * c * c + d * d * d * d) {
            printf('%d ', n);
        }

        n++;
    }

    return 0;
}

在上述代码中,我做了以下修改:

  1. 修改了循环的范围,将 while (n < 1000) 修改为 while (n < 10000),这样循环将遍历 100 到 9999 的四位数。

  2. 添加了变量 d,用于获取四位数的个位数。

  3. 在判断条件 n == a * a + b * b + c * c + d * d 中,将幂运算 ^ 替换为乘法 *,以计算四位数的每个位的立方。

这样修改后的代码就可以求解四位数的水仙花数了。你可以根据需要修改范围和位数,以满足自己的要求。

C语言求解水仙花数:代码示例及扩展

原文地址: https://www.cveoy.top/t/topic/cDy1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录