为什么不一样的结果?

img

img


sum一个在for前面定义,一个在for里面定义区别是什么啊?为什么运行结果都不一样?
#include<stdio.h>
int main()
{
int a,i,sum;
for (a=1;a<=100;a++)
{
sum=0;

    for(i=1;i<a;i++)
    {        
        if(a%i==0)
        {
                sum+=i;
        }        
    }
    if(a==sum)
    {
        printf("%d 是完备数\n",a);
     }
    
} 
return 0;

}

在for里定义,每个循环会重新分配内存空间
在逻辑上没有区别
如果执行上有区别,那肯定就是逻辑不一致了呗
好好排版,对齐括号,把两个代码粘一起看看到底哪里不一样
你这排版排的乱糟糟的,眼睛都要看瞎了
而且还放图不放代码,想帮你排版都没法排

放在里面 每次执行外层循环 sum都重置为了 0
在外面 sum一直累加

首先你的代码两个本身都是错误代码。
另外变量在哪定义不影响结果。主要是sum=0写在第7行是对的

#include<stdio.h>
int main()
{
int a,i;
for (a=1;a<=100;a++)
{
int sum;
sum=0;
for(i=1;i<a;i++)
{
if(a%i==0)
{
sum+=i;
}
if(a==sum)
{
printf("%d 是完备数\n",a);
}
}
}
return 0;
}