求1-3+5-7+9-...-99+101的值

renyue9015 2009-12-13 01:58:11
求1-3+5-7+9-...-99+101的值
...全文
2572 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoulun13688 2009-12-13
  • 打赏
  • 举报
回复
#include <stdio.h>
#include<math.h>
void main()
{
int i=1,sign=1,result=0;
while(abs(i) <103)
{
result+=i;
sign=-sign;
i=sign*(i+2);
}
printf("%d",result);
}
xladykiller 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 renyue9015 的回复:]
求1-3+5-7+9-...-99+101的值
[/Quote]
int i,sum=0,flag=1;
for(i=1;i <=101;i+=2)
{
sum += flag*i;
flag = -flag;
}
这是一般的想法,,,,不过如果对资源有要求,,,那么由于数据已知,人工算出结果,直接输出结果是最好的,
Waiting4you 2009-12-13
  • 打赏
  • 举报
回复 1
printf("%d\n",51);

简单吧,一行代码实现。
z569362161 2009-12-13
  • 打赏
  • 举报
回复 1
printf("%d\n",1-3+5-7+9-...-99+101);

简单吧,一行代码实现。
li32768 2009-12-13
  • 打赏
  • 举报
回复
这个啊,考虑数字是有奇数个还是偶数个了,一般都能很快算出来的了
120680451 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 delphiwcdj 的回复:]
打错了,此题
C/C++ codeif (n%2==0) result=-n;else result= (n+1)/2;
[/Quote]
第2个我没算呢,简化也是这样的,不过,当n是偶数是,不应该是-n哦:

if (n % 2 == 0) result = - n / 2 ;
else result = ( n + 1) / 2 ;
delphiwcdj 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 delphiwcdj 的回复:]
打错了,此题
C/C++ codeif (n%2==0) result=-n;else result= (n+1)/2;
[/Quote]
e..

if (n % 2 == 0) result = - ((-n+1)/2);
else result = (n+1)/2;
delphiwcdj 2009-12-13
  • 打赏
  • 举报
回复
打错了,此题

if (n % 2 == 0) result = -n;
else result = (n+1)/2;
delphiwcdj 2009-12-13
  • 打赏
  • 举报
回复
if (n % 2 == 0) result = - n / 2 ;
else result = - (n - 1) / 2 + n ;
-------------
7L is right.

if (n % 2 == 0) result = - ((-n)+1 / 2 );
else result = (n+1)/2;
shellfish567 2009-12-13
  • 打赏
  • 举报
回复
多谢批评……你这个确实效率快的多了[Quote=引用 7 楼 ll120680451 的回复:]
引用 1 楼 shellfish567 的回复:
#include <stdio.h>
int main()
{
  int result=0;
  int i=1;
  while(i <103||i>-103)
  {
      result+=i;
      if(i>0)i+=2;
      else  i+=-2;       
      i=-i;
  }
    printf("%d",result);
}

对于这种题,这么做是要被批评的.不要因为计算器很快,就用暴力来算.
1-3+5-7+9-...-99+101
=1+(-3+5)+(-7+9)+...+(-99+101)
=1+2*25
=51
用程序固然能算出来,但能简化的就得简化.
如果有题这样,求:
1-2+3-4+5-6+...n
可以这样来:
C/C++ codeif (n%2==0) result=- n/2 ;else result=- (n-1)/2+ n ;
这可比用循环来快得多了,如果N非常大,那效果就明白了.
[/Quote]
lovesi3344 2009-12-13
  • 打赏
  • 举报
回复
mark
机智的呆呆 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 shellfish567 的回复:]
说了等于没说…………………………
引用 2 楼 mstlq 的回复:
1、分步骤,1、2、3,写出来
2、画流程图
3、根据流程图,写伪代码
4、根据伪代码,编写代码,出现问题见 4.1 - 4.3,未解决跳5,解决跳4直到结束
4.1 搜索 msdn http://msdn.microsoft.com/zh-cn/library/default.aspx
4.2 搜索 Google,建议针对 vckbase (中文)、Code Project(English) 站点搜索
4.3 搜索论坛
5、搜索没有解决问题:提炼遇到的问题,脱离应用程序本身的内容成为纯粹的技术问题,找到关键问题代码段,然后论坛提问

[/Quote]
。。。。。一句话就否定了2L的苦心~~~
120680451 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shellfish567 的回复:]
#include <stdio.h>
int main()
{
  int result=0;
  int i=1;
  while(i <103||i>-103)
  {
      result+=i;
      if(i>0)i+=2;
      else  i+=-2;       
      i=-i;
  }
    printf("%d",result);
}
[/Quote]
对于这种题,这么做是要被批评的.不要因为计算器很快,就用暴力来算.
1-3+5-7+9-...-99+101
=1+(-3+5)+(-7+9)+...+(-99+101)
=1+2*25
=51
用程序固然能算出来,但能简化的就得简化.
如果有题这样,求:
1-2+3-4+5-6+...n
可以这样来:

if (n % 2 == 0) result = - n / 2 ;
else result = - (n - 1) / 2 + n ;

这可比用循环来快得多了,如果N非常大,那效果就明白了.
renyue9015 2009-12-13
  • 打赏
  • 举报
回复
谢谢大家啦
shellfish567 2009-12-13
  • 打赏
  • 举报
回复
说了等于没说…………………………
[Quote=引用 2 楼 mstlq 的回复:]
1、分步骤,1、2、3,写出来
2、画流程图
3、根据流程图,写伪代码
4、根据伪代码,编写代码,出现问题见 4.1 - 4.3,未解决跳5,解决跳4直到结束
4.1 搜索 msdn http://msdn.microsoft.com/zh-cn/library/default.aspx
4.2 搜索 Google,建议针对 vckbase (中文)、Code Project(English) 站点搜索
4.3 搜索论坛
5、搜索没有解决问题:提炼遇到的问题,脱离应用程序本身的内容成为纯粹的技术问题,找到关键问题代码段,然后论坛提问
[/Quote]
highball 2009-12-13
  • 打赏
  • 举报
回复
-51
zhangxfeng112 2009-12-13
  • 打赏
  • 举报
回复
#include <stdio.h>

void main()
{
int sum = 0;
int sign[2] = {1,-1};
for(int i = 0; i * 2 + 1 <= 101; i++)
{
sum += (2 * i + 1)*(sign[i&0x1]);
}
printf("the sum is: %d",sum);
system("pause");
}
mstlq 2009-12-13
  • 打赏
  • 举报
回复
1、分步骤,1、2、3,写出来
2、画流程图
3、根据流程图,写伪代码
4、根据伪代码,编写代码,出现问题见 4.1 - 4.3,未解决跳5,解决跳4直到结束
4.1 搜索 msdn http://msdn.microsoft.com/zh-cn/library/default.aspx
4.2 搜索 Google,建议针对 vckbase (中文)、Code Project(English) 站点搜索
4.3 搜索论坛
5、搜索没有解决问题:提炼遇到的问题,脱离应用程序本身的内容成为纯粹的技术问题,找到关键问题代码段,然后论坛提问
shellfish567 2009-12-13
  • 打赏
  • 举报
回复
#include <stdio.h>
int main()
{
int result=0;
int i=1;
while(i<103||i>-103)
{
result+=i;
if(i>0)i+=2;
else i+=-2;
i=-i;
}
printf("%d",result);
}

70,018

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