输入10,答案应该等于0.645635,为什么我这个是负的?

图片说明

#include"stdio.h"
#include"string.h"
#include"conio.h"
#include"windows.h"
#include"math.h"
double funa (int n);
int main()
{
 double u;
 int y;
 printf("请输入分母的值:");scanf("%d",&y);
 u = funa ( y );
 printf("  %f \n",u);
 return 0;
}

double funa (int n)
{
 double add = 0;
 double t;
 int k;
 int s = 1;
 for ( k = 1;k <= n; k ++ )
 {
  s = -s;
  t = s * 1.0/k;
  add = add + t;
 }
 
 return add;
}

一楼的方式可以,当然也可以把for循环里的那个s=-s写在 add=add+t;的后面 之所以你的结果为负是你的 一开始 就是 -1*1.0/1为-1
题目要求是 1-1/2+1/3-1/4....而你的程序变成了 -1+1/2-1/3+1/4...完全与题目相反,所以才为负,而不是得到你想要的结果

你开始给s赋值的时候应该为-1就可以了,因为是在双数项是负的