1703 - 2006年春浙江省计算机等级考试二级C 编程题(2)
编写程序,输入一个正整数n,求下列算式的值。要求定义和调用函数fact(k)计算k的阶乘,函数返回值的类型是double。
1+1/2+ .... +1/n!
输出保留5位小数。
Input
Output
Examples
Input
5
Output
sum=1.71667
Solution C
#include <stdio.h> double fact(int); //如果函数是int类型,当大于65535时会截断溢出,除以零 int main() { int n, i; double sum = 0.0; scanf("%d", &n); for(i = 1; i <= n; i++) { sum += 1.0 / fact(i); } printf("sum=%.5lf\n", sum); return 0; } double fact(int k) { int f; if(k == 0 || k == 1) { return 1; }else { return (double)fact(k - 1) * k; } }
Solution C++
#include<iostream> #include<cstdio> using namespace std; double fact(int n) { double s=1; for (int i=1; i<=n; i++) s*=i; return s; } int main() { int n; cin>>n; double sum=0; for (int i=1; i<=n; i++) sum+=1/fact(i); printf("sum=%.5lf\n",sum); return 0; }