主题:有关read命令下的格式问题
Hasky
[专家分:0] 发布于 2010-10-16 12:01:00
这是程序
program main
integer NPOIN,NELEM,NBOUN,NMATS,NPROP,NNODE,NDOFN,NDIME,NSTRE
READ(5,900) NPOIN,NELEM,NBOUN,NMATS,NPROP,NNODE,NDOFN,NDIME,NSTRE
900 FORMAT(16I5) !I5(长度5的整数)
WRITE(6,905) NPOIN,NELEM,NBOUN,NMATS,NPROP,NNODE,NDOFN,NDIME,NSTRE
905 FORMAT (//1X,'NPOIN =',I5,3X,'NELEM =',I5,3X,7HNBOUN =,I5,3X,&
7HNMATS =,I5,3X,//1X,7HNPROP =,I5,3X,7HNNODE =,I5,3X,7HNDOFN =,&
I5,3X,7HNDIME =,I5,//1X,7HNSTRE =,I5)
END
输出结果如图1
最后更新于:2010-10-16 12:57:00
回复列表 (共6个回复)
沙发
jstzhurj [专家分:4680] 发布于 2010-10-16 12:14:00
具体有什么疑问呢?
板凳
Hasky [专家分:0] 发布于 2010-10-16 12:44:00
回帖怎么无法贴图了。。。
我输入的是1 2 3 4 5 6 7 8 9九个数据,分别对应NPOIN,NELEM,NBOUN,NMATS,NPROP,NNODE,NDOFN,NDIME,NSTRE
这九个变量,所以我想要的输出应该是
NPOIN=1 NELEM=2,.....NSTRE=9
这样的效果。
后来我把程序改成这样了
program main
integer NPOIN,NELEM,NBOUN,NMATS,NPROP,NNODE,NDOFN,NDIME,NSTRE
READ(5,*) NPOIN,NELEM,NBOUN,NMATS,NPROP,NNODE,NDOFN,NDIME,NSTRE
!900 FORMAT(16I5)
WRITE(6,905) NPOIN,NELEM,NBOUN,NMATS,NPROP,NNODE,NDOFN,NDIME,NSTRE
905 FORMAT (//1X,'NPOIN =',I5,3X,'NELEM =',I5,3X,7HNBOUN =,I5,3X,&
7HNMATS =,I5,3X,//1X,7HNPROP =,I5,3X,7HNNODE =,I5,3X,7HNDOFN =,&
I5,3X,7HNDIME =,I5,//1X,7HNSTRE =,I5)
end
结果就得到了我想要的结果,看来问题出在
READ(5,900) NPOIN,NELEM,NBOUN,NMATS,NPROP,NNODE,NDOFN,NDIME,NSTRE
900 FORMAT(16I5) !I5(长度5的整数)
上面。
根据我的理解,这个命令是“限定输入长度为5以下的整数”,怎么会造成图1的那种效果呢?
3 楼
xzloooooooo [专家分:0] 发布于 2010-10-16 16:07:00
READ(5,900) NPOIN,NELEM,NBOUN,NMATS,NPROP,NNODE,NDOFN,NDIME,NSTRE
900 FORMAT(16I5) !I5(长度5的整数)
输入的数据要保证是5个这节长度。 如要输入“1”,只有一位数据。所以1的前面在补充4个空格。“口口口口1”,“口口口口2”…………
4 楼
Hasky [专家分:0] 发布于 2010-10-16 17:20:00
那输入结果应该是
NPOIN= 1,NELEM= 2,NBOUN= 3,NMATS 4,NPROP= 5,
NNODE= 6,NDOFN= 7,NDIME= 8,NSTRE= 9
这个样子的吧。也不应该是图1那样的吧。
5 楼
songquan [专家分:110] 发布于 2010-10-18 13:17:00
read就不必加format了嘛,直接输入不就得了
6 楼
Hasky [专家分:0] 发布于 2010-10-18 20:56:00
这是个解决办法,呵呵,谢谢了
我来回复