按下面的近似公式计算:e=1+1/1!+1/2!+1/3!+......+1/n!+.....怎么我写的这个程序值为2.000000?

#include<stdio.h>
#include<conio.h>
int jc(int n){
int b;
for(b=1;n>0;n--)
b*=n;
return b;
}
main(){
float e=1;
int n;
for(n=1;(1/jc(n))>=(1.0e-10);n++)
e+=(1/jc(n));
printf("e=%f",e+=(1/jc(n)));
getch();
}

给你一个参考程序

#include <stdio.h
long factorial(long n)  
{  
    if(n == 0 || n == 1)  
        return 1;  
    else  
        return n*factorial(n-1);  
}  
long power(long x, long y)  
{  
    if(y == 0)  
        return 1;  
    else  
        return x*power(x, y-1);  
}  
void main()  
{  
    double e;  
    int i;  
    for(i = 0, e = 0.0; i < 30; i++)  
        e += 1.0*power(1, i)/factorial(i);  
    printf("%lf", e);
 printf("\n");
    //getch(); 
}  

}

追问

我运行了下你给的程序,有个ERROR.
你能帮我分析下为什么我的程序是2.000000吗

追答

#include
#include
int jc(int n){
int b;
for(b=1;n>0;n--)
b*=n;
return b;
}
main(){
float e=1;
int n;
for(n=1;(1/jc(n))>=(1.0e-10);n++) //这里改为1.0/jc(n) 你的是int型号。所以是错误的
e+=(1/jc(n)); //这里也是
printf("e=%f",e+=(1/jc(n)));//还有这里
getch();
}

追问

Debug/5.exe : fatal error LNK1169: one or more multiply defined symbols found
这是什么原因哦?

追答

重复定义,但是程序中没有看到重复定义的 主要是太晚了。否则帮你编译一下。。

算了,等会。我来编译一下吧

追问

哦,好的谢谢~

追答#include<stdio.h>
int jc(int m){
int b;
for(b=1;m>0;m--)//  我把这里改为了m 但是应该不是这里的问题
b*=m;
return b;
}
int main(){
float e=1;
int n;
for(n=1;(1.0/jc(n))>=(1.0e-10);n++) //这里改了1.0/jc(n)
e+=(1.0/jc(n));  //这里也是
printf("e=%f",e+=(1.0/jc(n)));//还有这里
getchar();
}

 

我这里测试通过了,你在试一试。。

追问

怎么删除VC6.0的工程和文件?

追答

你新建一个吧。不用删除以前的把。我这里用的是vs2010,很少用vc了

追问

哦。非常感谢O(∩_∩)O~

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答