[Attention Please] 每执行一次 for 循环,sum 需要重新置 0
#include<stdio.h>
#include<math.h>
void main()
{
int m, n, temp, w;
while(scanf("%d %d\n", &m, &n) != EOF)
{
if(m < 100 || n > 999 || m > n)
return;
int flag = 0;
int sum = 0;
for(int i = m; i <= n; i++)
{
temp = i;
while(temp != 0)
{
w = temp % 10; //各位上的数
sum += pow(w, 3);
temp = temp / 10;
}
if(sum == i)
{
if(flag == 0) //遇到[m, n]之间的第一个水仙花数
{
printf("%d", i);
flag = 1; //表示[m, n]之间至少有一个水仙花数
}
else //flag = 1
printf(" %d", i); //前面已输出过水仙花数,则先输出" " 再输出水仙花数
}
sum = 0;//重新置零
}
if(flag == 0)
printf("no");
printf("\n");//若flag == 1 也需要换行
}
}