6-3 寻找水仙花数(递归)
分数 10
全屏浏览
切换布局
作者 李祥
单位 湖北经济学院
所谓水仙花数,它是一个 3 位数,其每位数字的 3 次幂之和等于它本身。
例如:
13+53+33=153,因此 153 是水仙花数。
13+53+43=190,因此 154 不是水仙花数。
请编写函数,输出指定范围内的水仙花数。
函数原型
void FindNarc(int lower, int upper);
说明:参数 lower 和 upper 为指定范围的下限和上限。若 lower ≤ upper,则函数将按由小到大的顺序输出 lower 到 upper 范围内的水仙花数,否则不输出任何信息。
裁判程序
#include <stdio.h> ...... void FindNarc(int lower, int upper); int main() { int min, max; scanf("%d %d", &min, &max); FindNarc(min, max); putchar('\n'); return 0; } ...... /* 你提交的代码将被嵌在这里 */
要求:利用前面作业中编写的 IsNarc 函数判断水仙花数。
输入样例1
300 400
输出样例1
370
371
输入样例2
500 600
输出样例2
关联习题:判断水仙花数。
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
int IsNarc(int x){
int i=x;
int d,sum=0;
if(x>999||x<100){
return 0;
}
else{
while(x>0){
d=x%10;
sum+=Cube(d);
x/=10;
}
if(sum==i){
return 1;
}else{
return 0;
}
}
}
void FindNarc(int lower, int upper)
{
if (lower <= upper)
{
FindNarc(lower, upper - 1);
if (IsNarc(upper))
{
printf("%d\n", upper);
}
}
}