C语言 输入n,输出1-1/2+1/3......+(-1)(n-1次方)*1/n的值 示例 输入:10 输出:0.645635 !!

#include<stdio.h>
int fun(int n);
int main(void)
{
int n;
double ff;
scanf("%d",&n);
ff=fun(n);
printf("%.6f",ff);
return 0;

}
int fun(int n)
{
int i;
double temp=2,item=1.0,sum=1.0,flag=-1.0;
for(i=1;i<n-1;i++)
{
sum=flag*item+sum;
item=1/temp;
flag=-flag;
temp=temp+1;
}
return sum;
}做完这题,信心瞬间没了,这么容易的题都做错了。。。。。。。。。。

第1个回答  2012-10-25
原题是N项和 你的求和里面
for(i=1;i<n-1;i++)这样只有1到n-2只有n-2项 加上你原来的一项 只有n-1项 少算一项吧。。
第2个回答  2012-10-26
sum=flag*item+sum;
item=1/temp;
这两句换一下位置。。
还有fun函数返回值改为double本回答被提问者采纳
第3个回答  2012-10-25
#include<stdio.h>
double fun(int n);
int main(void)
{
int n;
double ff;
scanf("%d",&n);
ff=fun(n);
printf("%.6f",ff);
return 0;
}

double fun(int n)
{
double sum=0.0,item,i,flag=1;
for(i=1;i<=n;i++)
{
item=1.0/i;
sum=sum+(double)flag*item;
flag=-flag;
}
return sum;
}

//经编译通过……
相似回答