fortran 定义矩阵元素位置问题不会处理矩阵元素的位置:write 的格式是write(*,*)但是具体规定的时候就不会了,如:write(*,"(I3,I3/,I3,I3)")((m(r,c),c = 1,2),r = 1,2)是下面小程序的(I3,I3/,I3,program mainimp
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/01 04:44:30
![fortran 定义矩阵元素位置问题不会处理矩阵元素的位置:write 的格式是write(*,*)但是具体规定的时候就不会了,如:write(*,](/uploads/image/z/6265183-31-3.jpg?t=fortran+%E5%AE%9A%E4%B9%89%E7%9F%A9%E9%98%B5%E5%85%83%E7%B4%A0%E4%BD%8D%E7%BD%AE%E9%97%AE%E9%A2%98%E4%B8%8D%E4%BC%9A%E5%A4%84%E7%90%86%E7%9F%A9%E9%98%B5%E5%85%83%E7%B4%A0%E7%9A%84%E4%BD%8D%E7%BD%AE%EF%BC%9Awrite+%E7%9A%84%E6%A0%BC%E5%BC%8F%E6%98%AFwrite%EF%BC%88%2A%2C%2A%EF%BC%89%E4%BD%86%E6%98%AF%E5%85%B7%E4%BD%93%E8%A7%84%E5%AE%9A%E7%9A%84%E6%97%B6%E5%80%99%E5%B0%B1%E4%B8%8D%E4%BC%9A%E4%BA%86%2C%E5%A6%82%EF%BC%9Awrite%28%2A%2C%22%28I3%2CI3%2F%2CI3%2CI3%29%22%29%28%28m%28r%2Cc%29%2Cc+%3D+1%2C2%29%2Cr+%3D+1%2C2%29%E6%98%AF%E4%B8%8B%E9%9D%A2%E5%B0%8F%E7%A8%8B%E5%BA%8F%E7%9A%84%28I3%2CI3%2F%2CI3%2Cprogram+mainimp)
fortran 定义矩阵元素位置问题不会处理矩阵元素的位置:write 的格式是write(*,*)但是具体规定的时候就不会了,如:write(*,"(I3,I3/,I3,I3)")((m(r,c),c = 1,2),r = 1,2)是下面小程序的(I3,I3/,I3,program mainimp
fortran 定义矩阵元素位置问题
不会处理矩阵元素的位置:
write 的格式是write(*,*)
但是具体规定的时候就不会了,如:
write(*,"(I3,I3/,I3,I3)")((m(r,c),c = 1,2),r = 1,2)是下面小程序的
(I3,I3/,I3,
program main
implicit none
integer,parameter ::row = 2
integer,parameter ::col = 2
integer ::m(row,col)
integer r 用来赋值row
integer 用来赋值column
data((m(r,c),r = 1,2),c=1,2)/1,2,3,4/
write(*,"(I3,I3/,I3,I3)")((m(r,c),c = 1,2),r = 1,2) 重点是这一行
end
这样输出的结果是:
1 3
2 4
如果那行换成write(*,*) ((m(r,c),c = 1,2),r = 1,2)
则输出的结果是
1 3 2 4
如果那行换成write(*,*) m
则输出的结果是
1 2 3 4
为什么会有这样的区别,原本设的是二维数组,怎么最后输出来就变成一维的了
fortran 定义矩阵元素位置问题不会处理矩阵元素的位置:write 的格式是write(*,*)但是具体规定的时候就不会了,如:write(*,"(I3,I3/,I3,I3)")((m(r,c),c = 1,2),r = 1,2)是下面小程序的(I3,I3/,I3,program mainimp
(I3,I3/,I3,I3)
意思是,输出两个 I(整数)3(长度),然后换行(/),然后再输出两个整数,长度3
这是格式化输出.与数组没有什么关系.
因为有一个 / ,所以换行以后就是2行.
Fortran 的存储是列优先的.所以
write(*,*) m 结果是 1 2 3 4
他相当于 write(*,*) ((m(r,c),r = 1,2),c = 1,2) {Fortran 是列优先的,所以默认是先循环列,再循环行}
而 write(*,*) ((m(r,c),c = 1,2),r = 1,2) 先循环行,再循环列,则结果是 1 3 2 4
注意 r 和 c 的顺序.
最后一个很严重的错误!
二维数组,一维数组,是内存里的格式.它与输出一行,两行没有关系.
一维数组可以输出成一行,也可以输出成两行.
二维数组也可以输出成一行,也可以输出成两行.
他们也可以输出成三行,四行.只要你喜欢,可以按照任何方式输出.这不影响他在程序里是几维数组.