c语言题 。简单交错序列前n项和如下面的图片所示 , 我想问一下 我这样写的代码到底错在哪里了呢?🙏🏻

img


c语言题 , 简单交错序列前n项和, 我想问一下 我这样写的代码到底错在哪里了呢?🙏🏻


#include "stdio.h"
#include "math.h"
int main(void)
{
    int n,i;
    double j = 1;
    double sum = 0;
    scanf("%d", &n);
    for(i = 1; i<= n; i++)
    {
        if((int)j%2 == 0)
        {
            sum -= 1.0/j;
        }else{
            sum += 1.0/j;
        }
        j = fabs(j) + 3;
        
    }
    printf("sum = %.3f\n",sum);
    return 0;
}

你这个j每次都是负数,比如当j = 7的时候,最终也是用1除以-7.而不是除以7.
可以换成其他的写法’
比如用(-1)的n-1次方


#include<stdio.h>
int main()
{
  int n;
  int j=1;
  scanf("%d",&n);
  int i;
  double sum=0.0;
  int d=1;
  for(i=1;i<=n;i++)
  {
    sum+=1.0/d*j;
    d+=3;
    j=-j;
  }
  printf("sum = %.3lf\n",sum);
  return 0;
}