黑马程序员技术交流社区

标题: 最后一个100是否该加,大家探讨下 [打印本页]

作者: 李志祥    时间: 2012-4-1 01:27
标题: 最后一个100是否该加,大家探讨下
本帖最后由 李志祥 于 2012-4-18 15:07 编辑

用while,continue实现从1到100之间的除了能被7整除之外的所有整数的和。
苏老师视频中的程序一、
       int i = 1;
            int sum = 0;
            while (i<=100)

            {               
                if (i % 7 == 0)
                {
                   i++;               
                   continue;
                }
                sum = sum + i;
                i++;
            }
            Console.WriteLine(sum);

            Console.ReadKey();
此时输出结果为4315;

视频中int i=0,这个变化后的程序为:
       int i = 0;
            int sum = 0;
            while (i<100)
            {               
                if (i % 7 == 0)
                {
                   i++;               
                   continue;
                }
                sum = sum + i;
                i++;
            }
            Console.WriteLine(sum);

            Console.ReadKey();
此时输出结果为4215;

我的一个程序
int i = 0;
            int sum = 0;
            while (i<100)
            {
                i++;            
                if (i % 7 == 0)
                {                              
                   continue;
                }
                sum = sum + i;               
            }
            Console.WriteLine(sum);

            Console.ReadKey();
此时输出结果为4315;
最后的那个100,究竟该不该加上,大家发表下个人观点啊
互相学习下

作者: 张世豪    时间: 2012-4-1 04:22
不用加,因为你在if语句之前加了一个“i++;”,所以while里的代码就相当是从1开始判断的直到100才停止,其效果跟第一个事例是一样的,所以不用加。
作者: 张静慈    时间: 2012-4-1 09:16
不用加,因为if语句中在continue之前加了一句i++
作者: 莫洪刚    时间: 2012-4-1 09:20
题目是从1到100之间的除了能被7整除之外的所有整数的和。(注意:1到100之间的数)

第一个小程序和第三个小程序是对的。

第一个小程序是对的,不用讲。(不用加)

第二个小程序是错误的。

首先i=0;sum=0;
你一次循环的时候0<100成立,用0除以7取余数,然后i++;
你二次循环的时候1<100成立,用1除以7取余数,然后i++;
.......
.....
...
在第一百次的时候99<100成立,用100除以7取余数,然后i++;
在第一百零一次的时候100<100不成立,不用循环。(此时没有取到100是不是该加呢?)
回头看看,100没取到,而题目要求是1到100之间的数。

第三个小程序是对的.因为首先就对i++了一次,
所以i=0时候,其实是用1除以7取余数.
当然i=99时候,i其实等于100,也取到了100,然后用100除以7取余数。(所以不用加100)

总之第一和三小程序,取到了1和100,第二小程序没有取到(其实和题目已经跑偏了)。

这个程序这样写更加一目了然
            int sum = 0;
            for (int i = 1; i <= 100; i++)
            {
                if (i % 7 == 0)
                {
                    continue;
                }
                else
                {
                    sum += i;
                }
            }
            Console.WriteLine(sum);
            Console.ReadKey();



作者: 李志祥    时间: 2012-4-1 09:52
莫洪刚 发表于 2012-4-1 09:20
题目是从1到100之间的除了能被7整除之外的所有整数的和。(注意:1到100之间的数)

第一个小程序和第三个小程 ...

十分感谢兄弟如此详细的解析!
作者: 徐瑞    时间: 2012-4-1 13:04
昨天也是在这里想了半天,用for循环写了一个.
           int sum = 0;
            int i;
            for (i = 1; i <= 100; i++)
            {
                if (i % 7 ==0)
                {
                    continue;

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

            Console.ReadKey();

纠结了好一会儿4215 4315,看了楼上兄弟的指导,感谢.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2