用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.
请问大家我上面那段代码逻辑上是哪里错了?

解决方案 »

  1.   

    错在最后一个数(也就是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=100sum = sum + i; //执行,正好多100
      

  2.   

    错在最后一个数(也就是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=100sum = sum + i; //执行,正好多100
      

  3.   

    循环是从0 - 99当i==n时.
    你其实是sum += (n+1) 也就是1加到100
    人家是sum += n  也就是0加到99.
    其实就是每次都多加了一个1,
    循环了100次,多加了100.我觉得这么简单的问题,上过高中的人都应该可以自己找到错误.我只是觉得楼主不太适合编程,也许应该考虑找个更适合自己的职业,或者行业.
      

  4.   

    好破的书。
    一行代码的事情:
    int result = Enumerable.Range(1, 100).Where(x => x % 7 != 0).Sum();
    Console.WriteLine(result);
      

  5.   

    只看i=99时就知道了,你的在IF之前就+1了,判断的时候是100,等于把100算进去了,教程里没有。我测试了下,如果含1不含100,这样求下来是4215