24小时热门版块排行榜    

Znn3bq.jpeg
查看: 2329  |  回复: 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的回帖

snoopyzhao

至尊木虫 (职业作家)

【答案】应助回帖


jjdg(金币+1): 感谢参与 2011-10-17 02:32:35
li_clifff(金币+10): 谢谢你的评论,如果数组参数在主程序和多个子程序都出现,是不是也是这样一步步传递,读入子程序,运行子程序出来新的数组,再读入下一个子程序。。。 2011-10-17 09:44:20
引用回帖:
6楼: Originally posted by li_clifff at 2011-10-16 22:51: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, se ...

由于 Fortran 是 call by reference,所以,关键还是要看子程中相关变理的声明了……

在你的这个例子中,很显然,只取其中的一个数值。

对于你前面说的,其实,传递给子程的只是数组对应的第一个数值的地址,后面到底如何取值,还要看子程中的定义……这种情况下,一定要注意 Fortran 中是列优先的存贮方式……

» 本帖已获得的红花(最新10朵)

7楼2011-10-17 00:11:07
已阅   回复此楼   关注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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 国自然面上和省基金B类撒花 +17 花田半亩~白 2026-04-21 17/850 2026-04-23 07:30 by john198197
[考研] 有没有学校收留 +3 蒋昌鹏qtj 2026-04-20 3/150 2026-04-22 20:25 by 学员JpLReM
[考研] 312求调剂 +3 山河似你温柔 2026-04-22 3/150 2026-04-22 20:17 by 学员JpLReM
[考博] 华师大读博 +3 xq83 2026-04-22 5/250 2026-04-22 10:42 by xq83
[教师之家] 又一批高校组建人工智能学院 师资行吗 不是骗人吗 +5 yexuqing 2026-04-19 5/250 2026-04-22 10:01 by easeheart
[论文投稿] 急需审稿人!!! +3 陆小果画大饼 2026-04-21 3/150 2026-04-21 23:54 by jzy_123456
[考博] 申博/考博 +4 啃面包的小书虫 2026-04-17 8/400 2026-04-21 16:26 by 啃面包的小书虫
[考研] 295分求调剂 +6 ?要上岸? 2026-04-17 6/300 2026-04-21 08:18 by Equinoxhua
[考研] 085600材料与化工调剂 5+3 孜孜不倦2002 2026-04-19 6/300 2026-04-20 21:25 by babero
[考研] 337求调剂 +3 jyz04 2026-04-18 3/150 2026-04-20 12:24 by 研可安
[考博] 申博 +3 Xyyx. 2026-04-18 3/150 2026-04-20 10:44 by YuY66
[考博] 湖南大学刘巧玲课题组2026年第二批次博士研究生招生信息 +3 南风观火 2026-04-18 5/250 2026-04-20 10:13 by 南风观火
[考研] 294求调剂 +8 淡然654321 2026-04-17 9/450 2026-04-19 19:51 by Equinoxhua
[考研] 304求调剂 +8 castLight 2026-04-16 8/400 2026-04-19 17:14 by 中豫男
[考研] 求调剂 +10 小聂爱学习 2026-04-16 12/600 2026-04-19 16:51 by 中豫男
[考研] 接受任何调剂 +6 也就是栗子 2026-04-17 7/350 2026-04-18 17:20 by 涵竹刘
[考研] 收到复试调剂但是去不了 +8 小蜗牛* 2026-04-16 8/400 2026-04-18 11:15 by zixin2025
[考研] 260求调剂 +4 Zyt1314520.. 2026-04-17 5/250 2026-04-18 08:28 by babysonlkd
[有机交流] 二苯甲酮酸类衍生物 50+3 小白爱主人 2026-04-17 6/300 2026-04-17 18:47 by kf2781974
[考研] 322求调剂 +6 tekuzu 2026-04-17 6/300 2026-04-17 13:48 by Espannnnnol
信息提示
请填处理意见