fortran用法小结

fortran用法小结
fortran用法小结

Fortran用法小结

目录:

一、说明

二、概述

三、数据类型及基本输入输出

四、流程控制

五、循环

六、数组

七、函数

八、文件

一、说明

本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。只读到第九章,主要是3~9 章,都是最基本的用法(原书共16章)。这里主要摘录了我看书过程中总结的一些Fortran 和C不

同的地方,主要是语法方面。希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮

助。要想得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,

看完前九应该很快的,花一两天就行了。觉得如果耐心看完本文,基本功能应该也可以顺利用起

来了。外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过

之后都没得及仔细想,只是按着作者的意思去理解。所以这份笔记还处于纸上谈兵的层次。如果

有不妥的方,希望大家指正。谢谢!

文中蓝色的部分是程序代码,!后面的内容为注释。

二、概述

1、名词解释

Fortran=Formula Translator/Translation

一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。的确,从一开始,IBM设计的时候就是为了方便数值计算和科学数据处理。设计强大的数组操作就是为了实现这一

目标。Fortran奠定了高级语言发展的基础。现在Fortran在科研和机械方面应用很广。

2、Fortran的主要版本及差别

按其发展历史,Fortran编译器的版本其实很多。现在在广泛使用的是Fortran 77和Fortr an90。Fortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,

所以编程时推荐使用90。鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保

证能够看77程序。以下是77和90的一些格式上的区别。

Fortran 77:固定格式(fixed format),程序代码扩展名:.f或.for

(1)若某行以C,c或*开头,则该行被当成注释;

(2)每行前六个字符不能写程序代码,可空着,或者1~5字符以数字表明行代码(用作格式化输入出等);7~72为程序代码编写区;73往后被忽略;

(3)太长的话可以续行,所续行的第六个字符必须是"0"以外的任何字符。

Fortran 90:自由格式(free format),扩展名:.f90

(1)以"!"引导注释;

(2)每行可132字符,行代码放在每行最前面;

(3)以&续行,放在该行末或下行初。

以下都是讨论Fortran 90。

3、Fortran的一些特点,和C的一些不同

其实很多,在下面涉及具体方面时可以看到。这里只是大致提一些。

(1)不分大小写

(2)每句末尾不必要写分号

(3)程序代码命令间的空格没有意义

(4)不像C,Fortran不使用{ }

(5)数据类型多出了复数和逻辑判断类型。比如复数类型

complex :: a !声明复数的方法。复数显然方便了科学计算,满足了工程方面需求

a=(1.0,2.0) ! a=1+i

(6)多出了乘幂运算(**)。乘幂除了整数还可以是实数形式。如开方,开立方

a=4.0**0.5,a=8.0**(1.0/3.0)。

(7)数组有一些整体操作的功能;可以方便的对部分元素进行操作

(8)有些情况下可以声明大小待定的数组,很实用的功能

4、Fortran的基本程序结构

先看一看所谓的"Hello Fortran"程序。

program main !程序开始,main是program的名字,完全自定义

write(*,*) "Hello" !主程序

stop !终止程序

end [program[main]] !end用于封装代码,表示代码编写完毕。[ ]中的内容可省略,下同。再看一段实用一些的程序,好有点感性认识。程序用于计算圆柱的表面积,要求输入底面半径和。其中展示了Fortran的一些特色用法。程序摘自维基。其实是一个叫

https://www.360docs.net/doc/be16718511.html,

的网上引的维基的网页。推荐去看看!能查到不少有意思的东西。

program cylinder !给主函数起个名字

! Calculate the area of a cylinder.

! Declare variables and constants.

! constants=pi

! variables=radius squared and height

implicit none ! Require all variables to be explicitly declared

!这个一般都是要写上的。下面会进一步说明。

integer :: ierr

character :: yn

real :: radius, height, area

real, parameter :: pi = 3.1415926536 !这是常量的声明方法

interactive_loop: do !do循环,Fortran中的循环可以加标签,如d前面的

!interactive_loop就是标签

! Prompt the user for radius and height

! and read them.

write (*,*) 'Enter radius and height.' !屏幕输出

read (*,*,iostat=ierr) radius,height !键盘输入。isotat的值用判断输入成功否。

! If radius and height could not be read from input,

! then cycle through the loop.

if (ierr /= 0) then

write(*,*) 'Error, invalid input.'

cycle interactive_loop !cycle 相当于C里的continue

end if

! Compute area. The ** means "raise to a power."

area = 2 * pi * (radius**2 + radius*height) ! 指数运算比C方便

! Write the input variables (radius, height)

! and output (area) to the screen.

write (*,'(1x,a7,f6.2,5x,a7,f6.2,5x,a5,f6.2)') &

!"&"表示续行。这里还显示了格式化输出

'radius=',radius,'height=',height,'area=',area

yn = ' '

yn_loop: do !内嵌的另一个do循环

write(*,*) 'Perform another calculation? y[n]'

read(*,'(a1)') yn

if (yn=='y' .or. yn=='Y') exit yn_loop

if (yn=='n' .or. yn=='N' .or. yn==' ') exit interactive_loop

end do yn_loop !结束内嵌do循环

end do interactive_loop

end program cylinder

Fortran程序的主要结构就是这样了。一般还会有些module的部分在主函数前,函数在主函数后。

三、数据类型及基本输入输出

1、数据类型,声明及赋初值

(1)integer:短整型kind=2, 长整型kind=4

integer([kind=]2) :: a=3

如果声明成integer:: a,则默认为长整型。

!"::" 在声明并同时赋初值时必须要写上;类型名后面有形容词时也必须保留::;其他情况可略去

!所谓形容词,可以看一下这个。比如声明常数

real,parameter :: pi=3.1415926 。parameter就是形容词。

(2)real:单精度kind=4(默认),双精度kind=8

real([kind=]8) :: a=3.0

还有指数的形式,如1E10为单精度,1D10为双精度

(3)complex 单精度和双精度

complex([kind=]4) b

(4)character

character([len=]10) c !len为最大长度

(5)logical

logical*2 :: d=.ture. (等价于logical(2)::d=.ture.)

(6)自定义类型type:类似于C中的struct

Fortran 77中给变量赋初值常用DATA命令,可同时给多个变量赋初值

data a,b,string /1, 2.0, 'fortran'/

与C不同的是,Fortran中变量不声明也能使用,即有默认类型(跟implicit命令有关)。按照默认的定,以i,j,k,l,m,n开头的变量被定义为integer,其余为real。取消该设置需在程序声明

部分之前implicit none。彭国伦建议一般都使用该语句。

