fortran数组顺序问题

初学fortran,做了个数组相乘的算法programdiagonaleintegera(2,2),b(2,2),c(2,2)print*,'输入矩阵a'read*,ap... 初学fortran,做了个数组相乘的算法
program diagonale
integer a(2,2),b(2,2),c(2,2)
print*,'输入矩阵a'
read*,a
print*,'输入矩阵b'
read*,b
c=0
do i=1,2
do k=1,2
do j=1,2
c(i,k)=c(i,k)+a(i,j)*b(j,k)
enddo
enddo
enddo
print*,c
end
发现这样算出来是错的,然后尝试发现比如一个3x3的数组123456789
按理说a(2,3)应该是6的,但是用fortran输出居然是8,i,j的含义颠倒了,查了书,自己没记错啊。求指教
展开
 我来答
天河流纹石
推荐于2017-11-26 · TA获得超过1.3万个赞
知道大有可为答主
回答量:7624
采纳率:76%
帮助的人:4064万
展开全部
Fortran 数组是列优先的。即先存储前面的维度。

一个3*3二维数组,在内存中是:
1 2 3 4 5 6 7 8 9
Fortran访问时,给他们命名为a(1,1),a(2,1),a(3,1)...a(1,2),a(2,2),a(3,2)...a(1,3),a(2,3),a(3,3)

因而,a(2,3)=8
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式