作者antirazin (你今天督了吗XD)
看板TransCSI
标题Re: [问题] 辅大92资工
时间Tue Jun 5 21:33:16 2007
※ 引述《chen0404 (这个冬天会很暖)》之铭言:
: a. int i = 0, total = 0;
: while(++i<=100)
: total += i;
: 试回答此回圈结束後,i和total的值各为何?
: b. int i = 1, total = 0;
: while(i++<=100)
: total += i;
: 试回答此回圈结束後,i和total的值各为何?
: 有点分不清...想请教一下...^^"
今天偶然爬到这篇文章,练习做了一次,发现跟测出来的值相吻合,
不过我想以文字理解的方式说明,
大家看我说的对不对~
-----------------------------------------------------------
关於a.
一开始先执行++i => i=1
total +=i => total=1
以此类推进行到i=100时
一样先++i => i =101 不满足while条件,所以total没有加到101
所以i仍然是101,
而total则是1+2+3+4+.....+100 = 100*(1+100)/2 = 5050
关於b.
则是一开始先执行while条件的判断=>
1<100 成立,判断结束以後才将i+1 = 2
所以total = total + i = 2
以此类推进行到i=100时经过条件判断满足後i = 101,
所以total最後加到101
然後回到回圈条件判断发觉101不符,
因此回圈终止但最後仍然要进行i++,
所以i = 102,
而total = 2+3+4+....+101 = 100*(101+2)/2 = 5150
以上~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.228.83.133