黑马程序员技术交流社区

标题: 这个程序怎么编,给讲下思路就可以,谢谢 [打印本页]

作者: 楠瓜果    时间: 2014-7-11 14:39
标题: 这个程序怎么编,给讲下思路就可以,谢谢
提示用户输入一个正整数n,利用while循环计算并输出:1-2+3-4+5-6+7…+n的和,讲下具体的思路,谢谢谢谢


作者: 54lier    时间: 2014-7-11 15:13

  1. int main()
  2. {
  3.   int n;
  4.   int sum;
  5.   scanf("%d", &n);
  6.   for (int i=1; i<n; i++)
  7.   {
  8.    sum = (i % 2 == 0) ? (sum + i) : (sum - i);
  9.   }
  10.   return 1;
  11. }
复制代码


不知道这样行不行,你可以试试
作者: zhs    时间: 2014-7-11 15:39
本帖最后由 zhs 于 2014-7-11 15:40 编辑

解题思路:
第一步:用户输入一个正整数n,用scanf接收用户输入n的值。
第二步:题目要求1-2+3-4....n,所以需要一个循环遍历1...n,用for循环,for(i=1,i<=n,i++)
第三步:题目最终要返回运算结果,定义一个变量int sum=0存储这个结果,即sum=sum+/-i;
第四步:观察得知循环过程中+/-跟数值奇偶有关,奇数则+,偶数则-,所以需要if判断
             即:if(i%2==0)
                    sum-=i;                    else
                    sum+=i;
第五步:循环结束输出sum值即可。

作者: 曹雨    时间: 2014-7-11 16:21
楼上两位基本把思想说清楚了,楼主要求的while循环,其实跟for没啥大区别,将int i=1;定义在外部,i++放在while循环内部即可。
作者: 愿望    时间: 2014-7-11 18:22
本帖最后由 愿望 于 2014-7-11 18:26 编辑

太麻烦拉,.  你仔细看这个式子  1-2+3-4+5-6+....    是不是可以看成(1-2)+(3-4+(5-6)...啊  ?
   是不是式子就变成了  -1-1-1-1-1.....啊  ?
  那样while的条件n是偶数的话, 那结果就是-n/2 ;
     n是奇数的话, 结果就是 n+(1-n)/2 这里(1-n)/2是算出有多少个-1相加 , 再加上最后一个n的值就OK拉.

  我们可以用学过的数学知识,, 解决这种类似的问题~
   这样省去了很多麻烦呀!   :)  嘻嘻~~~~~
作者: 丶白菜你个小番    时间: 2014-7-11 21:35
主要思路是偶数是-,奇数是+。while中用if判断奇偶性然后选择哪种运算
作者: mybdgw    时间: 2014-7-11 22:07
  1. int main()
  2. {
  3.   int n,sum=0;
  4.   scanf("%d", &n);
  5.   for (int i=1; i<=n; i++)
  6.   {
  7.     if(0==i%2){
  8.         sum=sum+(-i);
  9.     }else{
  10.         sum=sum+i;
  11.     }
  12.   }
  13. printf("%d\n",sum);
  14.   return 0;
  15. }
复制代码





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