综合百科

c语言水仙花数

水仙花数是指一个三位数,它的每个位上的数字的立方和等于它本身。例如,153就是一个水仙花数,因为1³+5³+3³=153。在C语言中,可以通过编写程序来计算出所有的水仙花数。

首先,我们需要了解如何将一个三位数分解成它的个位、十位和百位数字。可以使用除法和取余运算符来实现这个目标。例如,要将一个三位数123分解成它的个位、十位和百位数字,可以使用以下代码:

int a = 123;

int b = a % 10; // b=3

int c = a / 10 % 10; // c=2

int d = a / 100; // d=1

接下来,我们可以使用循环来遍历所有的三位数,并判断它是否是水仙花数。具体来说,我们可以使用嵌套的for循环,第一个循环遍历所有可能的百位数字,第二个循环遍历所有可能的十位数字和个位数字。然后,我们可以计算出当前的三位数,检查它是否等于它的各位数字的立方和。如果是水仙花数,我们可以将它打印出来。

以下是一个完整的C语言程序,用于计算所有的水仙花数:

#include

int main() {

int i, j, k, n;

for (i = 1; i <= 9; i++) {

for (j = 0; j <= 9; j++) {

for (k = 0; k <= 9; k++) {

n = i * 100 + j * 10 + k;

if (n == i*i*i + j*j*j + k*k*k) {

printf("%d\n", n);

}

}

}

}

return 0;

}

在这个程序中,我们使用三个嵌套的for循环来遍历所有的三位数。变量i表示百位数字,变量j表示十位数字,变量k表示个位数字。我们计算出当前的三位数n,并使用if语句检查它是否等于它的各位数字的立方和。如果是水仙花数,我们就将它打印出来。

需要注意的是,上面的程序只能计算出所有的三位水仙花数。如果要计算其他位数的水仙花数,需要相应地修改程序。此外,由于水仙花数的数量很少,我们可以使用更加高效的算法来计算它们,而不必遍历所有的可能的三位数。