我必须创建一个逆转短语的程序。
例如:当我编写hello guys时,我想要syug olleh
这是我目前所拥有的,但我不知道如何逆转phraseT板中的角色
program reversing
implicit none
character(len=20),dimension(1:20)::phraseT
character(len=20)::phrase,reverse
integer::i,x
write(*,*)"write a phrase :"
read(*,'(a)')phrase
x=len(trim(phrase))
nomT(1:20)=" "
do i=1,x
nomT(i:i)=trim(phrase(i:i))
end do
write(*,*)nomT
end program reversing发布于 2012-05-15 17:29:59
一种简单的方法..。
character(80) :: string = "Whatttt's up doc?"
character :: temp
integer :: i, length
write (*,*) string ! Writes it out proper.
length = len_trim(string) ! ignores trailing blanks.
! use len(string) to reverse those as well
do i = 1, length/2
temp = string(i:i)
string(i:i) = string(length+1-i:length+1-i)
string(length+1-i:length+1-i) = temp
end do
write(*,*) string ! Writes it out backwards.
end其他人肯定会想出更聪明的(更短的)。
发布于 2012-05-21 10:42:24
以下是一种较短的方法:
forall (i=1:len(string)) string(i:i) = string(len(string)-i+1:len(string)-i+1)它甚至可以节省一小部分字节!但我不确定我是否认为这更明智。
发布于 2019-01-26 19:47:06
@Rook的答案也适用于奇怪的字符串长度?无论如何,这是我的尝试,受到他的回答的启发,他的回答也考虑到了后面的空白:
! Reverse the string
function reverse_string(string) result(gnirts)
character(len=*) :: string
character(len(string)) :: gnirts
character(1) :: temp
integer :: i, length
length = len(string)
do i = 1,length
gnirts(length-i+1:length-i+1) = string(i:i)
end do
end function reverse_stringhttps://stackoverflow.com/questions/10605574
复制相似问题