我正在尝试编写一个简单的 Fortran 代码,用于练习。它应该将某个范围内的数字相乘。每次,结果产品都被转换成一个字符串,因为我想看看它是否由相同的数字组成。
我测试了将整数转换为字符串并键入字符串的组件的方式,一切正常。然后,我需要比较字符串的组成部分,为此我使用 string(number:number)。但我无法让代码正确执行此操作。
这是代码和输出:
program test
implicit none
character(10) myString
character(1) a,b,c,d,e,f
integer::i,j,k
do i=900,901,1
j=900
k=i*j
write(*,*)'k =', k
write(myString,'(i10)') k
write(*,*)'myString = ', myString
a=myString(1:1)
b=myString(2:2)
c=myString(3:3)
d=myString(4:4)
e=myString(5:5)
f=myString(6:6)
print*,a,b,c,d,e,f
if (d==f) then
print*,'hobla'
else
print*,'fobla'
end if
end do
stop
end program test
所以我定义了字符:a,b,c,d,e,f 来包含字符串的组成部分。并使用 myString(i:i) 定位每个组件并将其存储在字符 a、b、c、d、e、f 之一中。但似乎只有前两个工作正常,其余的没有被存储!
输出:
k = 810000
myString = 810000
81
fobla
k = 810900
myString = 810900
81
fobla
注意 81。这应该是第一次给出 810000,并打印“hobla”。并第二次给810900并打印“fobla”。但这并没有发生!
谁能告诉我如何让 myString 接受零作为字符?