求猿师兄们解答
各位猿前辈! 求助!求助!
在做C语言题目时,遇到一个不能理解的问题!
C语言原题如下:
一个数如果恰好等于它的因子之和,这个数就被称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。找出1000之内的所有完数,并输出。
可是在我写完代码以后:
却频频运行出错:
经过半个小时的调整,终于发现了其中的原因:
当我把sum放在for()函数前赋值时,程序就会运行出错,不执行任何输出:
当我把sum放在for()函数内赋值时,程序就会成功执行:
成功执行:
我无法李姐!
附上错误代码:
#include<stdio.h>
int main(void)
{
int n=0,i=0,sum=0,o=0,k=0;
for(n=1;n<=1000;n++)
{
for(i=1;i<=n;i++)
{
o=n%%i;
if(o==0&&i!=n)
{
sum=sum+i;
}else if(i==n&&sum==n)
{
printf("%%d:",n);
for(k=1;k<=n;k++)
{
if(n%%k==0&&k!=n)
{
printf(" %%d",k);
}
} printf("
");
}
}
}
}
以及正确代码:
#include<stdio.h>
int main(void)
{
int n=0,i=0,sum,o=0,k=0;
for(n=1;n<=1000;n++)
{
sum=0;
for(i=1;i<=n;i++)
{
o=n%%i;
if(o==0&&i!=n)
{
sum=sum+i;
}else if(i==n&&sum==n)
{
printf("%%d:",n);
for(k=1;k<=n;k++)
{
if(n%%k==0&&k!=n)
{
printf(" %%d",k);
}
} printf("
");
}
}
}
}
最后,恳请各位猿师兄,师姐救救孩子!