用while continue实现计算从1到100之间的除了能被7整除之外所有整数的和
用while continue实现计算从1到100之间的除了能被7整除之外所有整数的和。
我编程的代码如下:
C# code
int sum = 0, i = 0;
while (i < 100)
{
i++;
if (i % 7 == 0)
{
continue;
}
sum = sum + i;
}
Console.WriteLine("和是"+sum);
Console.ReadKey();
运行结果是4315.请问错在哪里?
教程上正确的代码是:
C# code
int sum = 0, i = 0;
while (i < 100)
{
if (i % 7 == 0)
{
i++;
continue;
}
sum = sum + i;
i++;
}
Console.WriteLine("和是"+sum);
Console.ReadKey();
正确的结果是4215.
请问大家我上面那段代码逻辑上是哪里错了?
------解决方案--------------------你的代码没有错,你错在你觉得教科书上一定是对的
------解决方案--------------------你的包括100,教程的不包括100
包括100:(1 + 100) * 100 / 2 - (1 + 14) * 14 * 7 / 2 = 4315;
不包括100:(1 + 99) * 99 / 2 - (1 + 14) * 14 * 7 / 2 = 4215。
------解决方案--------------------错在最后一个数(也就是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
------解决方案--------------------先+i,再i++。
------解决方案--------------------循环是从0 - 99
当i==n时.
你其实是sum += (n+1) 也就是1加到100
人家是sum += n 也就是0加到99.
其实就是每次都多加了一个1,
循环了100次,多加了100.
我觉得这么简单的问题,上过高中的人都应该可以自己找到错误.我只是觉得楼主不太适合编程,也许应该考虑找个更适合自己的职业,或者行业.