如果fortran 95示例代码没有编译

时间:2014-06-10 02:53:36

标签: fortran fortran95

我一直在阅读本指南,并且编写任何示例代码时始终会出现写入部分错误: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

1 个答案:

答案 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(*,*), ...

但是我建议不要混淆它。