int main()
{
int n,k,i,sum;
printf("请输入一个正整数\n");
scanf("%d",&n);
printf("全部完全数为");
for(i=1;i<=n;i++)
{ sum=0; //添加这一行 就行了
for(k=1;k {
if(i%k==0)
sum+=k;
}
if(sum==i)
printf("%d",i);
}
}
再循环中,sum没有重新初始化,如此,sum的值就会一直加上去,越加越大,造成错误
#include
int main()
{
int n,k,i,sum;
printf("请输入一个正整数\n");
scanf("%d",&n);
printf("全部完全数为");
for(i=1;i<=n;i++)
{
for(k=1;k
{
if(i%k==0)
sum+=k;
}
if(sum==i)
printf("%d",i);
sum = 0;
}
}
for(k=1;k