另一点关于声明的不同是Fortran有"等价声明":

integer a,b

equivalence(a,b)

使得a,b使用同一块内存。这样可以节省内存;有时可精简代码。如:equivalence(很长名字的变量如三维数组的某个元素,a),之后使用a来编写程序就简洁多了。

2、基本输入输出

输入:read(*,*) a !从键盘读入

输出:write(*,*) "text" !在屏幕上输出。Fortran 77用' text'。Fortan 90中一般" "和' '都可

print *,"text" !只能用于屏幕输出

(*,*)完整写为(unit=*,fmt=*)。其中unit为输入/输出位置,如屏幕,文件等;fmt为格式。如这两项都写成*,则按默认的方式进行,即上面描述的。print后面的*表示按默认格式输

出。

四、流程控制

1、运算符

(1)逻辑运算符

== /= > >= < <= !Fortran 90用法

.EQ. .NE. .GT. .GE. .LT. .LE. !Fortran 77用法

(2)涉及相互关系的集合运算符

.AND. .OR. .NOT. .EQV. .NEQV.

! 仅.NOT.连接一个表达式,其余左右两边都要有表达式(可以是logical类型的变量)!.EQV.:当两边逻辑运算值相同时为真, .NEQV.:当两边逻辑运算值不同时为真

2、IF

(1) 基本:

if(逻辑判断式) then

……

end if

如果then后面只有一句,可写为

if(逻辑判断式) …… !then和end if可省略(2) 多重判断:

if(条件1) then

……

else if(条件2)then

……

else if (条件3)then

……

else

……

end if

(3) 嵌套:

if(逻辑判断式) then

if(逻辑判断式) then

if(逻辑判断式) then

else if(逻辑判断式) then

……

else

……

end if

end if

end if

(4) 算术判断:

program example

implicit none

real c

write (*,*) "input a number"

read (*,*) c

if(c) 10,20,30 !10,20和30为行代码,根据c小于/等于/大于0,执行10/20/30行的程10 write (*,*) "A"

goto 40 !goto可实现跳到任意前面或后面的行代码处,但用多了破坏程序结

20 write (*,*) "B"

goto 40

30 write (*,*) "C"

goto 40

40 stop

end

3、SELECT CASE

类似于C的switch语句

select case(变量)

case(数值1) ! 比如case(1:5)代表1<=变量<=5会执行该模块

…… !case(1,3,5)代表变量等于1或3或5会执行该模块

case(数值2) !括号中数值只能是integer,character或logical型常量,不能real型

case default

……

end case

4、PAUSE, CONTINUE

pause暂停程序执行,按enter可继续执行

continue貌似没什么用处,可用作封装程序的标志

五、循环

1、DO

do counter=初值, 终值, 增/减量 !counter的值从初值到终值按增/减量变,

…… !counter每取一个值对应着一次循环。增/减量不写则认为1

……

…… !循环主体也没有必要用{}

……

end do

Fortran 77中不是用end do来终止,而是下面这样子:

do 循环最后一行的行代码 counter=初值, 终值, 增/减量

……

行代码…… !这是do的最后一行

2、DO WHILE

do while(逻辑运算)

……

……

end do

类似于C中的while(逻辑运算) {……}。

一开始那个计算圆柱表面积的程序中,应该也算是这一类。不过它是通过内部的if语句来控制循。看来也是可以的,不过在这本书上没看到这样写。其实应该也可以归于下面这种。

3、没看到和C里面的do{……}while(逻辑运算); 相对应的循环语句,不过可以这样,保证至少做一循环:

do while(.ture.)

……

……

if(逻辑运算) exit !exit就好比C里面的break。C里的continue在Fortran里是cycle

end do

4、Fortran的一个特色:带署名的循环

可以这样,不易出错:

outer: do i=1,3

inner: do j=1,3

……

end do inner

end do outer

还可以这样,很方便:

loop 1: do i=1,3

loop2: do j=1,3

if(i==3) exit loop1 !exit终止整个循环loop1

if(j==2) cycle loop2 !cycle跳出loop2的本次循环,进行loop2的下次循环

write(*,*) i,j

end do loop2

end do loop1

还有一些循环主要用于Fortran中的数组运算,为Fortran特有,很实用。

六、数组

1、数组的声明

和C不同的是,Fortran中的数组元素的索引值写在()内,且高维的也只用一个(),如integer a(5) !声明一个整型一维数组

real :: b(3,6) !声明一个实型二维数组

类型可以是integer, real, character, logical或type。最高可以到7维。

数组大小必须为常数。但是和C语言不同,Fortran也有办法使用大小可变的数组,方法如:integer, allocatable :: a(:)

!声明小可变经过某个途径得知所需数组大小size之后,用下面的语句:

allocate(a(size)) !配置内存空间

之后该数组和通过一般方法声明的数组完全相同。

与C不同,Fortran索引值默认为从1开始,而且可以在声明时改变该规则:

integer a(-3:1) ! 索引值为-3,-2,-1,0,1

integer b(2:3,-1:3) !b(2~3,-1~3)为可使用的元素

2、数组在内存中的存放

和C不同,Fortran中的数组比如a(2,2)在内存中存放顺序为a(1,1),a(2,1),a(1,2),a(2,2 )。原则是放低维的元素,再放高维的元素。此规则称为column major。

3、赋初值

(1)最普通的做法:

integer a(5)

data a /1,2,3,4,5/

或integer :: a(5)=(/1,2,3,4,5/)

若integer :: a(5)=5,则5个元素均为5

对于integer :: a(2,2)=(/1,2,3,4/)

根据数组元素在内存中存放的方式,等价于赋值a(1,1)=1,a(2,1)=2,a(1,2)=3,a(2,2)=4 (2)利用Fortran的特色:隐含式循环。看例子就明白了。

integer a(5)

integer i

data (a(i),i=2,4)/2,3,4/ !(a(i),i=2,4)表示i从2到4循环,增量为默认值1

还可以这样:

integer i

integer :: a(5)=(/1,(2,i=2,4),5/) !五个元素分别赋值为1,2,2,2,5

integer :: b(5)=(/i, i=1,5/) !五个元素分别赋值为1,2,3,4,

还可以嵌套

data ((a(i,j),i=1,2),j=1,2)=/1,2,3,4/ !a(1,1)=1,1(2,1)=2,a(1,2)=3,a(2,2)=4

4、操作整个数组

设a,b为相同类型、维数和大小的数组

a=5 !所有元素赋值为5

a=(/1,2,3/) !这里假设a为一维,a(1)=1,a(2)=2,a(3)=3

a=b !对应元素赋值,要求a,b,c维数和大小相同,下同

a=b+c

a=b-c

a=b*c

a=b/c

a=sin(b) !内部函数都可以这样用

5、操作部分数组元素

a为一维数组

a(3:5)=(/3,4,5/) !a(3)=3,a(4)=4,a(5)=5

a(1:5:2)=3 !a(1)=3,a(3)=3,a(5)=3

a(3:)=5 !a(3)以及之后的所有元素赋值为5

a(1:3)=b(4:6) !类似于这种的要求左右数组元素个数相同

a(:)=b(:,2) !a(1)=b(1,2),a(2)=b(2,2),以此类推

6、WHERE

where形式上类似于if,但只用于设置数组。设有两个同样类型、维数和大小的数组a,b where(a<3)

b=a !a中小于3的元素赋值给b对应位置的元素

end where

再如:where(a(1:3)/=0) c=a !略去了end where,因为只跟了一行where可嵌,也

!可类似do循环有署名标签。

7、FORALL

有点像C中的for循环:

forall(triplet1[,triplet2 [,triplet3…]],mask)

其中triplet形如i=2:6:2,表示循环,最后一个数字省略则增量为1

例如:

forall(i=1:5,j=1:5,a(i,j)<10)

a(i,j)=1

end forall

又如: forall(i=1:5,j=1:5,a(i,j)/=0) a(i,j)=1/a(i,j)

forall也可以嵌套使用,好比C中for循环的嵌套。

七、函数

Fortran中函数分两类:子程序(subroutine)和自定义函数(function)。自定义函数本质上就是学上的函数,一般要传递自变量给自定义函数,返回函数值。子程序不一定是这

样,可

以没有返值。传递参数要注意类型的对应,这跟C是一样的。

1、子程序

目的:把某一段经常使用的有特定功能的程序独立出来,可以方便调用。

习惯上一般都把子程序放在主程序结束之后。

形式:

subroutine name (parameter1, parameter2)

!给子程序起一个有意义的名字。可以传递参数,子程序无返回值与自定义函数不同之处。括号内也可以

空着,代不传递参数。

implicit none

integer:: parameter1, parameter2 !需要定义一下接收参数的类型。

…… !接下来的程序编写跟主程序没有任何别。

……

return !跟C不同,这里表示子程序执行后回到调用它的地方继续执行下面的程序。不一定放

!在最后。可以放在子程序的其他位置,作用相同;子程序中return之后的部分不执行。还可省略不写

end [subroutine name]

调用:使用call命令直接使用,不需要声明。在调用处写:

call subroutine name(parameter1,parameter2)

注意点:

a.子程序之间也可相互调用。直接调用就是了,像在主程序中调用子程序一样。

b.传递参数的原理和C中不同。Fortran里是传址调用(call by address/reference),就是传递时用参数和子程序中接收时用的参数使用同一个地址,尽管命名可以不同。这样如果子程序

的执行改子程序中接收参数的值,所传递的参数也相应发生变化。

c.子程序各自内部定义的变量具有独立性,类似于C。各自的行代码也具有独立性。因此各个子程序主程序中有相同的变量名、行代码号,并不会相互影响。

2、自定义函数

和子程序的明显不同在于:需要在主程序中声明之后才能使用。调用方式也有差别。另外按照惯例用函数不去改变自变量的值。如果要改变传递参数的值,习惯上用子程序来做。声明方式:real, external :: function_name

一般自定义函数也是放在主程序之后。

形式:

function function_name(parameter1, parameter2)

implicit none

real:: parameter1, parameter2 !声明函数参数类型,这是必需的

real::function_name !声明函数返回值类型,这是必需的

……

……

function_name=…. !返回值的表达式,以函数名返回

return !跟C不同,这里表示子程序执行后回到调用它的地方继续执行下面的程序。可以不写

end

也可以这样直接声明返回值类型,简洁些:

real function function_name(parameter1, parameter2)

implicit none

real:: parameter1, parameter2 !这个还是必需的

……

……

function_name=…. !返回值表达式

return

end

调用:function_name(parameter1,parameter2)

不需要call命令。

自定义函数可以相互调用。调用时也需要事先声明。

总之,调用自定义函数前需要做声明,调用子程序则不需要。

3、关于函数中的变量

(1)注意类型的对应。Fortran中甚至可以传递数值常量,但只有跟函数定义的参数类型对应才会到想要的结果。如call ShowReal(1.0)就必须用1.0而不是1。

(2)传递数组参数,也跟C一样是传地址,不过不一定是数组首地址,而可以是数组某个指定元素地址。比如有数组a(5),调用call function(a)则传递a(1)的地址,调用call functio

n(a(3))则递a(3)的地址。

(3)多维数组作为函数参数,跟C相反的是,最后一维的大小可以不写,其他维大小必须写。这决于Fortran中数组元素column major的存放方式。

(4)在函数中,如果数组是接收用的参数,则在声明时可以用变量赋值它的大小,甚至可以不指定大小。例如:

subroutine Array(num,size)

implicit none

integer:: size

integer num(size) !可以定义一个数组,其大小是通过传递过来的参数决定的。这很实用。注意这里与在主程序中声明数组时,数组大小需要用常数来规定大小的规则不太一样,而这里也可以用参数变量赋值其数组大小。

……

……

return

end

(5)save命令:将函数中的变量值在调用之后保留下来,下次调用此函数时该变量的值就是上次保的值。只要在定义时加上save就行:

integer, save :: a=1

(6)传递函数(包括自定义函数、库函数、子程序都是可以的)。类似于C中的函数指针需要在

主程序和调用函数的函数中都声明作为参数传递的函数。如

real, external :: function !自定义函数

real, intrinsic :: sin !库函数

external sub !子程序

(7)函数使用接口(interface):一段程序模块。以下情况必需:

a.函数返回值为数组

b.指定参数位置来传递参数时

c.所调用的函数参数个数不固定

d.输入指标参数时

e.函数返回值为指针时。

具体用法结合例子容易看懂。例子都很长。看书吧。

4、全局变量

功能就不用说了。原理:根据声明时的相对位置关系而取用,不同与C中根据变量名使用。如果在主程序中定义:

integer :: a,b

common a,b !就是这样定义全局变量的

在子程序或自定义函数中定义:

integer :: c,d

common c,d

则a和c共用相同内存,b和d共用相同内存。

全局变量太多时会很麻烦。可以把它们人为归类,只需在定义时在common后面加上区间名。如

