s=0放在定义处,运行不出来,放在循环体里就可以运行,原因是?

#include<stdio.h>
int main()
{
int m,s,i;
for(m=2;m<1000;m++){
s=0;
for(i=1;i<m;i++){
if(m%i==0)
s+=i;
}
if(m==s){
printf("%d,因子:",m);
for(i=1;i<m;i++){
if(m%i==0)
printf("%d ",i);
}
printf("\n");
}
}
return 0;
}

img

#include<stdio.h>
int main()
{
int m,s=0,i;
for(m=2;m<1000;m++){
for(i=1;i<m;i++){
if(m%i==0)
s+=i;
}
if(m==s){
printf("%d,因子:",m);
for(i=1;i<m;i++){
if(m%i==0)
printf("%d ",i);
}
printf("\n");
}
}
return 0;
}

img

对于每一个数,都要重置s的值,否则s会一直递增