黑马程序员技术交流社区
标题: 问题求助,求大神 ,求详细 [打印本页]
作者: wg592930 时间: 2015-4-26 10:34
标题: 问题求助,求大神 ,求详细
程序1:实现 1-2+3-4+5-4................n
#include<stdio.h>
int main()
{
int n =0;;
while(n <=0)
{
printf("请输入一个正整数:");
scanf("%d",&n );
}
int sum = 0;
int i = 0;
while(i <n )
{
i++;
if (i %2 == 0)
{
sum=sum-i; ///////////////////////////问题 把这里改成 i= 0-i ; 为什么会出现死循环,执行错误。我的思路是 每当出现偶数 就将i 变为 相反数,请问这样有什么错误。
}
sum =sum + i ;
}
printf("sum 的值为 : %d\n" ,sum);
return 0;
}
作者: So然后 时间: 2015-4-26 10:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: wg592930 时间: 2015-4-26 10:57
可否把你认为正确的程序贴出来,谢谢,(按照我的思路)
作者: So然后 时间: 2015-4-26 11:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: 霸王睡别姬 时间: 2015-4-26 11:06
你这个“1-2+3-4+5-4......n”好像没规律,我猜后面一个写错了;我再猜,我给你写了一个
- #include <stdio.h>
- int main()
- {
- int n;
- int sum=0;
- int i=1;
- int count=0;
- printf("请输入一个正整数:");
- scanf("%d",&n);
- while (i<=n)
- {
- count=i;
- if(i%2==0)
- {
- count=-i;
- }
- sum=sum+count;
- i++;
- }
- printf("sum的值为:%d\n",sum);
- getchar();
- getchar();
- }
复制代码
看看可能有点帮助
作者: wg592930 时间: 2015-4-26 11:13
谢谢 看来我得必须再加一个变量
作者: 程序小白猿 时间: 2015-4-26 11:55
这个基础视频里的作业里是有的,看下答案
作者: shao 时间: 2015-4-26 13:08
死循环???
作者: irobort 时间: 2015-4-27 20:51
死循环,,,,,,,
作者: mony 时间: 2015-4-27 21:00
我觉得这样更简单
- int main(int argc, const char * argv[]) {
- int n = 0,total = 0;
- while (n <= 0) {
- printf("输入一个正整数\n");
- scanf("%d",&n);
- }
- for (int i = 0; i <= n; i++) {
- total += (i % 2 == 0 ? -i : i);
- }
- printf("总和为%d",total);
- return 0;
- }
复制代码
作者: mony 时间: 2015-4-27 21:01
下面那个可以不加括号,重发
- int main(int argc, const char * argv[]) {
- int n = 0,total = 0;
- while (n <= 0) {
- printf("输入一个正整数\n");
- scanf("%d",&n);
- }
- for (int i = 0; i <= n; i++) {
- total += i % 2 == 0 ? -i : i;
- }
- printf("总和为%d",total);
- return 0;
- }
复制代码
作者: shenxian88 时间: 2015-4-30 11:40
你这个题,你用断点调试一下就好了,那样你就能看出是哪里出了问题,
作者: MllWing 时间: 2015-4-30 14:04
奇数前面是加,偶数前面是减 i=0-i,i是0或负数,n是正数,死循环
作者: wg592930 时间: 2015-5-1 18:03
谢谢 你 已经解决了 感谢你的帮助
作者: 吾爱SF 时间: 2015-5-1 19:13
路过,,看看,
作者: zhangxiaodonghi 时间: 2015-8-17 17:42
共同学习 学习
作者: 408205555 时间: 2015-8-17 20:09
1-2+3-4+5-6................n 你都写错了,6要是4就没规律了,无解
规律就是奇数和减去偶数和。
void main()
{
int num;
scanf("%d",&num);
//奇数的和
int oddNumber=0;
//偶数的和
int evenNumber=0;
//结果=奇数的和-偶数的和
int result=0;
for(int i=1;i<=num;i++){
if(i&1==1){ //奇数,使用逻辑&可以让程序执行的快一些
oddNumber=oddNumber+i;
}else{
evenNumber=evenNumber+i;
}
}
result=oddNumber-evenNumber;
printf("result=%d",result);
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |