C语言问题,求大神改错,谢谢拉拉拉。。我是小白

2025-01-02 03:20:25
推荐回答(4个)
回答1:

#include

void main()

{int s;

int i,j,m;

for(i=2;i<=1000;i++)

{   s=0;

 for(j=1;j

{m=i%j;

if(m==0)

{s+=j;}}

if(s==i)

{printf("完数有=%d\n",i);

}}}

回答2:

#include
void main()
{
int s=0;
int i,j=2,m;
for(i=2;i<=1000;i++)
{
for(j=1;j<=i/2;j++)
{
m=i%j;
if(m==0)
{
s+=j;

}
}
if(s==i)
{
printf("完数有=%d\n",i);
}
s=0;
}
}

应该是在每次运算完一个i 的时候要把s重新初始化为0,否则s就一直累加,所以会printf不出来吧~(我也研究了半天。。。)

最后算出来是6,28,496.

回答3:

int s=0;应该放在第一个循环里面,因为从下一个数开始,s应该清0

回答4:

for(i=2;i<=1000;i++)
{
s = 0;
.................
每次都把s初始为0