主题:fortran数组问题
kiss.lzm
[专家分:0] 发布于 2011-05-10 18:53:00
program main
implicit none
dimension G(5,5)
integer G
integer i,
open(12,file='D:\cc.txt')
read(12,*) G
close(12)
open(11,file='D:\outp.txt')
write(11,10) G(1,:)
close(11)
print*, G(3,4)
10 format(5i5)
end program main
读入的数组为
2 18 8 0 30
20 7 10 12 0
6 0 10 17 0
10 5 20 14 0
15 0 0 9 0
为什么输出的是第一列?各位大神教教数组的输入输出
回复列表 (共9个回复)
沙发
asymptotic [专家分:16630] 发布于 2011-05-15 10:00:00
其实这个程序可以自己分析一下,对夯实基本功颇有裨益。
Fortran 中的数组按“列”存储,也就是说第一维变化最快,后面各维,变化“速度”递减。
因此,read 语句执行后, G(1, :) = (/2, 20, 6, 10, 15/)
输出语句 write(11,10) G(1,:) 执行后,你就会发现输出的是您所提供表格的第一列。
我怎么感觉到自己在 “毁” 人不倦呀,这些也许楼主自己想想更好。
板凳
kiss.lzm [专家分:0] 发布于 2011-05-15 16:33:00
那fortran数组读取数据时也是按列读取么?那怎样输出才能保证数组的原来形状,数组间的元素运算怎样才能不一弄错?
3 楼
asymptotic [专家分:16630] 发布于 2011-05-15 16:58:00
继续“毁”人不倦。
program main
implicit none
integer:: G(5, 5)
integer:: i ! for loop
open(unit = 12, file= "In.txt")
do i = 1, 5, 1
read(unit = 12, fmt = *) G(i, :)
end do ! i
close(unit = 12)
open(unit = 11, file = "Out.txt")
do i = 1, 5, 1
write(unit = 11, fmt = "(5I5)") G(i, :)
end do ! i
close(11)
stop
end program main
4 楼
kiss.lzm [专家分:0] 发布于 2011-05-15 17:19:00
大神哈!!!我能加你QQ么,我在做模拟,用fortran,刚学呀,给我留个Q。谢谢哈
5 楼
dongyuanxun [专家分:7180] 发布于 2011-05-15 18:10:00
[quote]
大神哈!!!我能加你QQ么,我在做模拟,用fortran,刚学呀,给我留个Q。谢谢哈[/quote]
老曾不会告诉你的……
6 楼
cgl_lgs [专家分:21040] 发布于 2011-05-16 08:33:00
他会告诉你:QQ已被盗~~~~
7 楼
kiss.lzm [专家分:0] 发布于 2011-05-20 08:56:00
如何读入数组中的某一列呀,比如:
A= 2 18 8 0 30
20 7 10 12 0
6 0 10 17 0
10 5 20 14 0
15 0 0 9 0
要读入第二列,怎么做了?
谢谢哈
8 楼
cgl_lgs [专家分:21040] 发布于 2011-05-20 20:57:00
都读然后就用第二列
9 楼
kiss.lzm [专家分:0] 发布于 2011-05-21 12:30:00
谢谢哈
我来回复