请帮忙看以下两段代码有何不同

c_jiangtian_sdn 2011-10-17 02:52:30
有这样一道题:用while和continue实现1到100之间的除了能被7整除之外的所有整数的和。
写了2段代码,看似一样,但计算结果却不同。请各位高手于以解释,为何会不同。感谢!

第一段代码(计算结果为4301):
int sum = 1;
int i = 1;
while (i <100)
{
if (i % 7 == 0)
{
i++;
continue;
}

i++;
sum = sum + i;
}
Console.WriteLine(sum);


第二段代码(计算结果为4215):
int sum = 0;
int i = 1;
while (i < 100)
{
if (i % 7 == 0)
{
i++;
continue;
}


sum = sum + i;
i++;
}
Console.WriteLine(sum);
...全文
150 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhilong_ 2011-10-17
  • 打赏
  • 举报
回复
第一个程序因为i是先累加,再返回来执行if语句,所以实际上累加是将7的倍数加上去了的,反而是8的倍数没有加上,所以累加实际上是1到100除开8的倍数。
第二个程序从99看就清楚了,到100的时候已经跳出while语句了,所以实际上市1到99除开7的倍数的累加
wing075 2011-10-17
  • 打赏
  • 举报
回复
打酱油。。。
一个算的不是7的合
wl4103 2011-10-17
  • 打赏
  • 举报
回复
二楼比较强悍,下面的都是打酱油的。
funkf 2011-10-17
  • 打赏
  • 举报
回复
第一种错了,当i是6的时候,你加了7,明显不对,第二种答案是对的
wangchengyang11 2011-10-17
  • 打赏
  • 举报
回复
heheh you yisi a www.cytdly.cn
迷恋郭德纲 2011-10-17
  • 打赏
  • 举报
回复
第一段比第二段结果少1
Indifferent_Wind 2011-10-17
  • 打赏
  • 举报
回复
LZ 断点调下不就知道问题出在那了么。
为什么这个还要提问呢?考我们的观察能力。还是细心度。还是底层知识。还是其它什么?
还是楼主分多的没地方给哈。
lintyfeng1 2011-10-17
  • 打赏
  • 举报
回复
一个个都这么快啊
Indifferent_Wind 2011-10-17
  • 打赏
  • 举报
回复
1、2个方法初始化的SUM不同。那么相差了1.
2、第一个方法是
i=0//比如i=0
i++;
sum = sum + i;//那么这边的i=1
第二个方法
i=0//比如i=0
sum = sum + i;//那么这边的i=0
i++;
wnyxy001 2011-10-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 linbing1988 的回复:]

上楼的你太快了吧!
[/Quote]
哈哈 必须的
xingxuejiao 2011-10-17
  • 打赏
  • 举报
回复
i++;
写在前写在后结果是不一样的
Indifferent_Wind 2011-10-17
  • 打赏
  • 举报
回复
代码不相同。结果当然不同
奔跑吧牛宝宝 2011-10-17
  • 打赏
  • 举报
回复
上楼的你太快了吧!
奔跑吧牛宝宝 2011-10-17
  • 打赏
  • 举报
回复
第一中情况 sum=1+2;第二种sum=1+1;后面的类推!
wnyxy001 2011-10-17
  • 打赏
  • 举报
回复
你第一种
i++;
sum = sum + i;
每次加的都是i+1

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