我试过几次来确定原因,但都做不到,所以如果有人被确认了,请告诉我。。
#include <stdio.h>
int main()
{
int i,n=1;
float div=0,sum=0,j=1;
for(i=1;i<=7;i++)
{
j=1;
for(n=1;n<=i;n++)
{
j=j*n;
}
div=i/j+div;
}
printf(" %f",div);
return 0;
}
实际上它是一个程序;编写使用For Loop:添加以下系列的前七项的程序
(1/1!)+(2/2!)+(3/3!)+………… "
通过运行上面的程序,我们得到的结果是2.72,这是正确的。但是如果我们运行低于的代码
#include <stdio.h>
int main()
{
int i,n=1,j=1;
float div=0,sum=0;
for(i=1;i<=7;i++)
{
j=1;
for(n=1;n<=i;n++)
{
j=j*n;
}
div=i/j+div;
}
printf(" %f",div);
return 0;
}
但实际所做的是将CCD_ 1从int更改为float,反之亦然。但结果各不相同。。
这里有区别:
div=i/j+div;
当在第二段代码中计算/
运算符时,两个操作数都具有类型int
,因此执行整数除法,截断任何小数部分。当j
被声明为类型double
时,执行浮点除法并且不发生截断。
您不能除以整数并期望一个浮点答案,您可以将j强制转换为浮点,如下所示:
div = i / (float)j + div;
它会给你想要的答案