黑马程序员技术交流社区
标题: 这个程序怎么编,给讲下思路就可以,谢谢 [打印本页]
作者: 楠瓜果 时间: 2014-7-11 14:39
标题: 这个程序怎么编,给讲下思路就可以,谢谢
提示用户输入一个正整数n,利用while循环计算并输出:1-2+3-4+5-6+7…+n的和,讲下具体的思路,谢谢谢谢
作者: 54lier 时间: 2014-7-11 15:13
- int main()
- {
- int n;
- int sum;
- scanf("%d", &n);
- for (int i=1; i<n; i++)
- {
- sum = (i % 2 == 0) ? (sum + i) : (sum - i);
- }
- return 1;
- }
复制代码
不知道这样行不行,你可以试试
作者: 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
- int main()
- {
- int n,sum=0;
- scanf("%d", &n);
- for (int i=1; i<=n; i++)
- {
- if(0==i%2){
- sum=sum+(-i);
- }else{
- sum=sum+i;
- }
- }
- printf("%d\n",sum);
- return 0;
- }
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |