A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李志祥 中级黑马   /  2012-4-1 01:27  /  1980 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李志祥 于 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,究竟该不该加上,大家发表下个人观点啊
互相学习下

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

正序浏览
昨天也是在这里想了半天,用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,看了楼上兄弟的指导,感谢.

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
莫洪刚 发表于 2012-4-1 09:20
题目是从1到100之间的除了能被7整除之外的所有整数的和。(注意:1到100之间的数)

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

十分感谢兄弟如此详细的解析!
回复 使用道具 举报
题目是从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();


评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
不用加,因为if语句中在continue之前加了一句i++

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
不用加,因为你在if语句之前加了一个“i++;”,所以while里的代码就相当是从1开始判断的直到100才停止,其效果跟第一个事例是一样的,所以不用加。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马