读书人

关于函数的传送与返回感觉比较比较好

发布时间: 2013-01-21 10:15:38 作者: rapoo

关于函数的传递与返回,感觉比较比较好 的错题
就是求e^x=1+x/1!+x*x/2!+x*x*x/3!+......+x^n/n!传入x,n 但2,2或者2,3行5,6就不可以 了帮个忙吧各位。

#include<stdio.h>
#include<math.h>
int funm(int x,int n);
int funj(int n);
main()
{
int x,n;
int i;
long double a=1.0;
printf("shu ru");
scanf("%d%d",&x,&n);
for(i=1;i<=n;i++)
{
a+=(long double)funm(x,i)/funj(i);
}
printf("e^x=%lf",a);
}
int funm(int x,int n)
{
int i;
for(i=1;i<n;i++)
{
x*=x;

}
return x;
}
int funj(int n)
{
int j,s=1;
for(j=1;j<=n;j++)
s*=j;
return s;
}

[解决办法]
引用:
引用:调用函数的返回值是int,5,6的时候int类型越界了。。改了后 无论输入几都是1呀
还要改一下函数内部的相应变量
[解决办法]
不说这么多,直接上正确代码。

#include <stdio.h>
#include <math.h>

double my_exp(double x, unsigned n)
{
int i;
double d = 1.0, f = 1.0, r = 1.0;

for (i = 1; i <= n; ++i) {
d *= x;
f *= i;
r += d / f;
}

return r;
}

int main(int argc, char *argv[])
{
int i;
double r;
double x = 1.0;

r = exp(x);
printf(" exp(%f )=%.16f\n", x, r);

for (i = 1; i < 20; ++i) {
r = my_exp(x, i);
printf("my_exp(%f, %02d)=%.16f\n", x, i, r);
}

return 0;
}

读书人网 >C语言

热点推荐