common /groupe1/ a, common /group2/ b。这样使用时就不必把所有全局变量

都列出来,再声明common /groupe1/ c就可以用a、c全局变量了。

可以使用block data程序模块。在主程序和函数中不能直接使用前面提到的data命令给全局变量赋初值。可以给它们各自赋初值;如果要使用data命令必须要这样:

block data [name]

implicit none

integer a,b,c

real d,e

common a b c

common /group1/ d,e

data a,b,c,d,e /1,2,3,4.0,5.0/

end [block data [name]]

5、Module

Module不是函数。它用于封装程序模块,一般是把具有相关功能的函数及变量封装在一起。用法很单,但能提供很多方便,使程序变得简洁,比如使用全局变量不必每次都声明一长串,

写在odule里调用就行了。Module一般写在主程序开始之前。

形式:

module module_name

……

……

end [module [module_name]]

使用:在主程序或函数中使用时,需要在声明之前先写上一行:use module_name. Module中有函数时必须在contains命令之后(即在某一行写上contains然后下

面开始写数,多所有函数都写在这个contains之后)。并且module中定义过的变量在module 里的

函数中可直接使用,函数之间也可以直接相互调用,连module中的自定义函数在被调用时也不用

先声明。

6、include放在需要的任何地方,插入另外的文件(必须在同一目录下)。如:

include 'funcion.f90'

八、文件

1、文本文件

Fortran里有两种读取文件的方式,对应于两种文件

顺序读取:用于文本文件

直接读取:用于二进制文件

这里只摘录关于文本文件的读取。一般模式如下。

character(len=20)::filenamein="in.txt", filenameout="out.txt" !文件名

logical alive

integer::fileidin=10,fileidout=20

!10,20是给文件编的号,除1,2,5,6的正整数都可,因为2、6是默认的输出位置(屏幕),1、5是默认的输入位置(键盘)

integer::error

real::in,out

!下面这一段用于确认指定名字的文件是否存在

inquire(file=filenamein, exist=alive) !如果存在,alive赋值为0

if(.NOT. alive) then

write(*,*) trim(filenamein), " doesn't exist."!trim用于删去filenamein中字串

!后面的stop多余空格,输出时好看些

end if

open([unit=]fileidin, file=filenamein, status="old")

open([unit=]fileidout,file=filenameout[,status="new"])

!unit指定输入/输出的位置。打开已有文件一定要用status="old";打开新文件用status="new";

!不指定status,则默认status="unknown",覆盖已有文件或打开新文件……

read([unit=]fileidin, [fmt=]100,iostat=error )in !error=0表示正确读入数据。100 format(1X,F6.3)

!按一定格式输入输出,格式可以另外写并指定行代码,也可以直接写在read/write中write(([unit=]fileidout, "(1X,F6.3)")out

close(fileidin)

close(fileidout)

!1X代表一个空格。F6.3代表real型数据用占6个字符(含小数点),其中小数点后三位。!常用的还有I3,用于整型数据,共占三个字符;A8,字符型,占8个字符。换行用 /

二进制文件的读取有所不同。不再列举。

2、内部文件

另一个很实用的读写功能是内部文件(internal file)。看看这个例子就明白了。integer::a=1,b=2

character(len=20)::string

write(unit=string,fmt="(I2,'+',I2,'=',I2)")a,b,a+b

write(*,*)string

则结果输出1+2=3。反过来也是可以的:

integer a

character(len=20)::string="123"

read(string,*)a

write(*,*)a

则输出123。

英语比较级的用法总结

☆形容词的比较级☆ 当我们需要对事物作出比较时,需要用到比较级。 比较级的句子结构通常是: 什么 + 动词be (am , is , are ) + 形容词比较级 + than(比)+ 什么 ,如: I’m taller and heavier than you. (我比你更高和更重。) An elephant is bigger than a tiger.(一只大象比一只老虎更大。)形容词的比较级是在形容词的基础上变化而来的,它的变化规则是: ①一般的直接在词尾加er ,如 tall - taller , strong - stronger , ②以e结尾的,直接加r ,如 fine – finer , ③以辅音字母加y结尾的,先改y为i再加er,如funny - funnier ④双写最后的字母再加er,如big – bigger, thin – thinner , hot – hotter 除此之外,还有几个特殊的单词,它的比较级和最高级都是不规则的,如:many / much(原形)– more(比较级)– most(最高级) little / few(原形)– less (比较级)– least(最高级) good(原形)– better(比较级)– best(最高级) bad (原形)– worse(比较级)– worst(最高级) far (原形)– further– furthest 附加:形容词的最高级变化类似于比较级,只是把词尾的er改成est,如: tall (原形)- taller (比较级)- tallest (最高级) long(原形)- longer(比较级)- longest(最高级) big (原形)- bigger(比较级)- biggest(最高级) ☆注意☆比较的两者应该是互相对应的可比较的东西。

初中英语常见时态用法小结

初中英语常见时态用法小结 一般现在时的用法 1) 经常性或习惯性的动作,常与表示频腮度的时间状语连用。 时间状语:every…, sometimes, at…, on Sunday I leave home for school at 7 every morning. 2) 客观真理,客观存在,科学事实。 The earth moves around the sun. Shanghai lies in the east of China. 3) 表示格言或警句中。 Pride goes before a fall. 骄者必败。 注意:此用法如果出现在宾语从句中,即使主句是过去时,从句谓语也要用一般现在时。 例:Columbus proved that the earth is round.. 4) 现在时刻的状态、能力、性格、个性。 I don’t want so much. Ann Wang writes good English but does not speak well. 比较:Now I put the sugar in the cup. I am doing my homework now. 第一句用一般现在时,用于操作演示或指导说明的示范性动作,表示言行的瞬间动作。再如:Now watch me, I switch on the current and stand back. 第二句中的now 是进行时的标志,表示正在进行的动作的客观状况,所以后句用一般现在时。 2. 一般过去时的用法 1)在确定的过去时间里所发生的动作或存在的状态。 时间状语有:yesterday, last week, an hour ago, the other day, in 1982等。 Where did you go just now? 2)表示在过去一段时间内,经常性或习惯性的动作。 When I was a child, I often played football in the street. Whenever the Browns went during their visit, they were given a warm welcome. 3)句型: It is time for sb. to do sth "到……时间了" "该……了" It is time sb. did sth. "时间已迟了" "早该……了" It is time for you to go to bed. 你该睡觉了。 It is time you went to bed. 你早该睡觉了。 would (had) rather sb. did sth. 表示’宁愿某人做某事’ I’d rather you came tomorrow. 4) wish, wonder, think, hope 等用过去时,作试探性的询问、请求、建议等。 I thought you might have some. 我以为你想要一些。 比较: 一般过去时表示的动作或状态都已成为过去,现已不复存在。 Christine was an invalid all her life. (含义:她已不在人间。) Christine has been an invalid all her life. (含义:她现在还活着)

