c语言的高手大哥们,我这哪有错,我都要疯了,求求你救救我吧

来源:百度知道 编辑:UC知道 时间:2024/06/23 07:55:23
#include<stdio.h>
void main()
{
int a,b,c,i,d;
for(i=1;i<1000;i++)
{
for(a=1;a<i;a++)
{
b=0;
if(i%a==0)
b+=a;
}
if(i==b)
{ printf("%d的因子是",i);
d+=b;
for(c=1;c<i;c++)
{
if(i%c==0)
printf("%d ",c);
}
printf("\n");
}
}
printf("完数的和是%d",d);
}
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,因此6是“完数”。编程序找出1000之内的所有完数及这些完数之和,并按下面格式输出因子:6的因子是1,2,3 …… 完数和是…

还不是很清楚你这段代码的问题是什么,但我感觉有两个问题,一是d没有被初始化,所以d+=b;可能会无法编译,因为它会要求明确的初始值。另外一个是b=0; 你放错了地方,如果你放在for(a=1;a<i;a++) 里,每次循环b会被重新赋值,而无法记住之前的和,把它放在for(a=1;a<i;a++)的上面,for(i=1;i<1000;i++) 的下面试试。

你的count命令哪去了?

运行没错啊

你的程序要实现什么的?都没说清楚···