用C语言输入正整数n (n>100),在[n,999] 范围内寻找最小水仙花数。水仙花数是指一个三位数,怡好等于其各位上数字的立方和。 [输入格式] 一个三位正整数n。 [输出格式] 指定范围内最小水仙花数,如果没有则输出0。
时间: 2024-05-13 16:18:53 浏览: 81
以下是用C语言实现的代码:
```
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
for (int i = n; i <= 999; i++) {
int a = i / 100;
int b = (i / 10) % 10;
int c = i % 10;
if (i == a*a*a + b*b*b + c*c*c) {
printf("%d", i);
return 0;
}
}
printf("0");
return 0;
}
```
首先,我们读入一个三位正整数n。然后,我们从n开始遍历到999,对于每个数i,我们分解出它的百位数、十位数和个位数,计算它们的立方和,如果等于i本身,则i是一个水仙花数,我们输出它并结束程序。
如果遍历完了所有可能的数仍然没有找到水仙花数,我们输出0。
相关问题
输入正整数n(n>100),在n到999范围内寻找最小水仙花数C语言程序
```
#include <stdio.h>
int main() {
int n, i, a, b, c;
scanf("%d", &n);
for (i = n; i <= 999; i++) {
a = i / 100; // 百位数
b = (i / 10) % 10; // 十位数
c = i % 10; // 个位数
if (i == a*a*a + b*b*b + c*c*c) { // 判断是否为水仙花数
printf("%d", i);
break;
}
}
return 0;
}
```
C语言定义一个函数fsxh(int n)。输入正整数n(n>100)在[n,999]范围内寻找最小水仙花数。要求输出指定范围内最小水仙花数,如果没有则输出0。
好的,这是一个简单的问题。以下是函数fsxh(int n)的C语言代码实现:
```c
#include <stdio.h>
// 计算一个数的立方和
int cubicSum(int n) {
int sum = 0;
while (n > 0) {
int digit = n % 10;
sum += digit * digit * digit;
n /= 10;
}
return sum;
}
// 查找最小水仙花数
int findMinNarcissisticNumber(int n) {
for (int i = n; i <= 999; i++) {
if (i == cubicSum(i)) {
return i;
}
}
return 0;
}
// 主函数
int main() {
int n;
printf("请输入正整数n:");
scanf("%d", &n);
if (n <= 100) {
printf("n必须大于100!\n");
} else {
int result = findMinNarcissisticNumber(n);
if (result == 0) {
printf("在[%d, 999]范围内没有水仙花数。\n", n);
} else {
printf("在[%d, 999]范围内最小的水仙花数是:%d\n", n, result);
}
}
return 0;
}
```
这个程序定义了两个函数:`cubicSum(int n)`用于计算一个数的立方和;`findMinNarcissisticNumber(int n)`用于在指定范围内查找最小的水仙花数,如果没有则返回0。主函数中首先让用户输入正整数n,然后调用`findMinNarcissisticNumber(int n)`函数查找最小水仙花数并输出结果。
阅读全文