大家都知道一个叫完数的东西吧...这程序错在哪里了?

来源:百度知道 编辑:UC知道 时间:2024/07/04 08:53:33
#include"stdio.h"
void main()
{
int a[100],b,c,d=0,e,f;
printf(" 2-1000间的完数\n");
for(b=2;b<1000;b++)
{
for(c=1;c<b;c++)
{
if(b%c==0)
{
d+=c;
a[e]=c;
e++;
}
}
if(b==d)
printf("%d=",b);
for(f=0;f<e;f++)
printf("+%d",a[f]);
printf("\n");
}
}

你e没有初始化.d,e的值每次计算后要重新置0.数组a的赋值也不对.
下面给你改好的程序.我用win-tc可以运行,答案也正确.

#include"stdio.h"
main()
{
int a[10],b,c,d,e,f;
printf(" 2-1000间的完数\n");
for(b=2;b<1000;b++)
{d=0;
e=0;
for(c=1;c<b;c++)
{
if(b%c==0)
{
d=d+c;
a[e]=c;
e++;
}
}
if(b==d)
{
printf("%d=",b);
for(f=0;f<e;f++)
printf("+%d",a[f]);
printf("\n");
}
}
getch(); /* win-tc用的留屏函数,你是turbo c可以去掉. */
}

if(b==d)
printf("%d=",b);
for(f=0;f<e;f++)
printf("+%d",a[f]);
printf("\n");这段没看懂。
#include"stdio.h"
void main()
{
int b,c,d,f;
print