C语言编程题:按下面公式求sum的近似值,输出结果保留4为小数 1-1/3+1/5+......+(-1)^(n-1)(1/(2n-1))

#include "stdio.h"
double fun( int n )
{
double c;
/***********begin***********/

/***********end***********/
}

void main()
{
void NONO( );//函数声明
double sum;
int n;
printf("Enter n:\n");
scanf("%d",&n);
sum=fun(n);
printf("sum=%.4f\n",sum);
NONO( );
}

void NONO( )
{ FILE *fr,*fw;
int i, x;
fr=fopen("D:\\exam\\03100215\\PROGIN.DAT","r");
fw=fopen("D:\\exam\\03100215\\PROGOUT.DAT","w");
for(i=1;i<=5;i++)
{ fscanf(fr,"%d",&x);
fprintf(fw,"s=%.4f\n",fun(x));}
fclose(fr);
fclose(fw);
}

int flag,denominator,i.
double c,item;
flag=1;denominator=1;c=0;item=0;//flag表示第i项的符号,denominator表示第i项的分母,初始值为1,item为第i项的值,c存放总和
for(i=0;i<n;i++)
{
item=flag*1.0/denominator; //第i项的值
c=c+item; //总和
flag=-flag; //符号取反
denominator=denominator + 2; //分母+2
}
return c; //返回总和

参考资料:《c语言程序设计》 何应钦 颜晖主编

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-13
???,你是不是要求1-1/3+1/5+......+(-1)^(n-1)(1/(2n-1))的值呀??追问

嗯,是

追答

那很简单,不用那么复杂的#include
main()
{
int n,m,i=1;
float sum=0;
printf("请输入n:");
scanf("%d",&n);
for(m=1;m<=2*n-1;m=m+2)
{
sum=sum+i*(float)1/m;
i=(-1)*i;
}
printf("%.4f\n",sum);
}

追问

上面的模版有

追答

?????不懂,你不是要编写这道题目吗???

追问

这是考试题目,只能填空,不能自己编写.......
你能不能详细解释下?第一次做这种题目,不知道怎么做..........

追答

一样的
double fun( int n )
{
double c;
int m,n=1;
for(m=1;m<=2*n-1;m=m+2)
{
c=c+(double)n/m;
n=(-1)*n;
}
return c;
}

追问

编译错误:error C2082: redefinition of formal parameter 'n'

追答

一样的
double fun( int n )
{
double c;
int m,o=1;
for(m=1;m<=2*o-1;m=m+2)
{
c=c+(double)o/m;
o=(-1)*o;
}
return c;
}

本回答被提问者采纳
第2个回答  2012-05-21
比较复杂你做的
第3个回答  2012-05-13
double fun( int n )
{
double c;
/***********begin***********/

c=0;

int fac = 1;
for(int i=1;i<=n;i++)
{
c+=1.0*fac/(2*i-1);

fac = -fac;
}

return c;

/***********end***********/
}
相似回答