fortran语法手册

1 FORTRAN77四则运算符 + - * / ** (其中**表示乘方) 在表达式中按优先级次序由低到高为:+或-→*或/→**→函数→() 2 FORTRAN77变量类型 2.1 隐含约定:I-N规则 凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。 如IMPLICIT REAL (I,J) 三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。 2.4 数组的说明与使用 使用I-N规则时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为:数组名(下标下界,下标上界),也可省略下标下界,此时默认为1,例: DIMENSION IA(0:9),ND(80:99),W(3,2),NUM(-1:0),A(0:2,0:1,0:3) REAL IA(10),ND(80:99)使用隐含DO循环进行数组输入输出操作:例如WRITE(*,10) ('I=',I,'A=',A(I),I=1,10,2) 10FORMAT(1X,5(A2,I2,1X,A2,I4)) 2.5 使用DATA语句给数组赋初值 变量表中可出现变量名,数组名,数组元素名,隐含DO循环,但不许出现任何形式的表达式:例如 DATA A,B,C/-1.0,-1.0,-1.0/ DATA A/-1.0/,B/-1.0/,C/-1.0/ DATA A,B,C/3*-1.0/CHARACTER*6 CHN(10)

DATA CHN/10*' '/INTEGER NUM(1000) DATA (NUM(I),I=1,500)/500*0/,(NUM(I),I=501,1000)/500*1/ 3 FORTRAN77程序书写规则 程序中的变量名,不分大小写; 变量名称是以字母开头再加上1到5位字母或数字构成,即变更名字串中只有前6位有效; 一行只能写一个语句; 程序的第一个语句固定为PROGRAM 程序名称字符串 某行的第1个字符至第5个字符位为标号区,只能书写语句标号或空着或注释内容; 某行的第1个字符为C或*号时,则表示该行为注释行,其后面的内容为注释内容; 某行的第6个字符位为非空格和非0字符时,则该行为上一行的续行,一个语句最多可有19个续行; 某行的第7至72字符位为语句区,语句区内可以任加空格以求美观; 某行的第73至80字符位为注释区,80字符位以后不能有内容。 4 FORTRAN77关系运算符 .GT. 大于 .GE. 天于或等于 .LT. 小于 .LE. 小于或等于 .EQ. 等于 .NE. 不等于 .AND. 逻辑与 .OR. 逻辑或 .NOT. 逻辑非 .EQV. 逻辑等 .NEQV. 逻辑不等 运算符优先级由高到低顺序为:()→**→*或/→+或-→.GT.或.GE.或.LT. 或.LE.或.EQ.或.NE.→.NOT.→.AND.→.OR.→.EQV.或.NEQV 5 FORTRAN77语句

the比较级…,the比较级…”的用法

“the more…,the more…”的用法 (1)“the more…,themore…”句型为“the+形容词或副词比较级,the+比较级”结构,常表示“越……,就越……”,是一个复合句,其中前面的句子是状语从句,后面的句子是主句。 The more he gets,the more he wants.他越来越贪(他得到的越多,就越想要)。 The more she learns,the more she wants to learn.她越学就越想学。 (2)“the+比较级,the+比较级”句型主从句的时态常用一般现在时或 一般过去时。 The harder he worked, the more he got.他工作越努力,得到的就越多。 (3)若主句的谓语动词用一般将来时,从句的谓语动词要用一般现在时表示将来。 The harder you work,the greater progress you will make.你越用功,进步就越大。 The longer the war lasts,the more the people there will suffer.战争持续越久,那里的人们受难就越多。 (4)在这种句型中,主句在程度上随着从句变化而变化,常把被强调的部分提前。 The faster you run, the better it will be.你跑得越快越好。 (5)这种句型的特点是前后都可以有所省略,特别是谚语、俗语,只要意义明确,越简单越好。 The more, the better.多多益善。

The sooner, the better.越早越好。 (6)这种句型中的比较部分通常是状语、宾语、表语,也可以是主语。 The more English you practice,the better your English is.你练习英语越多,你的英语就越好。 The busier he is,the happier he feels.他越忙越高兴。 The more air there is inside the tyre, the greater the pressure there is in it.轮胎里空气越多,里面的压力就越大。 (7)若表示“越……,越不……”,常用“the more…,the less…”句型。 The more she flatters me, the less Ilike her.她越逢迎我,我越不喜欢她。 (8)若表示“越不……,就越……”,常用“the less…,the more…”句型。 The less he worried,the better he worked.他越不烦恼,工作就干得越 好。

比较级的用法知识点总结

比较级的用法知识点总结 1.可以修饰比较级的词,much,a lot,far,…的多a little, a bit,…一点儿 even甚至,still仍然 例如,Lesson One is much easier than Lesson Two.第一课比第二课容易得多。 She drives still more carefully than her husband.她开车仍然比她丈夫还认真。 2.比较级常用的句型结构 (1)“甲+be+(倍数)+形容词比较级+than+乙”表示“甲比乙…”或“甲比乙…几倍” 例如,Tom is taller than Kate.汤姆比凯特高。 “甲+实意动词+(倍数)+副词比较级+than+乙”表示“甲比乙…”或“甲比乙…几倍” 例如,I got up earlier than my mother this morning.我今天早晨起床比我妈妈还早。 (2)“甲+be+形容词比较级+than+any other+单数名词(+介词短语)”表示“甲比同一范围的任何一个人/物都……”,含义是“甲最……”。 例如,The Yangtze River is longer than any other river in China. =The Yangtze River is longer than any of the other rivers in China.长江比中国的任何一条其他的河都长。

=The Yangtze River is longer than the other rivers in China.长江比中国的其他所有的河都长。 =The Yangtze River is the longest river in China.长江是中国最长的河流。 注意:The Yangtze River is longer than any river in Japan.长江比日本的任何一条河都长。 “甲+实意动词+副词比较级+than+anyother+单数名词(+介词短语)”表示“甲比同一范围的任何一个人/物都……”,含义是“甲最……”。 例如,Mike gets to school earlier than any other student in his class. = Mike gets to school earlier than any of the other students in his class.迈克比他们班上任何一个其他的同学到校都早。 = Mike gets to school earlier than the other students in his class.迈克比他们班上其他的同学到校都早。 = Mike gets to school earliest in his class.迈克在他们班 到校最早。 注意:Mike gets to school earlier than any student in Tom’s class.迈克比汤姆班上任何一个学生到校都早。(迈克和汤姆不是同一个班) (3)“甲+be+the+形容词比较级+of the two+……”表示“甲是两者中较……的”。

