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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 天空的风 初级黑马   /  2014-4-12 13:51  /  1205 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 天空的风 于 2014-4-12 15:00 编辑

正在练习while循环时,联系题目从1加到100
  1. int a = 100;
  2.             int b = 1;
  3.             int i = 0;
  4.             int sum = 0;
  5.             while (i < 50)
  6.             {
  7.                 sum = a + b;
  8.                 a--;
  9.                 b++;
  10.                 i++;
  11.             }
  12.             


  13.             Console.WriteLine("从1加到100的合为{0}", sum
  14.                 );


  15.             Console.ReadKey();
复制代码

的和,上面是代码:得到的结果却是101,求大神帮忙。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

4 个回复

倒序浏览
实际上,因为你一直都是a+b。
a-1加上b+1(1+100 2+99 3+88……)一直等于101 循环多少次sum都只等于101
而不是sum+下一个数 ( i=0;i++;sum=i+sum;)

另外出现问题时你可以选择程序某处设置断点,右键或者F9也可以,然后F10逐语句运行查看。
回复 使用道具 举报
  1.             //int sum=0;
  2.             //int i = 0;
  3.             //while(i<100)
  4.             //{
  5.             //    i++;
  6.             //    sum += i;//sum=sum+i
  7.             //}
  8.             int a = 1, b = 100, sum = 0, i = 0;
  9.             while (i < 50)
  10.             {
  11.                 sum = (a++) + (b--);
  12.                 i++;
  13.             }
  14.             sum=sum*i;
  15.             Console.WriteLine("从1加到100的合为{0}", sum);


  16.             Console.ReadKey();
复制代码

两种方法,第一个是从1~100的累加
第二个是你的思路,不过略蛋疼。你只要把101乘以你循环的次数就是累加的结果。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
鲤鱼 发表于 2014-4-12 14:37
两种方法,第一个是从1~100的累加
第二个是你的思路,不过略蛋疼。你只要把101乘以你循环的次数就是累加的 ...

果然是这样,谢谢。
回复 使用道具 举报
亲这个走循环的时候木有把新得到的a+b累加到 sum上
可以把sum=a+b 改成 sum+=(a+b)
另外像楼上说的
建议设置断点 调试运行一下  就一目了然了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马