24小时热门版块排行榜    

查看: 382  |  回复: 2

goodluckyli

新虫 (初入文坛)

[求助] 求助一段fortran中编程的意思 已有2人参与

刚学fortran 看到这样一个程序
     1   write(*,*) "请输入一个字串"
      2  read(*,"(A79)" input
       3   j=1
        4   do i=1, len_trim(input)
       5       if ( input(i:i) /= ' ' ) then
       6   output(j:j)=input(i:i)
      7          j=j+1
        end if
end do
  
  write(*,"(A79)" output
请详细说明3、4、5、6、7行的意思 ,input(i:i) /= ' ' 是什么意思,为什么要写单引号?
谢谢!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

supervb

铁杆木虫 (文坛精英)

【答案】应助回帖

感谢参与,应助指数 +1
input(i:i) /= ' ' 是逻辑判断字符是否为空,后续语句中写明了,如果非空的话,那么output(j:j)=input(i:i)
咱是做非线性随机动力学的哟
2楼2014-09-15 15:54:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fish.yfyh

铜虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
这段代码的作用就是将input变量存储的字符串中的所有空格删除后复制给output变量。
CODE:
3    j=1
4    do i=1, len_trim(input)
5        if ( input(i:i) /= ' ' ) then
6            output(j:j)=input(i:i)
7            j=j+1
8        end if
9    end do

第3行的j是output的下标,从1开始。
第4行和第9行,是循环体,就是遍历input所有字符。
第5行和第8行,是条件判断,就是当input的某一个字符,即input(i:i)不等于(/=)空格(''),条件才成立。
第6行,仅当上述条件成立时,才将非空字符依次保存在output中。
第7行,依次保存,即j每次增加1.
3楼2014-09-16 13:31:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 goodluckyli 的主题更新
信息提示
请填处理意见