C语言求解水仙花数:代码示例及扩展
#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;
}
在上述代码中,我做了以下修改:
-
修改了循环的范围,将
while (n < 1000)修改为while (n < 10000),这样循环将遍历 100 到 9999 的四位数。 -
添加了变量
d,用于获取四位数的个位数。 -
在判断条件
n == a * a + b * b + c * c + d * d中,将幂运算^替换为乘法*,以计算四位数的每个位的立方。
这样修改后的代码就可以求解四位数的水仙花数了。你可以根据需要修改范围和位数,以满足自己的要求。
原文地址: https://www.cveoy.top/t/topic/cDy1 著作权归作者所有。请勿转载和采集!