C语言题目,帮忙看看哪里错了

程序填空,不要改变与输入输出有关的语句。输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入2个正整数m和n(1<=m,n<=1000),... 程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入2 个正整数 m 和 n(1<=m,n<=1000),输出 m 到 n 之间的所有水仙花数。水仙花数是指各位数字的立方和等于其自身的数。
要求定义并调用函数is(number)判断 number 的各位数字之立方和是否等于其自身,若相等则返回1,否则返回0,函数形参 number 的类型是int,函数类型是int。
输出使用语句:printf("%d\n", i);
输入输出示例:括号内是说明
输入:
2 (repeat=2)
100 400 (m=100, n=400)
1 100 (m=1, n=100)
输出:
153 (1*1*1+5*5*5+3*3*3=153)
370 (3*3*3+7*7*7=370)
371 (3*3*3+7*7*7+1*1*1=371)
1 (1*1*1=1)

#include <stdio.h>
int main(void)
{
int i, m, n;
int repeat, ri;
int is(int number);

scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d%d", &m, &n);
/*---------*/
for(i=m;i<=n;i++){
if(is(i)==1) printf("%d\n", i);

}
}
return 0;
}
/*---------*/
int is(int number){
int s,a,b;
a=number;
s=0;
while(number!=0){
b=number&10;
s+=b*b*b;
number=number/10;
}
if(s==a) return 1;
else return 0;
}
展开
 我来答
ustb_hxb
2013-01-06 · TA获得超过265个赞
知道小有建树答主
回答量:248
采纳率:66%
帮助的人:168万
展开全部
1.m 和 n 应该用数组的形式,否则你输入第一对 m 和 n 的值后,在输入第二对m 和 n 的值之前就输出了前一对 m 和 n 之间的水仙花数...

2. b=number&10;

此处应该是 b = number % 10;

3. int i, m, n;
int repeat, ri;
int is(int number);

主函数里面的函数声明int is(int number)应该放在最外名,不应放在main函数里
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式