第10行增加sum=0;每次循环需要将sum恢复为0,否则会累加
满足if才有输出,你加个else情况下的输出
供参考:
#include<stdio.h>
int main()
{
int N, i, M, t, sum, n, m, k, flg = 0;
scanf("%d%d", &N,&M);
if (N <= 0 || M > 1000000 || N > M)
return - 1;
else{
for (i=N; i <= M; i++) {
N = i; m = 0;
while (N) { m++; N /= 10;}
for (sum = 0, N = m, t = i; t > 0 && N > 2; t /= 10) {
m = N; k = 1;
n = t % 10;
while (m--)k *= n;
sum += k;
}
if (sum == i) {
printf(flg++ == 0 ? "%d" : " %d", i);
}
}
if (!flg)
printf("none");
}
return 0;
}