用C语言编写1-3++5-7+9-......-99+101。下面是我写的程序,我运行的程序是109,我感觉不对,

//15. 求1-3+5-7+。。。-99+101的值。
#include "stdio.h"
void main()
{ int i,k,sum;
k=0;
sum=0;
for(i=1;i<=101;i=i+2)
{i=i*(-1)^k;sum=sum+i;k=k+1;}
printf("%d",sum);
}
在我的程序里改,不需要你重新写~我也不知道哪里写错了,求帮忙

第1个回答  2014-06-07
#include "stdio.h"
void main()
{
  int i, k, sum;
  k = 1;
  sum = 0;
  for(i=1;i<=101;i=i+2)
  {sum=sum+i*k;k=-k;}
  printf("%d",sum);
}

与其他语言不同,^符号在C一类的语言中不是用来表达幂次运算而是按位异或运算,C没有自带的表示幂次的运算符,可以考虑用pow(x, n)函数。

第2个回答  2014-06-07

因为 ^ 是异或运算符,而不是数学中的次方。

另外不要修改循环变量 i ,这会导致循环无法正常进行。

对应for循环改为

for(i=1;i<=101;i=i+2)
{
    if((i+1)%4!=0)    sum=sum+(i+1);
    else    sum=sum-(i+1);
}

第3个回答  2014-06-07
C程序中指数不是用^表示。
void main()
{
int i,k,sum,f=1;
k=0;
sum=0;
for(i=1;i<=101;i=i+2)
{
i=i*f;
sum=sum+i;
f=-f;
}
printf("%d",sum);
}
第4个回答  推荐于2016-09-09
#include "stdio.h"
void main()
{ int i,k,sum;
  k=1;
  sum=0;
  for(i=1;i<=101;i=i+2)
  {sum=sum+i*k;k=-k;}
  printf("%d",sum);
}

本回答被提问者采纳
相似回答