在fortran 中怎么判断字符串相等
答案:3 悬赏:50
解决时间 2021-02-20 00:44
- 提问者网友:花之森
- 2021-02-19 14:44
在fortran 中怎么判断字符串相等
最佳答案
- 二级知识专家网友:转身后的回眸
- 2021-02-19 15:37
!你的问题没有把条件说清楚,不大好答。
!首先我们得明白字符串变量与字符串内容是有区别的,我个人估计你说的是内容比较,比如说“ abc”和“abc”这两个字符串,它们应该是不同的,但是内容相同,这就告诉我们,如果要比较内容的话,先得把字符串前后的空白段去掉,然后再比较。
!下面我写段示意代码,你改改应该就能用了:
!by vqimwr,cvf 6.5通过
program main
implicit none
character(len=80)::string1,string2 !字符串长度为80
integer::ipos,i
!下面的两个字符串一个前面有中文空格,一个前面有英文空格
string1=" abc"
string2=" abc "
!===========下面我编了一段代码,它针对于除去后面空格后长度大于4的字符串,作用是除去前面的中英文空格。
!将string1前面的空格去掉
if(len(trim(string1))>=4) then !长度(除去后面空格后)不小于2的字符串
do i=1,len(trim(string1))-2
if(string1(i:i)==" ".and.string1(i+1:i+1)/=" ".and.string1(i+1:i+2)/=" ") then
ipos=i+1 !非空格字母开始的位置
!write(*,*) ipos
exit
elseif(string1(i:i+1)==" ".and.string1(i+2:i+2)/=" ".and.string1(i+1:i+2)/=" ") then
ipos=i+2 !非空格字母开始的位置
!write(*,*) ipos
exit
end if
end do
!将string1前面的空格去掉
string1=string1(ipos:len_trim(string1))
write(*,*) trim(string1)
end if
!将string2前面的空格去掉
if(len(trim(string2))>=4) then !长度(除去后面空格后)不小于2的字符串
do i=1,len(trim(string2))-2
if(string2(i:i)==" ".and.string2(i+1:i+1)/=" ".and.string2(i+1:i+2)/=" ") then
ipos=i+1 !非空格字母开始的位置
!write(*,*) ipos
exit
elseif(string2(i:i+1)==" ".and.string2(i+2:i+2)/=" ".and.string2(i+1:i+2)/=" ") then
ipos=i+2 !非空格字母开始的位置
!write(*,*) ipos
exit
end if
end do
!将string2前面的空格去掉
string2=string2(ipos:len_trim(string2))
write(*,*) trim(string2)
end if
!========对于除去后面空格后长度小于4的字符串,代码请自己编写吧。
!比较:
if(trim(string1)==trim(string2)) then
write(*,*) "相等!"
else
write(*,*) "不相等!"
end if
end program main
!首先我们得明白字符串变量与字符串内容是有区别的,我个人估计你说的是内容比较,比如说“ abc”和“abc”这两个字符串,它们应该是不同的,但是内容相同,这就告诉我们,如果要比较内容的话,先得把字符串前后的空白段去掉,然后再比较。
!下面我写段示意代码,你改改应该就能用了:
!by vqimwr,cvf 6.5通过
program main
implicit none
character(len=80)::string1,string2 !字符串长度为80
integer::ipos,i
!下面的两个字符串一个前面有中文空格,一个前面有英文空格
string1=" abc"
string2=" abc "
!===========下面我编了一段代码,它针对于除去后面空格后长度大于4的字符串,作用是除去前面的中英文空格。
!将string1前面的空格去掉
if(len(trim(string1))>=4) then !长度(除去后面空格后)不小于2的字符串
do i=1,len(trim(string1))-2
if(string1(i:i)==" ".and.string1(i+1:i+1)/=" ".and.string1(i+1:i+2)/=" ") then
ipos=i+1 !非空格字母开始的位置
!write(*,*) ipos
exit
elseif(string1(i:i+1)==" ".and.string1(i+2:i+2)/=" ".and.string1(i+1:i+2)/=" ") then
ipos=i+2 !非空格字母开始的位置
!write(*,*) ipos
exit
end if
end do
!将string1前面的空格去掉
string1=string1(ipos:len_trim(string1))
write(*,*) trim(string1)
end if
!将string2前面的空格去掉
if(len(trim(string2))>=4) then !长度(除去后面空格后)不小于2的字符串
do i=1,len(trim(string2))-2
if(string2(i:i)==" ".and.string2(i+1:i+1)/=" ".and.string2(i+1:i+2)/=" ") then
ipos=i+1 !非空格字母开始的位置
!write(*,*) ipos
exit
elseif(string2(i:i+1)==" ".and.string2(i+2:i+2)/=" ".and.string2(i+1:i+2)/=" ") then
ipos=i+2 !非空格字母开始的位置
!write(*,*) ipos
exit
end if
end do
!将string2前面的空格去掉
string2=string2(ipos:len_trim(string2))
write(*,*) trim(string2)
end if
!========对于除去后面空格后长度小于4的字符串,代码请自己编写吧。
!比较:
if(trim(string1)==trim(string2)) then
write(*,*) "相等!"
else
write(*,*) "不相等!"
end if
end program main
全部回答
- 1楼网友:努力只為明天
- 2021-02-19 17:52
FORTRAN使用.eq.来判断字符串相等,比如:
program Swap_2_Real
do while (.true)
read *, value1, value2 ! 使用这从键盘输入两数字
if (value1 .eq. value2) stop ! 若输入两数字相同,则停止程式
call swap(value1, value2) ! 呼叫 swap函式,做两数交换
print *, value1, value2 ! 将交换之两数印出
end do
stop
end
- 2楼网友:说多了都是废话
- 2021-02-19 16:15
FORTRAN使用.eq.来判断字符串相等,比如:
program Swap_2_Real
do while (.true)
read *, value1, value2 ! 使用这从键盘输入两数字
if (value1 .eq. value2) stop !
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |