首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2013-01-21 
关于函数的传递与返回,感觉比较比较好 的错题就是求e^x1+x/1!+x*x/2!+x*x*x/3!+......+x^n/n!传入x,n 但2

关于函数的传递与返回,感觉比较比较好 的错题
就是求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;
}

热点排行