#include
int main() {
long int i, k;
double n=1.0l;/*n!
double s = 1.0l;
for (i = 1; i < 50; i++) {
n=n*i;
s += 1.0 / n;
}
printf("e = %lf\n", s);
getchar();
return 0;
}
或:
public class Test{
public static void main(String args[]){
double sum=1,n=1;
double e=1;
for(n=1;n<=10;n++){
sum=sum*n;
e+=1/sum;}
System.out.println("e="+e);
}
}
得到的值为:2.7182818011463845...
随着n值越专大得到的e值越精属确。
扩展资料:
C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。
参考资料来源:百度百科-c语言
#include
int main() {
long int i, k;
double n=1.0l;/*n!很大,用long型有的机器不行*/
double s = 1.0l;
for (i = 1; i < 50; i++) {
n=n*i;
s += 1.0 / n;
}
printf("e = %lf\n", s);
getchar();
return 0;
}
在第二个for循环上面加上n = 1;
#include
int main() {
long int i, k, n;
double s = 1;
for (i = 1; i < 50; i++) {
n = 1;
for (k = 1; k <= i; k++) {
n *= k;
}
s += 1.0 / n;
}
printf("e = %lf\n", s);
return 0;
}
你应该在 for(i=1;i<50;i++)
{n=n*i;
s=s+1.0/n;
}
这样就可以了。 因为n 没有重新赋值,它的值一直就在不断累积,求阶乘不需要重新用一个FOR 循环。
int改成float