回 帖 发 新 帖 刷新版面

主题:键盘读入和赋值语句竟然结果不同!

请教各路高人,本人菜鸟,最近遇到一个题目“判断指定的单词在一行文字中出现的次数”。

编程为

program main
implicit none
integer L,M,K,L1
character LINE*45,WORD*10
LINE='the dog the dog the dog'
WORD='the'

!删除前导空格
17 if(WORD(1:1).eq.' ')then
   WORD=WORD(2:)
goto 17
end if

L=index(WORD,' ')   !求出单词的长度
M=0
L1=1
15 continue
K=index(LINE(L1:),word(:L))
if(K.ne.0)then
M=M+1
L1=L1+K+L-1
goto 15
end if
write(*,*)word(:L),'出现',M,'次'
end

 

顺利通过,但是,本人把前几行换成键盘读入形式,即

 

print*,'输入一行文字'

read*,LINE

print*,'输入一个单词'

read*,WORD

竟然得到的结果不同,请求高人指点!!!

 

回复列表 (共1个回复)

沙发

首先,错误的主要原因是:read*,LINE 如果键盘输入 the dog the dog the dog
程序只会读入the,因为没有格式化输入,所以第一个the后面的空格被当成了区分数据的标志,所以读完一个the就停止读入。应该改成 read(*,"(A20)") LINE

另外程序有很多可以改进的地方,删除前导格那部分语句没有起到作用,因为word = ‘the     ’,空格在末尾部分,可以考虑用trim(word)来删除末尾的空格。当然楼主如果是为了以防万一,做个预处理是可以。而且对于index语句word末尾有空格好像不会影响。

求单词的长度,可以用len_trim(word)求出。

。。。

我来回复

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