33,311
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int main(void)
{
int n, i;
float m = 1.0f;
float e = 0.0f; //编译错误少了分号
printf ("Enter a number: ");
scanf ("%d", &n);
for (m = 1, i = 1; i <= n; i++) {
//m *= i; 输入n较大时,int类型的m溢出变为0
//e += 1 / m; 1/m会转换成整形,m>1时都为0
m /= i;
e += m;
}
printf ("%f", e);
return 0;
}
#include <stdio.h>
int main()
{
int n, i, m;
float e = 0.0f;//去掉h
printf("Enter a number: ");
scanf("%d", &n);
for (m = 1, i = 1; i <= n; i++) {
m *= i;
e += 1.0/ m;//1改为1.0,此时当m大于1时,1.0/m的值才不为0
}
printf("%f", e);
return 0;
}
#include <stdio.h>
int main(void)
{
int n, i, m;
float e = 0.0f, h; //此处缺少分号
printf ("Enter a number: ");
scanf ("%d", &n);
for (m = 1, i = 1; i <= n; i++)
{
m *= i;
e += 1 / m; // 此处1/m 得出是整型,会把小数点忽略
}
printf ("%f", e);
return 0;
}
就两个地方,没有其他问题,你所说的Error: operator '/' divided by zero。这种报错没有。
编译器GCC
#include <stdio.h>
int main(void)
{
int n, i;//, m;
double m, e = 1.;//e = 1 + 1 + 1/2 + ....+1 / n!
printf("Enter a number: ");
scanf("%d", &n);//n的输入值不应过大 n = 12, 13就能获得 e-10精度的e
for (m = 1, i = 1; i <= n; i++)
{
m *= i;
e += 1. / m; //这里的1应为浮点型
}
printf("%.10f", e);
return 0;
}