我一直在阅读本指南,并且编写任何示例代码时始终会出现写入部分错误:http://www.mrao.cam.ac.uk/~rachael/compphys/SelfStudyF95.pdf
program vertical
!
! Vertical motion under gravity
!
implicit none
! acceleration due to gravity
real, parameter :: g = 9.8
! variables
real :: s ! displacement
real :: t ! time
real :: u ! initial speed ( m / s)
! set values of variables
t = 6.0
u = 60
! calculate displacement
s = u * t - g * (t**2) / 2
! output results
write(*,*) ’Time = ’,t,’ Displacement = ’,s
end program vertical
编译此代码会生成错误消息“WRITE语句中的预期表达式”
“Hello World”示例也无法编译。
program ex1
!
! My first program
!
write(*,*) ’Hello there’
end program ex1
然而,当我使用Wikibook的风格并将示例代码重写为:http://en.wikibooks.org/wiki/Fortran/Hello_world
program ex1
!
! My first program
!
print *, "Hello there"
end program ex1
它编译正确。
另一方面,“打印”和“写”之间有什么区别?我之前有过C和Matlab的基本经验。
编辑:我正在将C编程分配重写为Fortran程序。这段代码编译正确:program ex1
integer :: number_one, number_two, num3
real :: number_onef, number_twof, num3f, num4f
character (LEN=10) :: name
print*, "Enter two integers"
read (*,*) number_one, number_two
write(*,*), 'the number you entered is ', number_one
write(*,*), 'the second number you entered is ', number_two
num3 = number_one * number_two
write(*,*), 'Multiplied result: ' ,num3
print*, "Enter two floating point numbers"
read (*,*) number_onef, number_twof
write(*,*) 'the number you entered is ', number_onef
write(*,*) 'the second number you entered is', number_twof
num3f = number_onef * number_twof
write(*,*) 'Multiplied result: ', num3f
num4f = number_onef / number_twof
write(*,*) 'Divided result: ', num4f
print*, "Enter your name"
read (*,*) name
write (*,*) 'Hello ', name
答案 0 :(得分:1)
首先,您应该检查您正在使用的编译器。我没有Code :: Blocks的经验,但Wiki应该帮助你: Supported Compiler
如果你想更改编译器(例如gfortran(GNU),因为它似乎默认使用g77),请参阅: Change Compiler
您可以在Fortran Wiki上查看编译器的功能(90,95,03,08)。
GNU编译器支持' 95标准和2003标准的大量功能。它是免费的,上面的Wiki链接中有一条安装说明,所以你应该试一试。
除非我们知道你正在使用什么编译器,否则很难回答你的问题。
当打印写入标准输出时,另一方面," print"之间的区别是什么?和"写"?
写入可用于写入标准输出或文件。在您的示例的上下文中,可以使用这两个语句。使用
时没有区别(至少使用英特尔Fortran编译器和GNU)print *, "hello"
print *, 'hello'
write(*,*) "hello"
write(*,*) 'hello'
write(*,*), ...
但是我建议不要混淆它。