高考英语一般现在时用法总结(完整)

高考英语一般现在时用法总结(完整) 一、单项选择一般现在时 1.I know daydreaming benefits invention, but the fact that it has no solid evidence. A.will be remaining B.remained C.remains D.had remained. 【答案】C 【解析】考查动词时态。句意:我知道白日梦有益于发明,但事实是它没有确凿的证据。根据所给动词是一般现在时和句意可知此处也用一般现在时,故选C. 2.The Small Goose Pagoda in Xi’an, one of the 22 Silk Road relics located in China, _______ back in 707 during the Tang Dynasty. A.dated B.was dated C.dates D.is dating 【答案】C 【解析】 试题分析:考查动词短语和时态。短语date back to追溯到....;从....开始有;该句型没有被动语态,也没有进行时。通常都使用一般现在时表示从现在时间某一事物能够追溯到的时期。故C项正确。 【名师点睛】 当分词做状语的时候,要特别考虑主被动关系以及时间的先后关系。如果构成分词的动词与句子的主语构成主动关系,就使用现在分词做状语;当二者构成被动关系,使用过去分词做状语。如果分词的动作发生在谓语动词之前,就使用分词的完成式。如果分词与句子的主语没有关系,可以使用状语从句或者独立主格结构。 考点:考查动词短语和时态 3.We live in a beautiful cottage with a yard, which ______ 20 feet from side to side. A.measures B.is measured C.measured D.has been measured 【答案】A 【解析】 试题分析:考察非谓语。句意:我们住的地方有一个院子,这个院子从一遍到另一边的距离是20英尺。 考点:考察非谓语。 4.---We’d better leave now. ---No hurry. The train ______ at 10 o’clock. A.has left B.left C.leaves D.would leave 【答案】C

比较级用法

比较级句式 一、the+比较级, the+比较级 此句型表示后者随着前者的变化而变化,意为“越……就越……”,前者相当于一个条件句,因此,要用一般现在时代替一般将来时。如:1)The better I knew him, the more I liked him. 我越了解他就越喜欢他。 2)The more difficult the questions are, the less likely I’ll be able to answer them. 题目越难我越答不出。 二、the+比较级+of the two 表示“两者中较…的那个人或物”时,在比较级前加定冠词the。 1)He is the taller of the two. 他是两人中较高的那个。 2)She was the more promising worker of the two. 她是两人之中更有培养前途的工人。 三、比较级+and+比较级 此句型表示“越来越…”,单音节形容词或副词用“-er+and +-er”,如: 1)Things are getting better and better every day.

情况一天天好起来。 2)It’s becoming more and more difficult to find a job. 找工作越来越困难了。 3)Holiday nights are getting less and less expensive. 假日机票越来越便宜了。 四、not +比较级+ than / no +比较级+ than 比较级前加not,表示前者不如后者,与not as…as相当;比较级前加no是对两者的否定,意为“和……一样不……”,与neither…nor…或“as+相反意义的形容词或副词+as”相当。如: 1)He is not taller than me. 他不如我高。 2)He is no taller than me. 他同我一样不高。(即一样矮) 3)His English is not better than mine. 他的英语不如我的英语好。 4)His English is no better than mine. 他的英语同我的英语一样不好。(即一样差) 5)You are not more careful than he is. 你不如他仔细。 6)You are no more careful than he is.

(完整版)英语比较级的用法

英语比较级的用法 一忌使用双重比较级 即构成比较级时不能既加词尾-er,又在其前加more。如: 他的英语比我的英语好多了。 误:His English is more better than mine. 正:His English is much better than mine. 【注】虽不能说more better, most earliest 之类的,但可用“比较级+and+比较级”这样的形式: It’s getting warmer and warmer. 天气变得越来越暖和。 I’m getting fatter and fatter. 我越来越胖了。 We’re going more and more slowly. 我们越走越慢了。 要想加强比较级的语气,可用much, far, even, still, rather等修饰。如: This is very much cheaper. 这个便宜得多。 This one is even more expensive. 这个更贵些。 The patient is much better now. 病人现在好多了。 二忌比较对象不一致 如果有人问你“一公斤苹果多还是一尺布多”时,你会怎么回答?你肯定认为无法回答。对,无法回答,因为它们“单位”不一样,或者说它们不是同一类型的两个比较对象。在使用英语的比较级时,也要特别注意不要“比”错了对象。如: Her French was no better than mine. 她的法语比我好不了多少。 My dictionary is more useful than yours. 我的词典对你的词典更有用。 All your neighbours are noisier than ours. 你们的所有邻居都比我们的吵闹。

最新英语一般现在时用法总结(完整)

最新英语一般现在时用法总结(完整) 一、单项选择一般现在时 1.We’ll go to play with snow if it ______ tomorrow. A.snow B.snows C.will snow D.snowed 【答案】B 【解析】 【详解】 考查if引导的条件状语从句。句意:如果明天下雪,我们就去玩雪。此处是if引导的条件状语从句,主句是一般将来时态,从句用一般现在时态,且主语是it,故答案为B。 2. you read the instructions closely, you would know what I . A.Had, was B.Should, am C.Had, am D.If, was 【答案】C 【解析】 句意:如果你仔细阅读了说明,你就会知道我现在指的是什么了。根据句意可知条件状语从句与过去的事实相反,在条件状语从句中,若if省略,需将should /had/were提前。主句中“我现在指的是什么”是客观事实,故用am。故选C。 3.Whenever you ______ a present, you’d better think about it from the receiver’s preference. A.bought B.buy C.will buy D.have bought 【答案】B 【解析】 试题分析:句意:每当你买礼物的时候,你最好从接收方的偏好想一想。whenever引导的让步状语从句,采用一般现在时表将来的用法。故选B。 考点:考查动词的时态。 4.The Dragon Boat Festival ________ the beginning of the hottest season of the year. A.is marking B.marks C.will mark D.marked 【答案】B 【解析】 试题分析:考查时态。一般现在时表示经常性习惯性的行为。本句中使用一般现在时端午节标志着一年中最热的季节的开始。故B正确。 考点:考查时态 5.Every time he ______ to visit me, he ______ buy me some books. A.will come; will B.will come; would C.comes; will D.comes; would 【答案】C

