输入两个正整数m和n(1<=m,n<=1000),输出m到n之间的所有满足各位数字的立方和等于它本身的数,所谓的“水仙花数”。例如153的各位数字的立方和是13+53+33=153。用c语言
时间: 2024-02-06 14:12:26 浏览: 143
以下是用 C 语言实现的代码:
```c
#include <stdio.h>
int main() {
int m, n, i, j, k, sum;
printf("请输入两个正整数m和n(m<=n):");
scanf("%d%d", &m, &n);
printf("m到n之间的水仙花数有:");
for (i = m; i <= n; i++) {
j = i / 100; // 百位数
k = i % 100 / 10; // 十位数
sum = j * j * j + k * k * k + (i % 10) * (i % 10) * (i % 10); // 个位数
if (sum == i) {
printf("%d ", i);
}
}
return 0;
}
```
程序首先读取用户输入的两个正整数m和n,然后使用一个for循环遍历m到n之间的所有整数。在循环体内,程序使用数学运算分别求出当前整数的百位数、十位数和个位数,然后根据水仙花数的定义计算它们的立方和。如果立方和等于当前整数,说明它是一个水仙花数,程序则使用printf函数输出它。注意,程序中使用了三个int类型的变量j、k和sum,分别表示百位数、十位数和立方和,这些变量的值都是在循环体内计算的。
相关问题
用c语言编写程序:输入两个正整数 m 和 n(1<=m, n<=1000),输出 m 到 n之间的所有满足各位数字的立方和等于它本身的数
好的,以下是用C语言编写的程序,可以实现输入两个正整数 m 和 n(1<=m, n<=1000),输出 m 到 n之间的所有满足各位数字的立方和等于它本身的数。
```c
#include <stdio.h>
int main() {
int m, n;
printf("请输入两个正整数m和n(1<=m, n<=1000):\n");
scanf("%d %d", &m, &n);
for (int i = m; i <= n; i++) {
int num = i, sum = 0;
while (num > 0) {
int digit = num % 10;
sum += digit * digit * digit;
num /= 10;
}
if (sum == i) {
printf("%d\n", i);
}
}
return 0;
}
```
程序中的思路是:遍历m到n之间的所有整数,对于每个整数,将它的各位数字的立方和累加,如果等于它本身,则输出该数。
输入一个正整数repeat(0<repeat<10),做repeat次下列运算:读入2个正整数m和n(1<=m,n<=1000),输出m和n之间所有满足各位数字的立方和等于它本身的数。...
好的,这是一道关于寻找满足条件的数的问题。我会给出一个示例代码,你可以参考一下:
```python
import math
repeat = int(input())
for i in range(repeat):
m, n = map(int, input().split())
for num in range(m, n+1):
digits = str(num)
sum_of_cubes = 0
for digit in digits:
sum_of_cubes += int(digit)**3
if sum_of_cubes == num:
print(num)
```
这段代码中,我们首先读入一个整数 `repeat`,表示后面会有 `repeat` 组输入数据。然后我们使用一个循环来处理每一组数据。对于每一组数据,我们读入两个整数 `m` 和 `n`,表示要在 `m` 和 `n` 之间寻找符合条件的数。
接下来,我们使用一个循环来遍历 `m` 到 `n` 之间的每一个数。对于每一个数,我们将其各位数字的立方和计算出来,然后判断是否等于该数本身。如果相等,就将该数输出。
注意,我们可以将一个整数转化为字符串,然后逐位取出其每一位数字。这里使用了 Python 的 `map` 函数和 `split` 方法来读入两个整数。
希望这个示例代码能够帮助到你!
阅读全文