C语言编程:寻找水仙花数

发布网友 发布时间:2022-04-20 02:47

我来回答

2个回答

热心网友 时间:2023-08-13 18:32

以下是使用 C 语言 do-while 循环来求解三位数中的水仙花数的代码:

```c
#include <stdio.h>
#include <math.h>

int main() {
int i = 100;
do {
int a = i / 100;
int b = i / 10 % 10;
int c = i % 10;
if (i == pow(a, 3) + pow(b, 3) + pow(c, 3)) {
printf("%d ", i);
}
i++;
} while (i < 1000);
return 0;
}
```

在上面的代码中,我们使用 do-while 循环来遍历三位数,然后对每个三位数进行水仙花数的判断。其中,使用了三个变量 `a`、`b`、`c` 分别表示当前数值的百位、十位、个位数字。然后判断该三位数是否等于各个数字的立方和,如果是,就打印该数值。

需要注意的是,在计算立方的时候需要使用 `pow` 函数,该函数需要引用 math.h 头文件。

示例输出:

```
153 370 371 407
```

希望这个代码可以帮助你实现你所需的功能。

热心网友 时间:2023-08-13 18:33

水仙花数是指一个 n 位正整数(n ≥ 3),其各个位上数字的 n 次方之和等于它本身。例如,153 是一个水仙花数,因为 $1^3 + 5^3 + 3^3 = 153$。

以下是使用 do-while 循环求解三位数的水仙花数的 C 语言程序:

```c
#include <stdio.h>

int main() {
int num, digit, sum;
printf("三位数的水仙花数有:\n");
num = 100; // 从100开始枚举
do {
digit = num % 10; // 取出个位数字
sum = digit * digit * digit; // 计算各位数字的立方和
digit = num / 10 % 10; // 取出十位数字
sum += digit * digit * digit; // 加上十位数字的立方
digit = num / 100; // 取出百位数字
sum += digit * digit * digit; // 加上百位数字的立方
if (sum == num) { // 如果等于该数本身,输出该数
printf("%d\n", num);
}
num++;
} while (num < 1000); // 从100枚举到999
return 0;
}
```

在这个程序中,我们定义了一个整型变量 num 来作为循环计数器,初始值为 100。然后使用 do-while 循环来枚举所有的三位数。

对于每个数,我们依次取出它的各位数字,计算它们的立方和。如果立方和等于该数本身,则说明该数是一个水仙花数,将其输出。

最后,我们将 num 的值加 1,继续下一次循环,直到枚举完所有的三位数。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com