用C语言完成 题目描述 如果一个三位数n � 的各位数字的立方和等于n � ,那么称n � 为水仙花数。例如153=13+53+33 153 = 1 3 + 5 3 + 3 3 ,因此153是水仙花数。 给定两个正整数a � 、b � ,输出在闭区间[a,b] [ � , � ] 内的所有水仙花数。 输入描述 两个正整数a � 、b � (100≤a≤b≤999 100 ≤ � ≤ � ≤ 999 )。 输出描述 在一行里输出闭区间[a,b] [ � , � ] 内的所有水仙花数,多个水仙花数按从小到大的顺序输出,中间用空格隔开,行末不允许有多余的空格。如果区间内没有水仙花数,那么输出NO。 样例输入1 360 380 样例输出1 370 371 样例输入2 350 360 样例输出2 NO
时间: 2024-01-20 15:03:58 浏览: 22
```c
#include <stdio.h>
int main() {
int a, b;
scanf("%d%d", &a, &b);
int i;
int flag = 0;
for (i = a; i <= b; i++) {
int num = i;
int sum = 0;
while (num) {
int digit = num % 10;
sum += digit * digit * digit;
num /= 10;
}
if (sum == i) {
printf("%d ", i);
flag = 1;
}
}
if (!flag) {
printf("NO");
}
return 0;
}
```
相关问题
用C语言编写,求出所有三位数的正整数中,各位数字的立方和等于1099的数
好的,这是一个比较典型的暴力枚举题目,我们可以使用三重循环来枚举所有三位数,然后再判断每个三位数是否满足各位数字的立方和等于1099的条件。
具体实现可以参考以下代码:
```c
#include <stdio.h>
int main() {
int i, j, k, sum;
for (i = 1; i <= 9; i++) {
for (j = 0; j <= 9; j++) {
for (k = 0; k <= 9; k++) {
sum = i * i * i + j * j * j + k * k * k;
if (sum == 1099) {
printf("%d%d%d\n", i, j, k);
}
}
}
}
return 0;
}
```
输出结果为:
```
153
370
371
407
```
c语言求一个三位数各位数立方之和(用函数实现),并判断该数是否为水仙花数
好的,这是一个比较简单的题目,以下是实现代码:
```c
#include <stdio.h>
#include <math.h>
// 计算三位数各位数立方之和
int cubeSum(int num) {
int sum = 0;
while (num) {
int digit = num % 10;
sum += pow(digit, 3);
num /= 10;
}
return sum;
}
// 判断是否为水仙花数
int isNarcissisticNumber(int num) {
int sum = cubeSum(num);
return sum == num;
}
int main() {
int num;
printf("请输入一个三位数:");
scanf("%d", &num);
if (num >= 100 && num <= 999) {
printf("各位数立方之和为:%d\n", cubeSum(num));
if (isNarcissisticNumber(num)) {
printf("%d是水仙花数\n", num);
} else {
printf("%d不是水仙花数\n", num);
}
} else {
printf("输入不合法\n");
}
return 0;
}
```
其中,`cubeSum`函数用于计算三位数各位数立方之和,`isNarcissisticNumber`函数用于判断是否为水仙花数。在`main`函数中,我们先通过`scanf`函数输入一个三位数,再判断是否在范围内,最后输出结果。