标题:求1-3+5-7+......-99+101的值
只看楼主
devil3c
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-3-8
 问题点数:0 回复次数:16 
求1-3+5-7+......-99+101的值
求1-3+5-7+......-99+101的值
#include <stdio.h>
#include <math.h>
main ()
{int t,sum,s;
  t=1;
  sum=0;
  s=1;
  while (fabs(t)<=101)
  {sum+=t;
  t+=2;
  s=-s;
  t=s*t;
  }
  printf ("sum = %d\n",sum);
}问下上边哪里有错```为什么编译完显示不出东西~
搜索更多相关主题的帖子: sum include int main fabs 
2008-03-08 10:50
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
#include <stdio.h>
#include <math.h>
main ()
{int t,sum,s;
  t=1;
  sum=0;
  s=1;
  while (fabs(t)<=101)
  {sum+=t;
  t=abs(t)+2;
  s=-s;
  t=s*t;
  }
  printf ("sum = %d\n",sum);
}

学习需要安静。。海盗要重新来过。。
2008-03-08 11:01
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:0 
#include <stdio.h>
#include <math.h>
main ()
{int t,sum,s;
  t=1;
  sum=0;
  s=1;
  while (fabs(t)<=101)
  {sum+=t;
  t+=2;
  s=-s;
  t=s*t;
  }
  printf ("sum = %d\n",sum);
System("PAUSE");
}

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2008-03-08 11:16
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
得分:0 
#include<stdio.h>
void main(int n)
{
   scanf("%d",&n);
if(((n+1)/2)%2==0)
   printf("sum=%d",sum=((n+1)/4)*(-2));
 else printf("sum=%d",sum=((n-1)/4)*(-2)+n);
}

多C多智慧,将C进行到底.........
2008-03-08 13:34
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
得分:0 
先看规律:

         规律是1开始的间隔最小的奇数数列``第偶数个数是负数

         1 -3 +5 -7 +9 -11 +13 。。。。

         一个很简单的规律:
                          如果是奇数个数(>=3个数),1后面相临的2个数加起来是2。
                          如果是偶数个数(>=2个数),从1开始,每个相临的数加起来为-2。

处理数据:

判断奇数或偶数很简单``最后一个数是正数就是奇数个,负的就是偶数个数,

接下来就是数数多少个数。


    看最后一个数的绝对值|m|
   
    根据:   2n+1 = |m| >> n = (|m|-1)/2 (n>=0, n为整数,并且n位偶数取负,n为奇数取正.)所以是(|m|-1)/2 + 1个数。


            当 m > 0 , 也就是奇数个数时,1后面相临的数就有 (|m|-1)/2 + 1 - 1 个数。
                       也就是 (|m|-1)/2 个数, 就是 (|m|-1)/4 对数。因为每对为2,结果就是 (|m|-1)/2 + 1。

                       所以最后结果就是: 1和它后面的数的个数的和----其实就是总数的个数。


            当 m < 0 , 也就是偶数个数时, 1开始的数就有 (|m|-1)/2 + 1  个数。
                       就是 (|m|-1)/4 + 1/2 对数, 因为每对为-2,结果就是  -( (|m|-1)/2 + 1) 。

                       所以最后结果就是: 总数的个数的相反数。


            综合上面的两个结论: 给出一个数列 (2n+1) (n>=0, n为整数,并且n位偶数取负,n为奇数取正.)

                                 对其求和,结果为就是项值(n+1).


所以``我们只要程序读入最后一个数M````就可以:

( m > 0 ) ? ( printf("%d", ( m-1 ) / 2 + 1 ) : ( printf("-%d", ( -m - 1 ) / 2 + 1 ) ;

很简单吧```

[[it] 本帖最后由 死了都要C 于 2008-3-10 10:11 编辑 [/it]]

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-03-08 15:40
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
得分:0 
这是我的:

#include <stdio.h>

#define LSAT 101
#define HANG ( LSAT -1 ) / 2 + 1
#define NL putchar('\n')
#define OD(_int)  printf ("%d", _int)

int main(void)
{
    ( LSAT > 0 ) ? ( OD( HANG ) ) : ( OD( HANG - 1 ) ) , NL ;  
     
     return 0  ;     
}

[[it] 本帖最后由 死了都要C 于 2008-3-8 12:27 编辑 [/it]]

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-03-08 15:56
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
斑竹的代码像魔法。。。。

学习需要安静。。海盗要重新来过。。
2008-03-08 15:59
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
得分:0 
是垮我还是损我```

我修改一下``

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-03-08 16:04
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
得分:0 
斑竹,我很想顶你哦。顶啦!

多C多智慧,将C进行到底.........
2008-03-08 17:06
赢政天下
Rank: 1
来 自:浙江
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-2-28
得分:0 
支持版主,因为程序不是能用就行的,还要考虑效率等很多方面,这道题有好多方法.我觉得像版主那样,先分析找规律,可以到事半功倍的效果.
2008-03-08 19:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-202476-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.262141 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved