用C语言计算:s=1-1/2!+2/3!+……+((-1)^(n-1))(n-1)/n!,下面的程序是我写的,可是运行错误怎么改。

#include<stdio.h>
double f(int n);
int main(void)
{
int i,n,den,flag;
double sum,item;
#include<stdio.h>
double f(int n);
int main(void)
{
int i,n,den,flag;
double sum,item;
printf ("enter n:");
scanf("%d",&n);
den=0;flag=-1;sum=0;
for(i=0;i<=n;i++){
item=flag*1.0*(den-1)/f(den);
sum=sum+item;
flag=-flag;
den=den+1;
}
printf("sum=%f\n",sum);
return 0;
}
double f(int n){
int i;
double f=1.0;
for(i=1;1<=n;i++)
f*=i;
return f;
}

由于你的n是int型,则1/n是整数,程序中的1/n或(-1)/n一直是0,所以s一直都是0;将t=1/n和t=(-1)/n改为t=1/(float)n和t=-1/(float)n即可,即将n强制转换为float型,这样1/n就可以表示为小数了。追问

能打一下代码吗

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言编程题,计算S=1-1\/2+1\/3-1\/4...+1\/m
由于你的n是int型,则1\/n是整数,程序中的1\/n或(-1)\/n一直是0,所以s一直都是0;将t=1\/n和t=(-1)\/n改为t=1\/(float)n和t=-1\/(float)n即可,即将n强制转换为float型,这样1\/n就可以表示为小数了。

C语言问题 计算s=1\/1!+1\/2!+1\/3!+...+1\/n!(n<20,从键盘输入)
int main(void){ int n,i,t;double sum=0;printf("输入n:\\n");scanf("%d",&n);for(i=1;i<=n;i++){ t*=i;sum+=1.0\/t; \/*由于sum是浮点数 所以要用这个形势 } printf("sum=%lf",sum);return 0;} 这种写法因该是标准的!仅供参考 ...

c语言程序问题:求1\/2+2\/3+……+(n-1)\/n
int main(void){ int sum,n,x,t;scanf("%d",&n);for(sum=0,x=t=1;t<=n;sum+=x*=t++);printf("%d\\n",sum);return 0;}

...s的前n项和,s=1\/2-2\/3+3\/4-4\/5+...(-1)n\/(n+1)
如果你不把flag 改为float型的话 运行的结果是 0哦

用c语言编程:计算s=1-1\/2+1\/3-1\/4+1\/5……+1\/m,其中m由输入决定_百度知 ...
Enter m(m>0)...\\nm="); scanf("%d",&m); if(m>0) break; printf("Error, redo: "); } for(s=0,i=1;i<=m;i++) s += i&1 ? 1.0\/i : -1.0\/i; printf("The result is %f\\n",s); return 0;} ...

求C语言编程 计算:sum=1-1\/2!+1\/3!-1\/4!+ …… -1\/10!
自己看一下,,好久不自己编啦 include<stdio.h> void main(){ double sum=0.0,i,t=1;int s=1;for(i=1.0;i<=10.0;i++){ t*=i;sum+=s\/t;s=-s;} printf("%f",sum);}

关于c语言的题“求S=1\/1!+1\/2!+1\/3!+…+1\/N!”我知道算法但是我的结果最...
你的程序没有问题,结果也没有问题。是因为double类型的有效位数是15位,到了第16位及后面的数字,就没有意义了。这里要涉及截断误差和积累误差。二进制无法精确表示某些十进制小数,而计算机内存容量又是有限的,所以在表示十进制数值时,必然会因为参与表达数值小数部分的二进制位数有限而产生误差。而...

如何用C语言求s=1\/1*2+1\/2*3+...+1\/n(n+1)
给你个小例子参考一下:include <stdio.h> int main(){ int i, n=10;double nSum = 0.0;for (i=1; i<n+1; i++){ nSum += 1.0 \/ (i*1.0*(i+1.0));} printf("%lf\\n", nSum);return 0;}

怎样用C语言编程计算1+ 1\/2+ 1\/3 +...+ 1\/n?
for(i=1;i<=n;i++)sum+=(float)1\/i;printf("前n项和为sum=%.4f\\n",sum);return 0;} K&R C 起初,C语言没有官方标准。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。布莱恩·柯林汉(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本书,名叫《The C ...

C语言编程S=(1-1\/2)+(1\/3-1\/4)+……(1\/(2n-1)-1\/2n)?
include <stdio.h> int main(){ int i, j, n;double s = 0;scanf("%d", &n);for(i = 1; i <= n; i++)s += ((double)1\/(2*i-1) - (double)1\/(2*i));printf("%lf\\n", s);return 0;}

相似回答