游客 Signup | Login
中文 | En

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;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题