/* 1-1/2+1/3-1/4+……+pow(-1,n)*1/n */
#include
#include
void JiSuan(int);
main()
{
int n;
printf("n=");
scanf("%d",&n);
JiSuan(n);
getch();
}
void JiSuan(int n)
{
double result=1;
int i;
for(i=2;i<=n;i++)
result-=pow(-1,n)*1.0/n;
printf("result=%f",result);
}
---------------------
/* 1-1/2+1/3-1/4+pow(-1,n)*1/n */
#include
void JiSuan(int);
main()
{
int n;
printf("n=");
scanf("%d",&n);
JiSuan(n);
getch();
}
void JiSuan(int n)
{
double result;
result=1-1.0/2+1.0/3-1.0/4+pow(-1,n)*1.0/n;
printf("result=%f",result);
}
#include
double fun(int n)
{
int i;
double data=1;
for(i=2; i<=n; i++)
{
data += pow(-1, i)/i;
}
return data;
}
楼主是要绝对精确的值(分数表示),还是只要求一定精度(双精度浮点数)?
绝对精确的值(分数表示)与一定精度(双精度浮点数)的算法有点不同.
#include
double s(int n)
{
double sum=0.0;
int i,a=1;
for(i=1;i<=n;i++)
{
sum+=a*(1.0/i);
a=-a;
}
return sum;
}
main()
{
int n;
scanf("%d",&n);
printf("%f\n",s(n));
}