请教一个简单的C语言程序

来源:百度知道 编辑:UC知道 时间:2024/06/02 05:34:09
我只有这么多分了,拜托大家了!谢谢大家!
我写了一个exp.c程序,功能是求e的x次幂的值,程序编译没问题,当x比较小是可以执行,大概超过1.5以后就不执行了,不知道怎么搞的,海蟹了一个求正弦的程序,出现同样的问题,清高手帮看看,到底那里出问题了,谢谢!
程序如下:
#include<stdio.h>
#include<math.h>
main()
{
int fac(int m1);
float mi(int m1,float x1);
int i,m=0;
float x,t,s=0;
printf("please input x:\n");
scanf("%f",&x);
for(i=0;1;i++)
{ t=mi(m,x)/fac(m); m++; s+=t;
if(fabs(t)<=1e-6)
break; }
printf("exp%f=%f\n",x,s);
}
int fac(int m1)
{
int a;
if(m1==0||m1==1)
a=1;
else
a=m1*fac(m1-1);
return a;
}
float mi(int m1,float x1)
{
int i;
float b=1.0;
if(m1!=0)
for(i=1;i<=m1;i++)
b*=x1;
return b;
}
一楼的哥们,用double也不行,二楼的哥们还太小,没学微积分吧,你学了就知道怎么回事了。关闭了

那你用double型试一下

求e的x次幂的值,不就是吧e*e*e*e*e....乘x次
用for语句不就行了
#include<stdio.h>
#include<math.h>
main()
{//int x;
double x,s=0;
//double i,s=1,e=2.718281828459 ;
printf("请输入x(x为整数):");
scanf("%lf",&x);
//for(i=1;i<=x;i++)
//s=e*s;
s=1*exp(x);
printf("%lf\n",s) ;
}
注释掉的部分是另一种算法,不过只是用于整形。
你那程序太烦,从头至尾我也没看到e的值,请问那如何去算??
这题用exp函数就可以了。