黑马程序员技术交流社区

标题: 练习while循环时出现错误求解 [打印本页]

作者: 天空的风    时间: 2014-4-12 13:51
标题: 练习while循环时出现错误求解
本帖最后由 天空的风 于 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,求大神帮忙。

作者: 鲤鱼    时间: 2014-4-12 14:20
实际上,因为你一直都是a+b。
a-1加上b+1(1+100 2+99 3+88……)一直等于101 循环多少次sum都只等于101
而不是sum+下一个数 ( i=0;i++;sum=i+sum;)

另外出现问题时你可以选择程序某处设置断点,右键或者F9也可以,然后F10逐语句运行查看。
作者: 鲤鱼    时间: 2014-4-12 14:37
  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乘以你循环的次数就是累加的结果。
作者: 天空的风    时间: 2014-4-12 15:00
鲤鱼 发表于 2014-4-12 14:37
两种方法,第一个是从1~100的累加
第二个是你的思路,不过略蛋疼。你只要把101乘以你循环的次数就是累加的 ...

果然是这样,谢谢。
作者: 伪善者。    时间: 2014-4-12 16:26
亲这个走循环的时候木有把新得到的a+b累加到 sum上
可以把sum=a+b 改成 sum+=(a+b)
另外像楼上说的
建议设置断点 调试运行一下  就一目了然了




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