回 帖 发 新 帖 刷新版面

主题:fortran数组问题

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个回复)

沙发

其实这个程序可以自己分析一下,对夯实基本功颇有裨益。
Fortran 中的数组按“列”存储,也就是说第一维变化最快,后面各维,变化“速度”递减。
因此,read 语句执行后, G(1, :) = (/2, 20, 6, 10, 15/)
输出语句 write(11,10) G(1,:) 执行后,你就会发现输出的是您所提供表格的第一列。

我怎么感觉到自己在 “毁” 人不倦呀,这些也许楼主自己想想更好。

板凳


那fortran数组读取数据时也是按列读取么?那怎样输出才能保证数组的原来形状,数组间的元素运算怎样才能不一弄错?

3 楼

继续“毁”人不倦。

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 楼


大神哈!!!我能加你QQ么,我在做模拟,用fortran,刚学呀,给我留个Q。谢谢哈

5 楼

[quote]
大神哈!!!我能加你QQ么,我在做模拟,用fortran,刚学呀,给我留个Q。谢谢哈[/quote]
老曾不会告诉你的……

6 楼

他会告诉你:QQ已被盗~~~~

7 楼


如何读入数组中的某一列呀,比如:
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 楼

都读然后就用第二列

9 楼


谢谢哈

我来回复

您尚未登录,请登录后再回复。点此登录或注册