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

2024-12-29 09:38:28
推荐回答(1个)
回答1:

第一次: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 )