比较级的用法

比较级的用法 句型:A+动词+形容词比较级+than + B. 二者相比较,说明“A比B更……一些”时要用一个连词than引导的从句. I am older than you. 注意 than后面接代词时,一般要用主格.但在口语中也可使用宾格. 需注意的比较级用法 1.在形容词比较级前还可以用much, even, still, a little,……来修饰,表示“……的多”,“甚至……”,“更……”,“……一些”. Our city is much more beautiful than yours. 我们的城市比你们的漂亮得多. This is even harder than steel. 这个东西甚至比钢还硬. 2.表示倍数:…times+形容词比较级+than… Our room is twice larger than theirs. 我们的房间比他们的大二倍. The Yangzi River is ten times longer than the river in your city. 长江比你们城市的河长十倍. 3.表示“大三岁”,“高二厘米”时要用《表示数、量的词+比较级》来表示. I'm two years older than you. 我比你大二岁. 4.《比较级+ than any other +单数名词》表示“比其他的任何……都……” (这个句型是用比较级形式表达最高级的意思.) He is better than any other student in the class. 他在班里,比任何一个别的学生都好. (暗指:他是最好的) 5.《比较级+and+比较级》译为“越来越……” China is more and more beautiful. 中国变得越来越美丽 注意 多音节形容词用此句型时,要用more and more +形容词原级;而不能用more beautiful and more beautiful. 6.《the+比较级…,the+比较级…》译为“越……就越……” The busier he is, the happier he feels. 他越忙就越高兴. The higher the ground(is),the thinner air becomes. 越高,空气就越稀薄. 7.《the+比较级+ of the two》译为“两个中比较……的”. This watch is the cheaper of the two. 这支手表是两个中比较便宜的. He is the better of the two. 他是这两个人中比较好的. (Who)is+比较级… 比较A和B,问“哪一个较……”时用《Which is+比较级,A or B》句型.如果是人与人相比时,用Who代替Which. Which one is more popular, the radio or the movie 收音机和电影,哪一个更普及 一般来说,表示“等于”时用原级,它的结构是 as+原级+as.如:I'm as tall as my twin brother.我和我的双胞胎哥哥一样高.

一般现在时总结归纳

一般现在时语法总结 一般现在时:表示经常性的事情,经常性的动作或一般性事实。 时间状语:often 经常,usually 通常,always 总是,every 每个,sometimes 有时,at……在点钟 只有在第三人称单数用动词的三单变化,其他用动词的原型。 1.三单变化: (1)多数在动词后面加- s ask->asks work->works get->gets stay->stays (2)以字母s x ch sh或o结尾的动词,在词尾直接加- es Watch -> watches wish -> wishes fix -> fixes do -> does go -> goes pass -> passes (3)以辅音字母加y结尾的动词,要先变y为i再加- es Try -> tries study -> studies cry -> cries fly -> flies 2.不规则变化 be-> am is are have->has 一般现在时的用法: 表示经常性或习惯性的状态;表示客观事实或普遍真理;在时间、条件等状语从句中,用现在时表示将来;在某些以here,there开头的句子中,用一般现在时表示正在发生的动作1>经常性或习惯的动作,常与表示频率的时间状语连用。 时间状语:every、sometimes、at……,on Sunday I leave home for school at 7 every morning. 2>客观真理,客观存在,科学事实 The earth moves around the sun. Shanghai lies in the east of china. 3>表示格言或警局中 Pride goes before fall. (骄者必败) 注意:此用法如果出现在宾语从句中,即使主句是过去时,从句谓语也要用一般现在时。例:columbus proved that earth is round. 4>现在时刻的状态、能力、性格、个性 I dont want so much.

Fortran常用函数

