c语言用函数编写:1-1/2+1/3-1/4.....+((-1)^(n+1))*(1/n)

#include <stdio.h>
double fun(int n);
main()
{ int x;
printf("Please enter x:");
scanf("%d",&x);
printf("%f\n",fun(x));
}
double fun (int n)
{ int i=1,t=1;
double s=0;
while(i<=n)
{s=s+t/i;
t=-t;
i++;}
return s;
}
这个程序哪儿不对?

main()函数没有返回值
在fun函数中做除法运算时要对操作数进行double类型强转,否则整数间除法会出错。得到的值不准确。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-14
#include <stdio.h>
double fun(int n);
main()
{ int x;
printf("Please enter x:");
scanf("%d",&x);
printf("%f\n",fun(x));
}
double fun (int n)
{ int i=1,t=1;
double s=0;
while(i<=n)
{s=s+t/i;//改成s=s+1.0*t/i;t和i都是int,所以t/i也是int
t=-t;
i++;}
return s;
}本回答被提问者采纳
相似回答