用while continue实现计算从1到100之间的除了能被7整除之外所有整数的和

kqs42 2012-07-22 09:22:40
用while continue实现计算从1到100之间的除了能被7整除之外所有整数的和。
我编程的代码如下:

int sum = 0, i = 0;
while (i < 100)
{
i++;
if (i % 7 == 0)
{
continue;
}
sum = sum + i;
}
Console.WriteLine("和是"+sum);
Console.ReadKey();

运行结果是4315.请问错在哪里?


教程上正确的代码是:


int sum = 0, i = 0;
while (i < 100)
{
if (i % 7 == 0)
{
i++;
continue;
}
sum = sum + i;
i++;
}
Console.WriteLine("和是"+sum);
Console.ReadKey();

正确的结果是4215.


请问大家我上面那段代码逻辑上是哪里错了?
...全文
4491 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
csl_1022 2012-07-23
  • 打赏
  • 举报
回复
这种问题LZ自己多琢磨一下就明白了 设置断点调试一下 看看输出结果 没必要纠结
  • 打赏
  • 举报
回复
只看i=99时就知道了,你的在IF之前就+1了,判断的时候是100,等于把100算进去了,教程里没有。我测试了下,如果含1不含100,这样求下来是4215
threenewbee 2012-07-22
  • 打赏
  • 举报
回复
好破的书。
一行代码的事情:
int result = Enumerable.Range(1, 100).Where(x => x % 7 != 0).Sum();
Console.WriteLine(result);
程序员知码 2012-07-22
  • 打赏
  • 举报
回复
我觉得这题你应该是对的,题目说1到100之间的数,既然1包括进去了,100也应当包括进去呀。这题你都知道思路了,主要是100包不包括的问题。
  • 打赏
  • 举报
回复
另外,你说的“教程上”的两个重复的 i++,也暴露了,它是随便写的,并没有特意整理。如果特意整理过的范例代码,通常就不会出现两次重复的i++了。
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
用while continue实现计算从1到100之间的除了能被7整除之外所有整数的和。
[/Quote]

这个结果确实应该等于 4315!
cheng2005 2012-07-22
  • 打赏
  • 举报
回复
楼主,我上面的话是真心对你说的,如果你不喜欢,可以把上面我说的当作放屁.
cheng2005 2012-07-22
  • 打赏
  • 举报
回复
循环是从0 - 99

当i==n时.
你其实是sum += (n+1) 也就是1加到100
人家是sum += n 也就是0加到99.
其实就是每次都多加了一个1,
循环了100次,多加了100.

我觉得这么简单的问题,上过高中的人都应该可以自己找到错误.我只是觉得楼主不太适合编程,也许应该考虑找个更适合自己的职业,或者行业.
全栈极简 2012-07-22
  • 打赏
  • 举报
回复
先+i,再i++。
tanta 2012-07-22
  • 打赏
  • 举报
回复
错在最后一个数(也就是99)的执行上,按照你的算法,99要循环一次
int sum = 0, i = 0;
while (i < 100)
{
i++; // i=100
if (i % 7 == 0)
{
continue;
}
sum = sum + i; //执行,正好多100
}
Console.WriteLine("和是"+sum);
Console.ReadKey();
===========================
i++; // i=100

sum = sum + i; //执行,正好多100



tanta 2012-07-22
  • 打赏
  • 举报
回复
错在最后一个数(也就是99)的执行上,按照你的算法,99要循环一次
int sum = 0, i = 0;
while (i < 100)
{
i++; // i=100
if (i % 7 == 0)
{
continue;
}
sum = sum + i; //执行,正好多100
}
Console.WriteLine("和是"+sum);
Console.ReadKey();
===========================
i++; // i=100

sum = sum + i; //执行,正好多100



lizhibin11 2012-07-22
  • 打赏
  • 举报
回复
你的包括100,教程的不包括100
包括100:(1 + 100) * 100 / 2 - (1 + 14) * 14 * 7 / 2 = 4315;
不包括100:(1 + 99) * 99 / 2 - (1 + 14) * 14 * 7 / 2 = 4215。
iyomumx 2012-07-22
  • 打赏
  • 举报
回复
你的代码没有错,你错在你觉得教科书上一定是对的

111,076

社区成员

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

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

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