24小时热门版块排行榜    

查看: 2230  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

li_clifff

银虫 (正式写手)

[求助] 请教一个read的用法,谢谢

请教一个问题,我要搞清楚程序中这两个语句的结果:

INTEGER:: k, nr,i, nodof=3,nn=96
INTEGER,ALLOCATABLE:: nf(:, : )
ALLOCATE nf(nodof,nn)
READ(10,*)nr,(k,nf(:,k),i=1,nr)

其中文件10为:
81
1 1 0 0   2 1 0 0   3 1 1 0   4 1 0 0   5 1 1 0   6 1 0 0
7 1 1 0   8 1 0 0   9 1 1 0  10 1 0 0  11 1 1 0  12 0 0 0
13 1 0 1  14 1 0 1  15 1 0 1  16 1 0 1  17 0 0 0  18 0 1 0
19 1 0 1  21 1 0 1  23 1 0 1  25 1 0 1  27 1 0 1  28 0 1 0
29 0 0 0  30 1 0 1  31 1 0 1  32 1 0 1  33 1 0 1  34 0 0 0
35 0 1 0  36 1 0 1  38 1 0 1  40 1 0 1  42 1 0 1  44 1 0 1
45 0 1 0  46 0 0 0  47 1 0 1  48 1 0 1  49 1 0 1  50 1 0 1
51 0 0 0  52 0 1 0  53 1 0 1  54 1 1 1  55 1 0 1  57 1 0 1
59 1 0 1  61 1 0 1  62 0 1 0  63 0 0 0  64 1 0 1  65 1 0 1
66 1 0 1  67 1 0 1  68 0 0 0  69 0 1 0  70 1 0 1  72 1 0 1
74 1 0 1  76 1 0 1  78 1 0 1  79 0 1 0  80 0 0 0  81 1 0 1
82 1 0 1  83 1 0 1  84 1 0 1  85 0 0 0  86 0 1 0  87 0 0 0
88 0 1 0  89 0 0 0  90 0 1 0  91 0 0 0  92 0 1 0  93 0 0 0
94 0 1 0  95 0 0 0  96 0 1 0
在debug模式下,nr值为81,k为96(?),nf是3*96的数组,i等于82(?)

能帮我解释下为什么会这样吗?非常感谢
其中nf数组前面几个值为:




[ Last edited by li_clifff on 2011-10-15 at 00:57 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

li_clifff

银虫 (正式写手)

引用回帖:
5楼: Originally posted by snoopyzhao at 2011-10-16 13:01:30:
你确定你这种做法可以编译通过吗?呵呵……

如果可以的话,给个示例看看……

program  ex0804
implicit none
  integer :: a(2)
  DATA  a /1,2/
  integer :: b(2)
  data b  /2,3/
  call add(a,b)  ! 把变量a及b交给子程序add来处理
  stop
end


subroutine add(first, second)
implicit none
  integer :: first, second ! first,second的内容会从CALL时得到
  write(*,*) first+second
  return
end
6楼2011-10-16 22:51:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

mchen10

金虫 (正式写手)

★ ★
余泽成(金币+2): 谢谢参与应助,欢迎常来程序语言版! 2011-10-15 19:13:10
ben_ladeng: 专家考核存档 2011-10-17 11:51:35
读入第一个数据, 为nr (number of rows?)
然后 4个一组地读入 到k, nf(1,k), nf(2,k), nf(3,k); 一共读 nr次
更痛苦的是梦没醒路已经不能走了
2楼2011-10-15 03:08:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖

★ ★
余泽成(金币+2): 谢谢参与应助! 2011-10-15 19:13:21
li_clifff(金币+10): 恩,明白了,谢谢 2011-10-15 23:22:40
ben_ladeng: 专家考核存档 2011-10-17 11:51:44
ALLOCATE nf(nodof,nn) 这句话是错误的吧?
ALLOCATE(nf(nodof,nn))
如果在这之后加一句:
nf = 100000
然后在程序结束之前加上:
CODE:
do i=1,96
   write(*,*) nf(1:3,i)
end do

你就知道你的程序是在做什么了……
3楼2011-10-15 14:30:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

li_clifff

银虫 (正式写手)

引用回帖:
3楼: Originally posted by snoopyzhao at 2011-10-15 14:30:40:
ALLOCATE nf(nodof,nn) 这句话是错误的吧?
ALLOCATE(nf(nodof,nn))
如果在这之后加一句:
nf = 100000
然后在程序结束之前加上:
CODE:
do i=1,96
   write(*,*) nf(1:3,i)
end do

你就知道你 ...

恩,再请教一个小问题,如果在主程序里定义了变量数组nf是3*9的,即nf(3,9),而且主程序里的 call subroutine(nf,...),对应的subroutine里面对nf定义为nf(2,9),会有什么问题吗?运行时候到底是nf(3,9),还是nf(2,9),刚想到有这个问题,就顺便问一下,谢谢
4楼2011-10-15 23:26:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见