fortran程序问题:k=1 DO 10 I=1,2 DO 10 J=1,2 10 K=K*I/J WRITE(*,*)K END 的结果为什么是0?

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 03:50:16

fortran程序问题:k=1 DO 10 I=1,2 DO 10 J=1,2 10 K=K*I/J WRITE(*,*)K END 的结果为什么是0?
fortran程序问题:k=1 DO 10 I=1,2 DO 10 J=1,2 10 K=K*I/J WRITE(*,*)K END 的结果为什么是0?

fortran程序问题:k=1 DO 10 I=1,2 DO 10 J=1,2 10 K=K*I/J WRITE(*,*)K END 的结果为什么是0?
第一次:K=1
K=K*I/J
其中I = 1 , J=1
所以 K = 1*1/1 = 1
第二次
K=K*I/J
其中I = 1 , J=2
所以 K = 1*1/2 = 0
以后 K 乘任何数都是 0,所以最终结果是 0
请注意:1/2 = 0 因为 1 和 2 都是整数,除了以后还是整数,0.5 转换成整数就是取整,即为 0
如果你要实现你的期望.应当把 K 定义为实数,即:
Real K
并且把
K=K*I/J
改为
K=K * I * ( 1.0 / J )