题主的代码错误较多,修改完善如下,供参考对照:
#include <stdio.h>
int main()
{
int T, t, a, b, i, k, s;
scanf("%d", &T);
while (T--) {
scanf("%d %d", &a, &b);
if (a < 100 || b < a || b > 1000)
printf("-1");
else {
for (i = a, t = 0; i < b; i++) {
k = i; s = 0;
while (k) {
s += (k % 10) * (k % 10) * (k % 10);
k /= 10;
}
if (s == i)
printf(t++ == 0 ? "%d" : " %d", i);
}
if (!t)
printf("-1");
}
if (T)
printf("\n");
}
return 0;
}
第一 输入方式不对了。输入多组后再输出
第二 你这种判断方式是只能输出一个结果 比如你输入100 999看下结果 改成循环找