我对 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
我在这里做错了吗?