1703 - 2006年春浙江省计算机等级考试二级C 编程题(2)

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

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

1+1/2+ .... +1/n!

 

输出保留5位小数。

题目输入

题目输出

输入/输出样例

输入格式

5

输出格式

sum=1.71667

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;
	}
}

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;
}