想问问我一开始把sum=0放在for的条件初始化里,输不出来结果,后来把sum=0移出来就放在for的过程中,就可以,这是为啥啊

想问问我一开始把sum=0放在for的条件初始化里,输不出来结果,后来把sum=0移出来就放在for的过程中,就可以,这是为啥啊

因为for的条件初始化里只在for循环开始的时候执行一次,后续for循环sum会累加。但放在for循环过程中则每次会初始化,自然就OK了

#include <stdio.h>
void isperfect(int m)
{ int i,c,sum;
for(i=2;i<m;i++)
{sum=0;
for(c=1;c<i;c++)
{if(i%c==0)
sum+=c;}
if(sum==1)
printf("%d\n",i);}
return ;}
int main()
{int num,c,i,re;
scanf("%d",&num);
isperfect(num);
return 0;
}

按道理是一样的,具体要看到你的代码才知道原因。