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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 狱之一族 中级黑马   /  2013-3-26 21:48  /  2379 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用while continue实现计算1到100之间的除了能被7整除之外所有整数的和。      

   static void Main(string[] args)
        {
            int i = 0, sum = 0;
            while (i< 100)
            {
                if (i % 7 == 0)
                {
                    i++;
                    continue;
                }
                sum += i;
                i++;
            }
            Console.WriteLine(sum);
            Console.ReadKey();
        }
        
      





static void Main(string[] args)
        {
            int i = 0, sum = 0;
            while (i++< 100)
            {
                if (i % 7 == 0)
                {
                    
                    continue;
                }
                sum += i;
               
            }
            Console.WriteLine(sum);
            Console.ReadKey();
        }
        
我在视频上看的,下面那个也是老师讲的方法,但是我试验过后,不知道哪个错了,两个结果最后却不一样,第一的结果是4215,而第二个的结果是4315,求帮忙

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

8 个回复

正序浏览
张振 中级黑马 2013-3-27 11:41:45
9#
这个我自己试过 甚至我用数学公式直接加 结果是4315,视频上那个4215结果是错,因为得出4215的代码中的for 循环最后100没加上,因为i<100
回复 使用道具 举报
while (i++< 100)
为后加加,判定以后i在自增1,当i=0时,条件成立,进入while下面的循环是i已经自增1了;同理,当=99时,条件成立,i自增,进入循环中的值是100.
所以第一个循环中计算器i在循环中是0到99
第二个循环中的计算器i在循环中是1到100.
两者之和相差100.
回复 使用道具 举报
第一个while里面的代码,只执行了i从0到99;
第二个while里面的代码,则执行了i从1到100;
因此,第二个符合要求,结果正确。
回复 使用道具 举报
static void Main(string[] args)
        {
            int i = 0, sum = 0;
            while (i< 100) // 我们假设这儿i==99; 成立向下执行.
            {
                if (i % 7 == 0)
                {
                    i++;
                    continue;
                }//应该不成立...下面.
                sum += i; // 这儿就加了99.
                i++; // 然后才自增.回去就不成立.退出了.
            }
            Console.WriteLine(sum);
            Console.ReadKey();
        }
        
      





static void Main(string[] args)
        {
            int i = 0, sum = 0;
            while (i++< 100) // 然后这儿呢.还假设99. i++的执行顺序是先执行表达式然后自增一.99<100成立...然后i自增1. i= 100.
            {
                if (i % 7 == 0)
                {
                    
                    continue;
                }
                sum += i; // 到这儿就是100了...这儿就可以把100加上.....懂了吧
               
            }
            Console.WriteLine(sum);
            Console.ReadKey();
        }

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
4315-4215=100
上面那个while(i< 100)没有包括100这个数字。就少了100啊。。。2L的有点节操,给小弟们留点分。。。{:soso_e113:}
回复 使用道具 举报
罗海云 发表于 2013-3-26 22:26
while (i++< 100)
判断这儿有点讲究,
举例吧.

可是算的时候是从0开始的啊,那第一个和第二个区别在哪啊?
回复 使用道具 举报
本帖最后由 罗海云 于 2013-3-26 22:28 编辑

  while (i++< 100)
判断这儿有点讲究,
举例吧.
i++   在i所在的表达式中使用i的当前值后,让i加1
++i   预先在i基础上加1,然后在i所在的表达式中使用i的新值
这样应该就明了了.
而且上面楼上说的前一个问题...就是while(i < 100)...没有把100算进去.应该设置成while(i <= 100)
回复 使用道具 举报
1.  while (i< 100) //没有将100计算在内,所以第一的结果是4215
2.  while (i++< 100)//判断完之后,i的值变为100,由于100不能被7整除,所以将100计算在内,从而第二个的结果是4315
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马