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

提示用户输入一个正整数n,利用while循环计算并输出:1-2+3-4+5-6+7…+n的和,讲下具体的思路,谢谢谢谢

6 个回复

倒序浏览

  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: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值即可。
回复 使用道具 举报
楼上两位基本把思想说清楚了,楼主要求的while循环,其实跟for没啥大区别,将int i=1;定义在外部,i++放在while循环内部即可。
回复 使用道具 举报
本帖最后由 愿望 于 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拉.

  我们可以用学过的数学知识,, 解决这种类似的问题~
   这样省去了很多麻烦呀!   :)  嘻嘻~~~~~
回复 使用道具 举报
主要思路是偶数是-,奇数是+。while中用if判断奇偶性然后选择哪种运算
回复 使用道具 举报
mybdgw 初级黑马 2014-7-11 22:07:45
7#
  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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马