4k屏幕手机排行榜:C语言编程

来源:百度文库 编辑:神马品牌网 时间:2024/04/26 01:53:31
题目:e=1+1/1!+1/2!+1/3!+...+...1/n!
#include <math.h>
main()
{
float a,e,i,n,t;
a=1.0;
e=1.0;
do
{for(n=1;;n++)
{for(i=1;i<n;i++)
a=a*i;
t=1/a;
}
}
while(fabs(t)>1e-6);
e=e+t;

printf("e=%f",e);
}
程序有哪里错误
请指出并改正

#include <stdio.h>
void main()
{
float a, t;
int i,n ;
a=1.0;
printf("please input a number:\n");
scanf ("%f",&n);
for( i=1;i<=n;i++)
{
t=1/i;
a+=t;
}
printf("a=%f",a);
}
我看这样就可以了

首先,恕我能力有限,实在是没看懂“fabs(t)>1e-6);”是什么意思;
其次,循环有问题—— “e=e+t;”应该要放到某一个循环中吧!这样才能保证e可以连着加。像上面的程序,只进行了一次“e=e+t;”
在次,第一个for循环是个死循环,没有终止条件;
写的不好,多多包含!!!
#include <stdio.h>
void main()
{
float a,e,n,t;
a=1.0;
e=1.0;
printf("please input a number:\n");
scanf ("%f",&n);

for(int i=1;i<=n;i++)
{
{for(int j=1;j<=i;j++)
a=a*j;
t=1/a;
}
e=e+t;
}

printf("e=%f",e);
}

while(fabs(t)>1e-6);

有这个东西,你得值是算不对的,譬如好不容易算出个t=1/3! 却因为>1e-6而被丢弃

把e=e+t;移到while前面得一个括号里面

兄弟,有死循环.