简单的编程题,初学者,请教高手

来源:百度知道 编辑:UC知道 时间:2024/09/21 11:05:31
简单的编程题,初学者,请教高手编程,输入1个实数X,计算并输出下式的值,直到最后一项小于十的负五次方,要求定义和调用函数fact(n)计算N的阶乘,以及定义和调用函数mypow(x,n)计算x的n次方,s=1+x^2/2!+x^3/3!+x^6/6!+......
最后式子搞错了,是s=1+x^2/2!+x^4/4!+x^6/6!+......

给一个简单的版本:
#include<stdio.h>

const double e = 1e-5;

int fact(int n)
{
int i;
int ans;
ans = 1;
for (i = 1 ; i <= n ; i++)
{
ans = ans * i;
}
return ans;
}

double mypow(double x, int n)
{
int i;
double ans;
ans = 1;
for (i = 0 ; i < n ; i++)
{
ans = ans * x;
}
return ans;
}

int main()
{
double x;
double item;
double s;
int i;

scanf("%lf",&x);

s = 1; i = 2;
do
{
item = mypow(x,i) / (double)fact(i);
s = s + item;
i = i + 2;
}while((item - 0) > e);

printf("s = %lf\n",s);
}

另外,你没有给出x的范围,这题不好做啊~,因为如果x很大的话,fact(n)会溢出的,这就不能将mypow(x,n)和fact(n)分开计算,而要一同计算以保证精度和数据不丢失。