注册 登录
编程论坛 C++教室

关于函数调用的问题,望赐教

咚呱咚呱 发布于 2010-05-16 20:44, 410 次点击
小弟初学,学到函数调用。遇题目如下:
编程计算e的n次方。其中e=1+n+n^2/(2!)+n^3/(3!)+……+n^x/(x!)。
小弟编写程序如下,C语言不报错,但运行时结果明显错误,望各位能指教:
#include<stdio.h>
double f1(int n,int x)
{
    int a=n;
    for(int i=1;i<x;i++)
    n=n*a;
    return n;
}
double f2(int x)
{
    for(int i=1;i<x;i++)
    x=x*i;
    return x;
}
void main()
{
    int n,x;
    printf("Please input n,x:\n");
    scanf("%d%d",&n,&x);
    float b,c=1;
    for(int i=1;i<=x;i++)
    {
        b=f1(n,i)/f2(i);
        c=c+b;
    }
    printf("e的%d次方为%5f\n",n,c);
}

望大虾指教!你的帮助将会让我在慢慢编程路上越走越远!谢谢!
2 回复
#2
yc25757572010-05-16 21:58
#include<stdio.h>
double f1(int n,int x)
{
    int a=n;
    for(int i=1;i<x;i++)
    n=n*a;
    return n;
}
double f2(int x)
{
    int a = x;
    for(int i=1;i<a;i++)
//这里需要换成a,不然x的值是变的,得出的值肯定不对~~
    x=x*i;
    return x;
}
void main()
{
    int n,x;
    printf("Please input n,x:\n");
    scanf("%d%d",&n,&x);
    double c=1;
    double b;
    for(int i=1;i<=x;i++)
    {
        b=f1(n,i)/f2(i);
        c=c+b;
    }
    printf("e的%d次方为%5f\n",n,c);
}
#3
咚呱咚呱2010-05-17 18:33
回复 2楼 yc2575757
恩,的确,呵呵。谢啦!!!!
1