Fortran中似乎打印的矩阵行和列相反了。

3

我有一个有关Fortran 95中二维数组(即矩阵)的简单问题。根据我的了解,数学中将矩阵中的元素定义为Aij,其中i代表行,j代表列。如果我简单地编写 write(*,*) Matrix,结果会反转行和列!请看以下示例代码:

program TEST
implicit none
integer :: P(3,3), i

P(1,1)=1
P(1,2)=2
P(1,3)=3
P(2,1)=4
P(2,2)=5
P(2,3)=6
P(3,1)=7
P(3,2)=8
P(3,3)=9

do i=1,3
  write(*,"(3(I1,1X))") P(i,1:3)
enddo

write(*,*)
write(*,"(3(I1,1X))") P

end program TEST

通过使用上面的循环(它固定一行,然后打印其中每个列),我得到了我期望的结果:
1 2 3
4 5 6
7 8 9

现在使用最后一条语句write(*,"(3(I1,1X))") P,我得到了:
1 4 7
2 5 8
3 6 9

我这里做错了什么吗?

1个回答

12

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接