1、RANDOM_NUMBER Syntax ['sint?ks] n. 语法 CALL RANDOM_NUMBER (harvest结果) Intrinsic Subroutine(固有子程序):Returns a pseudorandom number greater than or equal to zero and less than one from the uniform distribution. 返回大于或等于0且小于1,服从均匀分布的随机数 2、RNNOA/ DRNNOA (Single/Double precision) Generate pseudorandom numbers from a standard normal distribution using an acceptance/rejection method. 产生服从标准正态分布的随机数 Usage(用法) CALL RNNOA (NR, R) Arguments(参数) NR— Number of random numbers to generate. (Input) 要产生随机数的个数 R— Vector of length NR containing the random standard normal deviates. (Output) 输出长度为NR,随机正态分布的向量 Comments(注解) The routine RNSET can be used to initialize the seed of the random number generator. The routine RNOPT can be used to select the form of the generator. 程序RNSET可以用来初始化随机数发生器的种子 Example In this example, RNNOA is used to generate five pseudorandom deviates from a standard normal distribution. INTEGER ISEED, NOUT, NR REAL R(5) EXTERNAL RNNOA, RNSET, UMACH C CALL UMACH (2, NOUT) NR = 5 ISEED = 123457 CALL RNSET (ISEED) CALL RNNOA (NR, R) WRITE (NOUT,99999) R 99999 FORMAT (' Standard normal random deviates: ', 5F8.4) END Output Standard normal random deviates: 2.0516 1.0833 0.0826 1.2777 -1.2260

FORTRAN知识点总结

F O R T R A N 第2章FORTRAN90基础知识: 程序单元的概念: fortran90程序是一种分块形式的程序,整个程序由若干程序单元块组成。每个程序只有一个主程序单元。各单元体的程序体形式上相同。 程序单元可以是主程序、子程序(外部过程或内部过程)、模块MODULE (供其他程序单元引用即把该程序单元内的全部语句复制到程序单元中)或块数据程序单元BLOCK 。 语言元素:指在程序设计中用到的基本成分,如字符集、常量、变量、记号(标号、关键字、名字、常数、运算符和定界符)以及其他的基本结构等。 字符集:英文字母、阿拉伯数字、下划线、21个特殊字符($和?没有规定用法)。 数据结构: 整型INTEGER (34-2下划线后面是种别参数),n 位字长的计算机的数据表示范围一般为12~211-+---n n ,种别参数由内在询问函数KIND 送回,种别值提供的最小范围由内在函数SELECTED-INT-KIND 送回,表示十进制幂的范围由内在函数RANGE 送回; 实型REAL ,小数形式和指数形式;复型COMPLEX (种别类

型参数值取实部与虚部中较大者); 字符型CHARACTER,由一对单撇号或双撇号之间的字符序列组成; 逻辑型LOGICAL。 派生数据类型TYPE; 数组INTEGER,DIMENSION(1,50)::A,可直接对数组元素进行运算如3*A,SQRT(A); 字符子串,在字符串CHARACTER(LEN=80)::ROW中,ROW(1:3)就表示字符串ROW中第1到第3个元素组成的子串。 变量名的命名规则:不能超过31个字符;组成成分是字母、数字、下划线;第一个字符必须是字母。 第3章基本语句: 类型说明语句:类型说明(种别说明),属性说明::变量名表 尽量避免把两个实数作相等或不相等的比较。淘汰隐式说明IMPLICIT NONE 种别说明:种别参数即对可移植数据精度和范围进行选择的机制 KIND(X) 返回变元X的种别参数值 SELECTED-REAL-KIND(n,m) 产生一个种别值,它表示某一精度和范围。N指十进制有效位数,m指明值范围内以10为底的幂次。

比较级用法大全

其句型有: 1.... times+形容词(副词)比较级+than... This hall is five times bigger than our classroom. 这个大厅比我们的教室大五倍。(是我们教室的六倍大) The car runs twice faster than that truck. 这辆轿车的速度比那辆卡车快两倍(是那辆卡的三倍快)2.... times+as+形容词(或much)或副词原级+as... The big box is four times as heavy as the small one. 大箱子是小箱子的四倍重。 Asia is four times as large as Europe. 亚洲的面积是欧洲的四倍。 Ten is twice as much as five. 十是五的两倍。 The plane flew ten times as high as the kite. 那架飞机飞行高度是那个风筝的十倍。(高出九倍)3.... times+the+名词(size, height, weight, length, width)+of Your playground is 900 metres wide, three times the size of ours.你们操场有900米宽是我们的三倍。This street is four times the length of that one. 这条大街是那条街的四倍长。 This big tree is four times the height of that small one. 这棵大树的高度是那棵小树的四倍。(比那棵小树高三倍) 一.填空: 1.这本书和那本书一样有趣。This book is ___________ __________ ____________ that one. 2.今天比昨天冷的多。It is __________ ______-____ today___________ it was yesterday. 3.他比我大两岁。He is ________ __________ _________ than I. 4.这个故事不如那个恐怖。This story is ______-_ ________ ________ _________ that one. 5.她的身体状况一天天好起来。He is getting _________ __________ __________ every day. 6.他对英语越来越感兴趣。He is becoming _________ _____ _________ ________ ____English. 7.他吃的越多,人越胖。The more he eats, the ___________ he gets. 8.你的问题是两个中比较难的那个。Your question is _________ _________ __________of two. 这1.This rope is ________ ________ ________ _________ that one. 2.This rope is ________ _________ _________ _______ that one. 2.数学不如中文有趣 Maths is _______ ________than Chinese 3.那个盒子是这个的四倍 That box is _______ ________as big as this one 3. 这条街道比那条短四倍。 This street ________ ________ _________ ________ ________that one. 二.改错: ( )1.He is more cleverer than I 改:___________________________ ( )2.China is larger than any country in Asia. 改:________________ ( )3.Our country is more beautiful and more beautiful. 改:________________ ( )4.This room is twice big than that one. 改:____________________ ( )5.He is as younger as me 改:_______________________ ( )6.This cake is less more delicious than that one. 改:_____________

一般现在时知识点归纳总结

一般现在时知识点归纳总结 定义: 一般现在时表示经常或习惯性的动作或一般性事实,也可表示现在的状态或主语具备的性格和能力。 用法: (1)表示经常性或习惯性的动作。通常与副词every day(每天),always(总 是),usually(通常),often(经常),sometimes(有时),等时间状语连用。 I get up at six every day.我每天六点起床。 She usually plays sports. 她每天都做运动。 (2)表示科学原理,自然现象,客观事实或格言谚语等等。 The sun rises in the east.太阳每天从东方升起。 Constant dropping wears the stone. 滴水穿石 There are 50 students in my class. 我们班有50个学生。 (3).在某些以here,there开头的句子中,用一般现在时表示正在发生的动 作。如:Here comes the bus.公交车来了。 (4)在下列情况下用一般现在时表示将来:

①. 表示按计划或时间表将要发生的动作,通常有表示将来的时间状语。如: The plane takes off at 11:30 and arrives in Shanghai at l:20. 飞机十一点半起飞,一点二十分抵达上海。 注:只限于少数动词能这样用,如begin, start, end, finish, stop, go, come, leave, sail, arrive, return, close, open 等。 ②. 当主句为一般将来时态时,在if,as soon as,until,when等引导的状语 从句中用一般现在时代替一般将来时。如: If it doesn’t rain this afternoon,we’ll have a football match. As soon as he got inside, the dog shook himself. You can't leave until you find another to replace you. 一般现在时句式变换: 肯定句:表示肯定的句子 否定句:表示否定的句子 一般疑问句:一般疑问句是疑问句的一种。它是一般只用yes(是)或no (否)来回答的句子。朗读一般疑问句时用升调,而一般疑问句的简略答语用降调。

fortran心得

Read 的规则: 按行读取,每次读一行,读完后光标自动跳到下一行的开头,空格和逗号代表结束(所以空格和逗号也是读取的一部分的话,需要使用“输入输出格式”) 如果想要将一行数据读入数组,代码为: Read(10,*) s(:,:,:) 不用规定输入输出格式,因为会根据s(:,:,:)确定需要读入的数字的个数,然后fortran会按部就班的读取,甚至文件中当前这一行的数字个数不足以填满s(:,:,:)的时候,read会自动跳到下一行继续搜索数字,直到填满s(:,:,:)为止。 但是需要注意给数组赋值的顺序:read会把它搜索到的第一个数字给s(1,1,1),第二个给s(2,1,1),第三个给s(3,1,1)… 程序9 1: 将read(unit=field,fmt="(A79)",iostat=status)buffer 中的A79改为A2,结果只输出每行的前两个字符,说明read是按整行整行读取的。 中间空了几行之后,空行之后的内容还是能被读取和输出,这说明,空行和空白是不一样的:空行也算是一种文本内容,因此不会终止读取,而空白意味着结束。 !读取文件 program main implicit none character(len=79)::filename="number.txt",buffer integer,parameter::field=10 integer::status=0 logical alive inquire(file=filename,exist=alive) if(alive)then open(unit=field,file=filename) do while(.true.) read(unit=field,fmt="(A79)",iostat=status)buffer if(status/=0)exit write(*,"(A79)")buffer end do else write(*,*)filename,"does't exist." end if pause stop end program main ============================================= 附number.txt =============================== 1234555666

相关文档
最新文档