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;
}
展开
 我来答
百度网友20451b4
2011-02-14 · TA获得超过566个赞
知道小有建树答主
回答量:389
采纳率:0%
帮助的人:0
展开全部
当然不一样啊。。
你放在第一个循环里面,当内层循环跳出时,执行外面的循环,sum会重新等于0
如果你刚在循环外面,当内层循环跳出时,执行外面的循环,sum会保持跳出以前的值
帐号已注销
2011-02-14 · TA获得超过877个赞
知道小有建树答主
回答量:337
采纳率:0%
帮助的人:345万
展开全部
肯定每次都要sum清零,因为每次都是一次单独的过程,和其他没有任何联系,那么保留sum上一次的值就毫无意义了,明白?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4c7d1fc
2011-02-14 · 超过16用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:42.5万
展开全部
同学,你这是求完美数吗?
之所以你有这样的疑问,我估计你犯了这样的错误:
在程序里,除了循环里的语句,其它语句在整个程序启动过程中只执行一次。
在你的代码里,如果你将sum = 0;放在一开始的地方,那就表明你的sum只初始化一次,那么以后你的代码就一直在你的第一个for循环里执行,直到x>1000退出循环。
在整个过程中,你的sum只在一开始被初始化为0,而在for循环里,你要打印的sum值就是你每次循环新得到的sum结果加上前一次sum的值。也就是说,比如第一次sum = 6,按道理你需要在下一次打印出28,但结果肯定是打印出34(6+28).
所以你要保证每次循环都得到正确的sum值,你就必须在每次循环开始时将sum初始化为0,要做到重复初始化,就要将sum = 0放入循环!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式