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,继续下一次循环,直到枚举完所有的三位数。