日期:2014-05-18  浏览次数:21049 次

用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.

我觉得这么简单的问题,上过高中的人都应该可以自己找到错误.我只是觉得楼主不太适合编程,也许应该考虑找个更适合自己的职业,或者行业.