求1-2+3-4+5-6+7+…+99-100 C语言编程 下面程序哪里错了

#include <stdio.h>
main()
{
int a,s=0;
for(a=1;a<100;a++)
{if(a%2==0)
s=s-a;
continue;
if(a%2!=0)
s=s+a;
continue;}
printf("s=%d");
return 0;
}

既然是要求解到第一百项,那么事情就不必要搞得那么麻烦。表达式中,所有为奇数项项都是正数,偶数项都是负数,而奇数项和偶数项各有50项我们不妨利用等差数列求和公式,分别求出奇数项和偶数项绝对值的和。再用奇数项绝对值的和减去偶数项绝对值的和即可。
还有更简单的方法,从第一项开始一次如此:(1-2) + (3-4) +(5-6) +....+ (99-100) ,发现如果将每个括号看作一项,那么每项都是-1 ,一共有50项,那么结果就很明显了,是 -50 。
那么将结论推广一下,对于n项的这个算式的结果求解,如果n为偶数,那么结果就是 -(n/2),若n为奇数,那么结果就是 n - n/2(n/2向下取整)
那么对于任意项数n的算式求解代码:
#include <stdio.h>

int main(void)
{
int n;
int sum;

scanf("%d", &n);

if (n % 2 == 0)
{
sum = n / 2 * -1;
printf("%d\n", sum);
}
else
{
sum = n - n / 2;
printf("%d\n", sum);
}

return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-12
void main ()
{
int s = 0;
for(int i =0;i<101;i++) //输出0-100个数
{
if(i%2 != 0) //当i为奇数时
{
s = s - i;
else
//当i为偶数时
s = s + i;
}
printf("%d\n",s);
s=s; //这里要记住s ,不知道需要不需要,自己试试。
}
getch();
}
第2个回答  2012-11-12
#include <stdio.h>
main()
{
int a,s=0;
for(a=1;a<100;a++) //应为a<=100
{if(a%2==0)
{ //括起来,下面同理,或者就直接去掉continue
s=s-a;
continue;
}
if(a%2!=0)
{
s=s+a;
continue;
}
}
printf("s=%d"); //printf("s=%d", s);
return 0;
}
第3个回答  2012-11-12
printf("s=%d");
第4个回答  2012-11-12
应该是printf("s=%d",s);
相似回答