C语言,求S=1/1!+1/2!+1/3!+…+1/N!

求S=1/1!+1/2!+1/3!+…+1/N!并输出结果(显示时小数部分占16位,计算时要求从第1项开始往后累加)。N为任意自然数(只考虑int型),从键盘读入。编程可用素材:printf("Please input n: ")、printf("\nS=1/1!+1/2!+...+1/…!=…。

第1个回答  2009-05-06
#include <stdio.h>
main()
{ int n,s=0;
sum(1,1, n);

scanf("%d",&n);
s=sum(n);
printf("%d\n",s); getch();
}
sum(int x,int y,int n)
{
int z;z=0;
for(x=1;x<=n;x++)
{for(y=1;y<=x;y++)
z+=y; }
return (z);
}
怎么这么快就有人回答了,你好厉害啊!!哥们我运行了一下 还好 计算还灵。 我也是慢慢修改才成功的,我用的是WIN-TC 不知他们用的是什么。。呵呵呵
第2个回答  2009-05-06
#include "stdio.h"
main()
{
int i,j,n,s=0,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
s+=j;
sum+=s;
printf("%d",sum);
}
这是帮你改的
void main()
{
int sum(int x,int y,int n);
int n,s=0;
scanf("%d",&n);
s=sum(1,1,n);
printf("%d\n",s);
}
int sum(int x,int y,int n)
{
int z=0;
for(x=1;x<=n;x++)
for(y=1;y<=x;y++)
z+=y;
return (z);
} 或者调用改为s=sum(n); 去掉x,y两个参数 并在调用函数里赋值
第3个回答  2009-05-06
#include <stdio.h>
void main()
{

int n,s=0;
int sum(int n);
scanf("%d",&n);
s=sum(n);
printf("%d\n",s);
}
int sum(int n)
{
int x,y,z=0;
for(x=1;x<=n;x++)
for(y=1;y<=x;y++)
z+=y;
return (z);
}
修改后的程序。。。。。。。。。。。。。。。
sum参数。。。
z初值。。。。。
第4个回答  2009-05-06
int main(int argc, char* argv[])
{
int iSum = 0; // 总和
int iNum = 1; // n
int iTemp = 0; // 中间结果
scanf("%d",&iNum);
for (int i = 1; i <= iNum; i++)
{
iTemp += i;
iSum += iTemp;
}
printf("iSum = %d\n",iSum);
return 0;
}
第5个回答  2013-12-09
#include<stdio.h>
void main(){
int n;
double x=1,s=0;
printf("Please input n: ");
scanf("%d",&n);
for(int i=1;i<=n;i++){
x=x*1.0/i;
s=s+x;
}
printf("\nS=1/1!+1/2!+...+1/%d!=%.16lf\n",n,s);
}

结果如图:

本回答被提问者采纳

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

输入正整数n,计算s = 1\/1! + 1\/2! + 1\/3! + ……+ 1\/n!的值
第二空:f=1 第三空:j<=k 第四空:f*=j

编写一个C语言程序:求S=1\/1+1\/2+1\/3+…+1\/n
void main(){ int i,n;double t,s=0;scanf("%d",&n);for(i=1;i<=n;i++){ t=1.0\/i;\/\/原因在这1和i都是int类型,1\/i就是整除了,只要i>1这个式子就是0,改1.0下就行了。s=s+t;} printf("s=%lf\\n",s);}

c语言求和s=1+1\/2+1\/3+1\/4+……+1\/n怎么做?
int i,n;float s=0;scanf("%d",&n);for(i=1;i<n;i++)s=s+(float)1\/i;。。。

编写程序求s=1+1\/2!+1\/3!+……+1\/n的值。
include <stdio.h> int main(void){ unsigned long n;unsigned long i;double s = 0.0;printf("Please input n:");scanf("%lu", &n);for(i = 1; i <= n; i++)s += 1.0 \/ i;printf("s=%lf\\n", s);return 0;} ...

用C语言编程s=1+1\/2!+1\/3!+1\/4!+……+1\/n!其中n的值由键盘输入(急...
include <stdio> double a(int num){ double s=1;for(int i=1;i<=num;i++)s=s*i;return s;} void main(){ int n;scanf("%d",&n);double s=0;for(int i=1;i<=n;i++)s+=1.0\/a(i);printf("%f",s);}

编写C程序:求1\/1!+1\/2!+1\/3!+...+1\/n!(n!=1*2*3*4...n)急!急!帮帮啊...
include <stdio.h> main(){ int i,n,j=1;double sum=0;printf("输入n的值:");scanf("%d",&n);for(i=1;i<=n;i++){ j=j*i;sum=sum+(1\/double(j));printf("%d ,%f\\n",j,sum);} printf("sum=%f\\n",sum);}

C++算1\/1!++1\/2!+1\/3!+...+1\/N!
0;double k(int j);int n;cout<<"please input a number n ";cin>>n;for(i=1;i<=n;i++)s=1\/k(i)+s;cout<<"1\/1!+1\/2!+……+1\/"<<n<<"!= "<<setprecision(17)<<s;return 0;} double k(int j){ if(j==1)return 1;else return k(j-1)*j;} 搞定,这ok ...

C++ 编写函数,计算1\/1!+1\/2!+1\/3!+ … +1\/n!。在主函数中输入n的值...
);result = fun(n);cout << setiosflags(ios::fixed) << setprecision(2) << result << "\\n";return 0;}double fun(int a){double s = 0;int i = 0, temp = 1;for (i = 1; i <= a; i++){temp *= i;s += 1.0 \/ temp;}return s;} 满足你要求了吧。嘿嘿!

C语言1\/1+1\/2+1\/3...+1\/n,求和
1、首先初始化代码段:int i,s1=0,s2=0,s3=0;。2、使用for语句实现:代码段:for(i=1;i<=10;i++)\/\/for语句部分{s1+=i;}printf("s1=%d\\n",s1);。3、使用while语句实现:代码段。4、接着使用do..while语句实现。5、最后运行结果:S1=55;S2=55;S3=55;结果运行都是正确的,这样就...

相似回答