编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,

编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。
1+1/2+ .... +1/n!

输出保留5位小数

下面是我写的答案,求大神帮我改改。。
#include<stdio.h>
int main()
{
double sum=0;
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++){
sum=1/n+sum;
}
printf("sum=%.5lf\n",sum);

return 0;
}

sum=1/n+sum;
中心算法就是这一句
应该是
sun+=1.0/fact(i);

fact是系统函数,这不应自己编写,调用即可,应该在math.h头文件中吧
不过这样效率要低下不少,因为每次都需要计算n的阶乘
好的算法是

int i,n,s=1;
float sum=0;

for(i=1;i<=n;i++)
{
s*=i; //计算i的阶乘
sum+=1.0/s;

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-06-16

可以这样修改

#include<stdio.h>

double fact(int k)
{
  double res = 1.0;
  int i;
  for(i=2; i<=k; i++)
    res *= i;
  return res;
}

int main()
{
  double sum=0;
  int i,n;
  scanf("%d",&n);
  for(i=1;i<=n;i++){
    sum += 1.0/fact(i);
  }
  printf("sum=%.5lf\n",sum);
  return 0;
}

第2个回答  2012-12-14
#include<stdio.h>
double fact(int k)
{
double res = 1.0;
while (k>=1)
{
res *= k;
k--;
}
return res;
}
int main()
{
double sum=0.0;
int i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=1.0/fact(i);
}
printf("sum=%.5lf\n",sum);
return 0;
}本回答被网友采纳
第3个回答  2012-12-14
#include<stdio.h>
int fact(int k)
{
int s = 1, i;
for (i = 1; i <= k; i )
s *= i;
return s;
}

void main()
{
int i, n;
double sum = 0, q, w;
scanf("%d", &n);
for (i = 1; i <= n; i )
{
q = fact(i);
sum = 1.0/ q;
}
printf("%.5f\n", sum);
}
第4个回答  2012-12-14
呃,刚看错题了,mmdeniubi的答案貌似可以

...下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,
sun+=1.0\/fact(i);fact是系统函数,这不应自己编写,调用即可,应该在math.h头文件中吧 不过这样效率要低下不少,因为每次都需要计算n的阶乘 好的算法是 int i,n,s=1;float sum=0;for(i=1;i<=n;i++){ s*=i; \/\/计算i的阶乘 sum+=1.0\/s;} ...

C语言编程 输入N 求N的阶乘
scanf("%d", &n); \/\/输入一个整数 printf("%d\\n", factorial(n)); \/\/调用函数计算阶乘 return 0;}int factorial(int n) \/\/定义计算n!的函数 { int fact = 1;for (int i = 1; i <= n; ++i){ fact = fact*i;} return fact;} ...

...+2!+3!+……n!。要求定义和调用函数fact(n)计算n!,函数类型是double...
int sum=0;\/\/累加 for(int i=0;i<n;i++)\/\/n为你输入的数 { for(int j=1;j<=i;j++){ sun=sun*j;} sum=sum+sun;}

java语言程式设计 输入一个正整数N,输出表达式1+1\/2+1\/3+.+1\/N的值
用Java程式设计 :输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。 求高手指点 System.out.println("请输入你要!的数:");提示使用者输入 Scanner in = new Scanner(System.in); int n = in.nextInt();获得使用者输入的值 long res=1;因为数字可能会很大,所以使用long ...

c语言 编程实现求n!要求用定义求阶乘的函数
1、打开vs2017软件,新建c语言的工程,首先开头引入头文件,然后调用先调用一下求阶乘的函数和空的主函数,最下方定义prime函数用来求阶乘:2、主函数中用scanf函数接受用户输入的的数字,接着将输入的数传入处理阶乘的函数中完成计算,最后输出打印结果。prime函数有一个参数,首先判断是否为正数,然后用...

C程 定义函数fact(n)计算n!,函数返回值类型是double。 定义函数main...
double fact(int n){ if(n==1)return 1.0;return n * fact(n-1);} void main(){ int n;printf("Input n:");scanf("%d", &n);while(n <=0 )scanf("%d", &n);int x;printf("Input x:");scanf("%d", &x);double s = 0;for(int i=1; i<=n;i++){ double p ...

c语言编程 :输入整数n,求n的阶乘 并输出。
1、首先打开CodeBlocks,新建一个空白页面:2、开始编写主程序,程序比较简单,首先定义需要的变量,编写输入函数,然后用for循环实现阶乘计算,最后是输出函数,用来输出结果:3、运行程序,输入数字,阶乘的计算结果就出来了:

怎样用C语言实现阶乘?
以下是一个简单的C语言程序,用于实现阶乘的计算:在这个程序中,我们首先定义了一个函数factorial,用于计算阶乘。这个函数接受一个整数n作为参数,然后使用for循环从1到n计算阶乘。最后,函数返回计算结果。在main函数中,我们首先从用户处读取一个正整数n,然后调用factorial函数计算阶乘,并将结果存储在...

编写程序,定义一个求阶乘的函数fact(n)
编写程序,定义一个求阶乘的函数fact(n)如下:includeint fact(int n){if(n==0||n==1)return 1;else return n*fac(n-1);}int main(){int m,n,sum;printf("please input m,n\\n");scanf("%d%d",&m,&n);if((n。资料扩展:编辑程序让电脑执行的过程就叫编程,很多软件都可以编程。

C语言编程 输入一个正整n,生成一张阶乘表,输出1!~n!的值。
include<stdio.h>double fac(int n){if(n==0)return 1.0; return n*fac(n-1);}int main(){int i,n; scanf("%d",&n); for(i=1;i<n+1;i++) printf("%d!=%.0lf\\n",i,fac(i)); return 0;}

相似回答