C语言:内嵌for循环,为什么我这个程序无法正常输出结果
正确答案是把sum=0放到第一个for循环里,这是为什么呢?我起手就赋了初值不是一样吗?求高手详细分析下!intmain(void){intx,sum=0,a,i;for...
正确答案是把sum=0放到第一个for循环里,这是为什么呢? 我起手就赋了初值不是一样吗? 求高手详细分析下 !
int main(void)
{
int x,sum=0,a,i;
for(x=2;x<=1000;x++)
{
for(a=1;a<x;a++)
{
if((x%a)==0)
sum=sum+a;
if(x==sum)
{
printf("%d its factors are ",x);
for(a=1;a<x;a++)
if(x%a==0)printf("%d,",a);
printf("\n");
}
}
}
return 0;
} 展开
int main(void)
{
int x,sum=0,a,i;
for(x=2;x<=1000;x++)
{
for(a=1;a<x;a++)
{
if((x%a)==0)
sum=sum+a;
if(x==sum)
{
printf("%d its factors are ",x);
for(a=1;a<x;a++)
if(x%a==0)printf("%d,",a);
printf("\n");
}
}
}
return 0;
} 展开
展开全部
肯定每次都要sum清零,因为每次都是一次单独的过程,和其他没有任何联系,那么保留sum上一次的值就毫无意义了,明白?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同学,你这是求完美数吗?
之所以你有这样的疑问,我估计你犯了这样的错误:
在程序里,除了循环里的语句,其它语句在整个程序启动过程中只执行一次。
在你的代码里,如果你将sum = 0;放在一开始的地方,那就表明你的sum只初始化一次,那么以后你的代码就一直在你的第一个for循环里执行,直到x>1000退出循环。
在整个过程中,你的sum只在一开始被初始化为0,而在for循环里,你要打印的sum值就是你每次循环新得到的sum结果加上前一次sum的值。也就是说,比如第一次sum = 6,按道理你需要在下一次打印出28,但结果肯定是打印出34(6+28).
所以你要保证每次循环都得到正确的sum值,你就必须在每次循环开始时将sum初始化为0,要做到重复初始化,就要将sum = 0放入循环!
之所以你有这样的疑问,我估计你犯了这样的错误:
在程序里,除了循环里的语句,其它语句在整个程序启动过程中只执行一次。
在你的代码里,如果你将sum = 0;放在一开始的地方,那就表明你的sum只初始化一次,那么以后你的代码就一直在你的第一个for循环里执行,直到x>1000退出循环。
在整个过程中,你的sum只在一开始被初始化为0,而在for循环里,你要打印的sum值就是你每次循环新得到的sum结果加上前一次sum的值。也就是说,比如第一次sum = 6,按道理你需要在下一次打印出28,但结果肯定是打印出34(6+28).
所以你要保证每次循环都得到正确的sum值,你就必须在每次循环开始时将sum初始化为0,要做到重复初始化,就要将sum = 0放入循环!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询