搜档网
当前位置:搜档网 › fortran心得

fortran心得

fortran心得
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

879789789789789

二)Fixed Format(固定格式)

扩展名:.F 或 .FOR

1标号区:第l-5列

可以写l至5位整数。也可以没有标号。标号区中的空格不起作用。如lOO与100 或1 0 0作用相同。标号应是无符号整数(无正负号或小数点)。标号大小顺序没有任何要求。假如第二行的标号为1000,第三行的标号可以是10,也可以是99999。

标号区内不得出现标号以外的内容,但注释行例外。注释行的内容可以写在标号区内,一行中第一列为C或*的,该行即被认为注释行,编译时对该行内容不作翻译,对程序运行不产生任何影响。如果在第一列上出现的不是数字、空格或C和*的字符,编译时按出错处理。

2续行区:第6列

如果在一行的第6列上写一个非空格和非零的字符,则该行作为其上一行的续行。注意在某些系统中,这个字符可以不限于上面所列的,如 @ } ] ~ 等字符均可使用。F77允许一个语句有19个续行(即一个语句最多可以写成20行)。有的程序中第6列上用“l”,“2”,…表示该行是第1个或第2个续行,但用数字字符容易与第7列的数字形成连续的数字串而引起错觉,故最好使用固定的特殊字符。

3语句区:第7-72列

不要求一定从第7列开始写语句,可以从第7列以后(72列以前)的任何一列开始写,但一行只能写一个语句。如果写满了72列,一旦在终端上修改程序时在该行又插入了一些字符,就会使本行最后几个字符超出语句区而引起意料不到的错误。特别注意到语句最后的空格将可能溢出72列,在某些计算机系统上将导致难以查出的错误。应注意,引号内的字符串中所包括的空格是有效的,不能忽略。

4注释区:第73-80列

在卡片输入法时代,程序员一般利用此8列为程序行编序号以便查找。注释区只对程序员提供辨别信息,不是语句的一部分,在编译时不对72-80列作处理。

程序 9 2 将成绩输入date.txt

module typedef

type student

integer Chinese,English,Math

end type

end module

program main

use typedef

implicit none

integer::students

type(student),allocatable::s(:)

integer,parameter::fileid=10

character(len=80)::filename="date.txt"

integer::i

write(*,*)"how many students?"

read(*,*)students

allocate(s(students),stat=i)

if(i/=0)then

write(*,*)"allocate buffer fail"

stop!此处要学习跳出程序。

end if

open(fileid,file=filename)

do i=1,students

write(*,"('input the',I2,'th student''s scores')")i

read(*,*)s(i)%Chinese,s(i)%English,s(i)%Math !Sb了,其实可以直接写成s(i)

write(fileid,"('Student Number:',I2,/,'Chinese Score:',I3,'English Score:',I3,'Math Score:',I3)")i,s(i)!s(i)的三项可以分别设置各自格式,另外注意括号里封装字符用单引号

end do

close(fileid)

pause

stop

end program main

程序9 3 读取date.txt并且输出

module typedef

type student

integer Chinese,English,Math

end type

end module

program main

use typedef

implicit none

integer,parameter::fileid=10

integer::students

integer::n

type(student)::s

character(len=10)::filename="date.txt"

logical::alive

integer::stat=0

inquire(file=filename,exist=alive)

if(.not.alive)then

write(*,*)"file doesn'nt exist"

stop

end if

open(unit=fileid,file=filename)

do while(stat==0)

read(fileid,"(16XI2,/,14XI3,14XI3,11XI3)",iostat=stat)n,s !不知道为什么不能写作unit=fileid write(*,"('序号:',I2,'语文:',I3,'英语:',I3,'数学:',I3,I3)")n,s,stat

end do

pause

stop

end program main

程序9 5,跳跃读取:还是不太懂REC的用法

program main

implicit none

character(len=80)::filename="list.txt"

integer::fileid

logical::alive

integer::stat

integer::player

real::score

inquire(file=filename,exist=alive)

if(.not.alive)then

write(*,*)"file doesn't exist"

stop!体会stop的用法,用于在程序中间终止程序。end if

open(unit=fileid,file=filename,access="direct",&

form="formatted",recl=7,status="old")

do while(.true.)

write(*,*)"查询第几棒?"

read(*,*)player

read(fileid,"(F5.2)",rec=player,iostat=stat)score if(stat/=0)exit

write(*,"(F5.2)")score

end do

pause

stop

end program main

程序 9 6 内部变量的应用:本程序中invalid很好!否则我只能通过监视内层那个do的循环的次数来判断strng中的所有字母是不是检验完毕,本程序中的invalid这个变量显然更简单巧妙,先设置.true.进入外循环,然后.false.假设输入的都是正确的,可以跳出,然后用if“考验”这个假设。。。。。。。很巧!另外,本计算机能接受的最大整数是4byte、32bits,即2147483647。默认的也是长整型,即kind=4。

program main

implicit none

integer::i

integer,external::GetInteger

i=GetInteger()

write(*,*)i

pause

stop

end program main

integer function GetInteger()

implicit none

character(len=80)::string

integer::i,code

logical::invalid=.true.

do while(invalid)

write(*,*)"请输入整数"

read(*,"(A80)")string

invalid=.false.

do i=1,len_trim(string)

code=ichar(string(i:i)) !用code代替,增加可读性 2.string(i:i)不是string(i) if(codeichar("9"))then

write(*,*)"invalid input"

invalid=.true. !invalid这个逻辑变量用得非常巧妙,认真体会。。。而不是通过计数来终止exit

end if

end do

end do

read(string,*)GetInteger !GetInteger=string是不行的,会提示错误“the binary(二进制)expression operation is invalid for the data types of the two operands”要用read

end function GetInteger

程序9 7

module typedef

type student

integer Chinese,English,Math,Natural,Social

end type

end module

program main

use typedef !注意位置要在implicit none之前

implicit none

character,parameter::filename="grades.txt"

integer,parameter::fileid=10,students=20

character(len=80)::tempstr !目的是让read走过第一行

type(student)::s(students)

type(student)::mean=student(0,0,0,0,0) !用于计算各科平均分

integer::total(20),zongfen=0 !计算每个人的总分和所有人的所有成绩的总分

integer stat

integer::i,n

open(fileid,file="grades.txt",iostat=stat) !为什么file=filename就不成功!!!!

if(stat/=0)then

write(*,*)"file doesn't exist"

stop

end if

read(fileid,*)tempstr

do i=1,students

read(fileid,"(6I5)")n,s(i)%Chinese,s(i)%English,s(i)%Math,s(i)%Natural,s(i)%Social !mean=mean+s(i) !试验一下能不能合写,结果不能

mean%Chinese=mean%Chinese+s(i)%Chinese

mean%English=mean%English+s(i)%English

mean%Math=mean%Math+s(i)%Math

mean%Natural=mean%Natural+s(i)%Natural

mean%Social=mean%Social+s(i)%Social

total(i)=s(i)%Chinese+s(i)%English+s(i)%Math+s(i)%Natural+s(i)%Social

zongfen=zongfen+total(i)

end do

write(*,"('座号',1X,'语文',1X,'英语',1X,'数学',1X,'自然',1X,'社会',1X,'总分')")

do i=1,students

write(*,"(7I5)")i,s(i),total(i)

end do

write(*,"('平均分',6F6.1)")real(mean%Chinese)/20.0,real(mean%English)/20.0,&

real(mean%Math)/20.0,real(mean%Natural)/20.0,&

real(mean%Social)/20.0,real(zongfen)/20.0 !real(整形,实型,复型)

pause

stop

end program main

=======================================================================

程序9 7 修改版:关于read的使用,以前的理解是正确的,即read的读写位置会自动向下移动一行(因为ADVANCE的默认值是“YES”)。那么程序中read(fileid,"(6I5)")n,s(i)会导致双行读取是为什么呢?因为,每次读取共要读取7个量,而grade.txt中每行只有6个,所以对于第七个量,read很智能的自动从下一行读取,然后读取结束,读取位置跳到第三行开头。所以下一次读取的时候,是从第三行读取,这样就导致了一次读取要读两行。其实"(6I5)"直接用*代替就行,其效果是一样的。改正的方法是在grade.txt的每一行后随便加一个数字,充作第七个数。或者只读六个数。

====================================================

module typedef

type student

integer Chinese,English,Math,Natural,Social

integer Total !将每个学生的总分项加入type中,逻辑更清晰

end type

end module

program main

use typedef !注意位置要在implicit none之前

implicit none

character(len=80)::filename="grades.txt" !别弄成character,parameter(len=80)

integer,parameter::fileid=10

integer,parameter::students=20 !分开写,“道不同不相为谋”。而且首先声明的应该是常量,逻辑清晰

type(student)::s(students)

type(student)::mean=student(0,0,0,0,0,0) !用于计算平均分

character(len=80)::tempstr !目的是让read走过第一行

integer stat,i,n !用于控制过程的“过程变量”集合在一起,写在最后

open(fileid,file=filename,iostat=stat)

if(stat/=0)then

write(*,*)"file doesn't exist"

stop

end if

read(fileid,*)tempstr

do i=1,students

read(fileid,*)n,s(i)%Chinese,s(i)%English,s(i)%Math,s(i)%Natural,s(i)%Social!read到底是怎

么读的?为什么刚刚写成read(fileid,"(6I5)")n,s(i)的时候会两行两行的读取?

s(i)%Total=s(i)%Chinese+s(i)%English+s(i)%Math+s(i)%Natural+s(i)%Social !mean=mean+s(i) !试验一下能不能合写,结果不能

mean%Chinese=mean%Chinese+s(i)%Chinese

mean%English=mean%English+s(i)%English

mean%Math=mean%Math+s(i)%Math

mean%Natural=mean%Natural+s(i)%Natural

mean%Social=mean%Social+s(i)%Social

mean%Total=mean%Total+s(i)%Total

end do

write(*,"(7A7)")"座号","语文","英语","数学","自然","社会","总分"!这说明格式不只是赋给abcd之类的变量的,像"语文"这样的量也可以享受“格式”

do i=1,students

write(*,"(7I7)")i,s(i)

end do

write(*,"(A7,6F7.1)")"平均分",real(mean%Chinese)/20.0,real(mean%English)/20.0,&

real(mean%Math)/20.0,real(mean%Natural)/20.0,&

real(mean%Social)/20.0,real(mean%Total)/20.0 !real(整形,实型,复型)

pause

stop

end program main

!现在有一个常出现的问题是:在定义fileid和filename这两个变量之后,常出现“断点”错误,跳来跳去program main

implicit none

integer,parameter::fileid=10

integer,parameter::buffer_size=256*256

character(len=80)::filename="lena.raw" !别忘了要定义len=80,另外parameter好像不能定义长度character::cbuffer(buffer_size)

integer::ibuffer(buffer_size)

integer::i,j=1,stat

open(fileid,file=filename,recl=buffer_size/4,access="direct",status="old",iostat=stat)

if(stat/=0)then

write(*,*)"file doesn't exite"

stop!别忘了stop啊,怎么这么不长记性呢!!!不是人家fileid和filename的原因,是这里少了stop 啊!!

end if

!do i=1,buffer_size 傻叉了吗,还do呢,全部读取就行了呗

read(fileid,rec=1)cbuffer!只有文本文件顺序读取是,才会“按行操作”

close(fileid)

do i=1,buffer_size

if(ichar(cbuffer(i))>=127)then

j=j+1

end if

ibuffer(i)=ichar(cbuffer(i))

end do

write(*,*)j !彭国伦是错的, j为20547,说明ichar的返回值范围为0~255。

do i=1,buffer_size

cbuffer(i)=char(255-ibuffer(i))

end do

open(fileid,file=filename,recl=buffer_size/4,access="direct",status="replace",iostat=stat) write(fileid,rec=1)cbuffer

close(fileid)

pause

stop

end program main

程序9 9 :最初的问题出现在我自己写的txt文件上:没有行结束标志,所以整个文件虽然非常大但只有一

program main

implicit none

character(len=79)::filename="9 9.txt" integer,parameter::fileid=10

integer::stat

character(len=79) temp

integer::count=0

open(unit=fileid,file=filename,iostat=stat) if(stat/=0)then

write(*,*)"file doesn't exist"

stop

end if

do while(.true.)

read(fileid,"(A79)",iostat=stat)temp

if(stat/=0)exit

write(*,*)temp

count=count+1 !判断是否满屏的程序

if(count==24)then

count=0

pause

end if

end do

程序9 10

!字符串和数组还是有区别的:同样在部分赋值的情况下,输出字符串没有问题,输出数组可能“未赋值部分”也会输出,为随机数。

program main

implicit none

character(len=80)::filename="encode1.txt"

integer::fileid=10

character(len=79) temp

integer i

integer stat

open(fileid,file=filename,iostat=stat)

if(stat/=0)then

write(*,*)"filename doesn't exist"

stop

end if

do while(.true.)

read(fileid,"(A79)",iostat=stat)temp

if(stat/=0)exit

do i=1,len_trim(temp)

temp(i:i)=char(ichar(temp(i:i))-3)

end do

write(*,*)temp

end do

pause

stop

end program main

9 11

module typedef

type student

integer(kind=4) Chinese,English,Math,Natural,Social

integer Total

end type

end module

program main

use typedef

implicit none

character(len=20)::filename="grades.bin"

integer,parameter::fileid=10

type(student)::students(20)

type(student)::mean

integer stat

integer i

open(fileid,file=filename,form="unformatted",status="old",access="direct",recl=5,iostat=stat ) !recl=1的意思是每个单元四个字节,因为fortran里单位为byte

if(stat/=0)then

write(*,*)"filename doesn't exist"

stop

end if

do i=1,20

read(fileid,rec=i,iostat=stat)students(i)%Chinese,students(i)%English,students(i)%Math,stude nts(i)%Natural,students(i)%Social

if(stat/=0)exit

students(i)%Total=students(i)%Chinese+students(i)%English+students(i)%Math+students(i)%Natur al+students(i)%Social

mean%Chinese=mean%Chinese+students(i)%Chinese

mean%English=mean%English+students(i)%English

mean%Math=mean%Math+students(i)%Math

mean%Natural=mean%Natural+students(i)%Natural

mean%Social=mean%Social+students(i)%Social

mean%Total=mean%Total+students(i)%Total

end do

write(*,"(7A7)")"序号","语文","数学","英语","自然","社会"

do i=1,20

write(*,"(7I7)")i,students(i)

end do

write(*,"(A7,6F7.1)")"平均分",real(mean%Chinese)/20.0,real(mean%Math)/20.0,&

real(mean%Chinese)/20.0,real(mean%Chinese)/20.0,&

real(mean%Chinese)/20.0,real(mean%Chinese)/20.0

pause

stop

end program main

程序9 12

program main

implicit none

character(len=20)::filename="encode2.txt"

integer,parameter::fileid=10

integer stat

character(len=79)::temp

integer::i,j

open(fileid,file=filename,status="old",iostat=stat)

if(stat/=0)then

write(*,*)"filename doesn't exist"

stop

end if

do while(.true.)

read(fileid,"(A79)",iostat=stat)temp

if(stat/=0)exit

j=0

do i=1,len_trim(temp)

if(ichar(temp(i:i))/=32)then

j=j+1 !加一个j做计数器,但其实encode2.txt中将空格也处理了,所以这里是错误的,好在encode2.txt中未出现空格,所以这个错误被掩盖了。但是要借鉴这个计数器的思想。 temp(i:i)=char(ichar(temp(i:i))-mod(j-1,3)-1) ! mod(j-1,3)-1 可以按照排列数字end if

end do

write(*,*)temp

end do

pause

stop

end program

FORTRAN 90 程序编程规范

FORTRAN 90 程序编程规范 Fortran 90 编程规范,使程序代码高度组织化,更加易读、易懂、易于维护,程序更加高效。使编出的程序更易懂、易于维护。 1 语言选择 数值预报创新系统软件开发应避免使用Fortran77 的某些过时特征以Fortran 90不一致的特征。选择Fortran 90 作为开发语言,并采用Fortran 90 的新功能,如动态内存的分配(dynamic memory allocation)、递归(recursion ), 模块(modules)、POINTER 、长变量名、自由格式等。 Fortran 77其中某些只是一些冗余的功能,这些功能已经过时,另外,还有一些在Fortran90 中被证明是不好的用法,建议不要使用。 2 Fortran 90 的新特性 2.1.1 建议使用的Fortran 90 新特性 建议使用Fortran 90 提供的模块(module ),并用Use ONLY 指定module 中哪些变量或派生类型定义可用于调用程序。 尽量使用数组下标三元组,这样可优化并减少所需的代码行数。为提高可读性,要在括号内表明数组的维数,例如: 1dArrayA(:) = 1dArrayB(:) + 1dArrayC(:) 2dArray(: , :) = scalar * Another2dArray(: , :) 当访问数组的子集时,例如在有限差分等式中,可以通过使用下标三元组实现。例如:2dArray(: , 2:len2) = scalar *( & Another2dArray(:, 1:len2 -1) & - Another2dArray(:, 2:len2) & ) 对程序单元(program units )命名,并使用End program ,End subroutine ,End interface ,End module 等结构再次指定“program unit ”的名称。 在逻辑表达式中使用>、 >=、 ==、 <、 <=、 /=,它们分别代 替.gt.、.ge.、.eq.、.lt.、.le.、.ne. 。新的表示方法更接近标准的数学符号 在变量定义中始终使用“::”;始终用“DIMENSION ”定义数组形状;始终用(len=)的语法格式声明字符变量的长度。

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

初中英语常见时态用法小结 一般现在时的用法 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语句

fortran程序案例题汇编(14道)

1.Fibonacci数列定义如下: F1=1 F2=1 F n=F n-1+F n-2 (n>2) 求Fibonacci数列的前30项。 integer f(30),i f(1)=1 f(2)=2 do i=3,30 f(i)=f(i-1)+f(i-2) enddo print*,f end 2.输入10个学生的总分,求每个学生的名次integer s(10),a(10),i,j do i=1,10 read*,s(i) enddo do i=1,10 a(i)=1 do j=1,10 if(s(i)

3.给定一组数,按照从小到大的顺序输出。integer a(10) integer p do i=1,10 read *,a(i) enddo do j=1,9 p=j do i=j+1,10 if (a(i)

4.输入若干名学生的学号和三门课程(语数英)的成绩,要求从键盘输入一个学生的学号,能打印出该学生的三门功课成绩和总分。 character*6,dimension(:),allocatable::xue integer,dimension(:,:),allocatable::g integer,dimension(:),allocatable::zong integer i,j,n character*6,xh print *,"请输入学生的个数" read *,n allocate(xue(n)) allocate(g(n,3)) allocate(zong(n)) do i=1,n read *,xue(i),(g(i,j),j=1,3) enddo do i=1,n zong(i)=0 do j=1,3 zong(i)=zong(i)+g(i,j) enddo enddo print *,"请输入你要打印的学生的学号" read *,xh do i=1,n if(xue(i)==xh)then print *,(g(i,j),j=1,3),zong(i) exit endif enddo end

codeblocksideforfortranwindows上的完整使用心得

CodeBlocks IDE for Fortran windows上的完整使用心得 Code::Blocks IDE for Fortran windows上的完整使用心得作者: 锐利的碎片(站内联系TA) 发布: 2011-12-13 其实这个ide我以前有发过,不过最近还是很多人问windows上的fortran ide。emacs和vim是很好了,不过怕麻烦的人也还很多。于是再开帖介绍一下这个ide以及在windows下的使用。顺便为最近某事情攒下人品。1 介绍:Code::Blocks IDE for Fortran 是基于Code::Blocks添加fortran支持得到的一个分支版本。不过原本CB就对gfortran 支持很好,只是需要一些配置。而修改版加强了对fortran 的支持并基本完整的包含了fortran03和08语法的高亮和提示(这个看各人习惯了,我觉得还不是很烦就是了)。对c 和fortran的混合编程也有很好的支持。2 安装使用首先安装mingw,在https://www.sodocs.net/doc/1016062988.html,/projects/mingw/files/下载网络安装程序后安装,安装时选择所需的编译器,推荐同时安装msys,最简单的就是全装。然后安装ide,cbf可以从http://darmar.vgtu.lt/index.php这里下载,下载得到的是一个压缩文件,解压安装后执行主程序即可,默认程序配置在系统用户目录下,可以使用portable脚本在程序目录下保存配置。安装后运行程序,会提示选择默认编译器,这个是全局的默认编译器,如果程序探测到支持的编译器会显示

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

高考英语一般现在时用法总结(完整) 一、单项选择一般现在时 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

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.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

fortran程序实例

1)实例3—求多个半径下的圆周长 ! z3.f90 --Fortran95 ! FUNCTIONS: ! z3 - Entry point of console application. !************************************************************************* ! PROGRAM: z3 ! PURPOSE: Entry point for the console application. !************************************************************************ program z3 ! 求多个半径下的圆周长 ! 主程序 ! PROGRAM Z3 PRINT *, 'R=',1.2,'C=',C(1.2) PRINT *, 'R=',3.4,'C=',C(3.4) PRINT *, 'R=',15.6,'C=',C(15.6) PRINT *, 'R=',567.3,'C=',C(567.3) END program z3 !子程序 FUNCTION C(R) PI=3.1415926 C=2*PI*R RETURN ! Body of z3 end

2)实例4—键盘与显示器输入/输出 a)Fortran 基本操作 b)程序指令 ! ZXZ_I_O.f90 ! FUNCTIONS: ! ZXZ_I_O - Entry point of console application. ! PROGRAM: ZXZ_I_O ! PURPOSE: Entry point for the console application. !***************输入、输出样式种种************************** program ZXZ_I_O implicit none !变量声明的位置 INTEGER(2) i; INTEGER(4) j; INTEGER(4) m; REAL n INTEGER A,B ! Variables PRINT*,'输入整数A'; READ*, A PRINT*,'输入整数B'; READ*, B B=A+B PRINT*,'B=A+B=',B WRITE(*,*) 'A*B=',A*B PRINT* ,'以上为计算机的计算结果,注意B的值'

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

一般现在时总结归纳

一般现在时语法总结 一般现在时:表示经常性的事情,经常性的动作或一般性事实。 时间状语: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中批量处理文件的方法总结

Fortran中批量处理文件的方法总结 —循环读取目录下的所有符合条件的文件 一、简单的介绍 在一年之前,我写过一个程序,主要是对Micaps资料进行批量处理,将逐日资料处理为旬、月的数据,在那个程序中,始终有一个问题困扰我,就是如何自动生成该读取的下一个文件名,这使我真正开始关注fortran中的批处理,时隔一年,决定写下这些文字,将我用到的一些fortran批处理的方法和大家共享,交流。 对于那些只要会用程序,不求其中原理的朋友,请马上跳过这些文字,直接去下载附件吧!程序里有使用说明,但是,如果你不懂原理,估计现成的程序你使用起来也会碰壁哦! 这里所说的批处理是指对某一个目录下的指定后缀的文件的批量读取和处理。 我总结的批处理方法大概可以用下面这个示意图来说明: | | |将文件目录写入一个文本文件,供fortran循环读取 |————手动输入文件名 |————运行程序之前命令行工具导出文件名 |————程序运行后,未开始计算之前,生成文件名 | ————调用CMD命令生成 | ————GETFILEINFOQQ方法生成 | ————调用WIN32API生成 | |在程序运行时动态生成文件名 | | 对于第一种方法,我将主要介绍如何将目录写入文件,然后举出一个小的示例来验证。第二种方法主要是说明其思路。 二、方法的介绍 1、将文件目录写入一个文本文件,供fortran循环读取

1.1、手动输入文件名 这是最基本的方法啦,如果文件个数不多,而且文件名中包含了空格等特殊字符的话,建议使用这种方法,在这里就不多说啦,至于在fortran中的处理,等几个小方法介绍完之后会有一个例子来说明。 1.2、运行程序之前命令行工具导出文件名 这是一个既高效又保险的方法,主要思路就是通过强大的CMD命令列出目录下的文件到一个指定的文件中,然后由fortran去循环读取该文件中的文件名信息,从而批量处理。 a、从运行工具打开你的CMD窗口; b、转到要处理的当前目录(可省略):CD /d 路径,如: CD /d e:\test 这样可以快速到达e:\test目录 c、使用DIR命令列出文件目录信息到指定的文件,通常使用的 Dir *.*>新文件名这个命令在这里已经不能满足要求,因为会列出一堆对于我们处理而言无用的信息,现在要使用的命令是: DIR /b filter>newfile 注意,其中的filter为文件筛选,必须自己修改为所需的,比如你可以把它改成*.txt,这样,就会列出当前目录下的所有txt结尾的文件了。 Newfile就是你需要存放文件名的那个文件,比如可以是 dir.txt,这样就成了 dir /b*.txt>dir.txt,就会把当前目录下的所有文件都列出到dir.txt文件中,当然,由于dir.txt也在当前目录,所以也会被算进去,这在处理的时候是需要注意的,下面几种方法中同样考虑了这个问题。你可以选择手动删掉,或者把dir.txt这个文件存到其他地方去,或者,不要和你需要的文件具有相同的后缀也行,比如:dir /b *.txt>e:\dir.txt (假设当前目录是e:\test) 如果省略了第二步中的转到当前目录的话,就需要在dir命令后输入完整的路径了,而且新生成的文件也要选择有权限建立新文件的地方存放,比如你在c:\users目录下输入:dir /b e:\test\*.txt>e:\dir.txt,这个命令和上面先转到e:\test目录下的效果是一样的。 现在你是不是比较好奇,/b 是干嘛的,其实就是只列出文件名,不要其他的附件信息,比如创建时间,文件大小等等这些对于我们批处理无关的信息。 如果你想包含某个目录下的子目录,那么,就可以这样写: Dir /b/s filter>newfile /s就表示包含子目录,但是,这样会有一个问题,那就是,批处理的时候必须获得正确的路径才能操作,这样得到的子目录里面的文件不会有任何标志说

几个fortran程序

计算圆周率 REAL R,R1,R2,PI ISEED=RTC() N0=0 N=300000 DO I=1,N R1=RAN(ISEED) R2=RAN(ISEED) R=SQRT(R1*R1+R2*R2) IF(R<1.0)N0=N0+1 END DO PI=4.0*N0/N WRITE(*,*)PI END 一)蒙特卡洛计算生日问题 假设有N个人在一起,各自的生日为365天之一,根据概率理论,与很多人的直觉相反,只需23个人便有大于50%的几率人群中至少有2个人生日相同。 INTEGER M(1:10000), NUMBER1(0:364), NUMBER2 REAL X,Y ISEED=RTC() DO J=1, 10000 NUMBER1=0 X=RAN(ISEED) NUMBER1(0)=INT(365*X+1) JJJ=1 DO I=1,364 Y=RAN(ISEED) NUMBER2=INT(365*Y+1) ETR=COUNT(NUMBER1.EQ.NUMBER2) IF (ETR= =1) THEN EXIT ELSE JJJ=JJJ+1 M(J)=JJJ NUMBER1(I)=NUMBER2 END IF END DO END DO DO I=1,10000 IF(M(I).LE.23) SUM=SUM+1 END DO PRINT *,SUM/10000 END 二)MONTE CARLO SIMULATION OF ONE DIMENSIONAL DIFFUSION 蒙特卡罗计算一维扩散问题

INTEGER X,XX(1:1000,1:1000) REAL XXM(1:1000) ! X:INSTANTANEOUS POSITION OF ATOM ! XX(J,I):X*X ,J:第几天实验,I:第几步跳跃 ! XXM(I): THE MEAN OF XX WRITE(*,*) "实验天数JMAX,实验次数IMAX" READ(*,*) JMAX,IMAX ISEED=RTC() DO J=1,JMAX !第几天实验 X=0 !!! DO I=1,IMAX !第几步跳跃 RN=RAN(ISEED) IF(RN<0.5)THEN X=X+1 ELSE X=X-1 END IF XX(J,I)=X*X END DO END DO OPEN(1,FILE="C:\DIF1.DAT") DO I=1,IMAX XXM=0.0 XXM(I)=1.0*SUM(XX(1:JMAX,I))/JMAX !! WRITE(1,*) I, XXM(I) END DO CLOSE(1) END 三维的! 三)通过该程序了解FORTRAN语言如何画图(通过像素画图)USE MSFLIB INTEGER XR,YR !在的区域中画一个圆 PARAMETER XR=400,YR=400 INTEGER R, S(1:XR,1:YR) X0=XR/2 ! 圆心位置X0,YO Y0=YR/2 R=MIN(X0-10,Y0-10) !圆半径 S=0 !像素的初始状态(颜色) DO I=1,XR DO J=1,YR IF((I-X0)**2+(J-Y0)**2<=R**2)S(I,J)=10 IER=SETCOLOR(S(I,J)) IER=SETPIXEL(I,J) END DO END DO END

FORTRAN学习中的一些小心得

F O R T R A N学习中的一些小心 得 -标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

FORTRAN 心得 第一部分:一些小心得 1 Fortran不区分大小写 2 Fortran有5种基本数据类型,integer,real, character, logical, complex 3 fortran fixed format格式中的变量赋初值一般用DATA,因为它不能用:: 4 real(kind=8) a这种格式只使用于Fortran90,Fortran77中要使用 real*8或real(8) 5 FORTRAN中FREE与FIXED两种格式do循环的区别: Fortran 95使用end do来结束循环。 Fortran 77使用DO循环要麻烦一点,它不使用END DO来结束循环,而是使用行号来结束循环,程序代码要在DO的后面写清楚这个循环到哪一行程序代码结束。 Fortran 77中,经常会使用CONTINUE这个命令来结束循环。因为CONTINUE这个命令没有实际的用途,刚好可以拿来做封装使用。 6 循环的流程控制: 循环中的cycle命令相当于c++里的continue命令,用于结束一次循环 循环中的exit命令好比c里面的break,用于结束循环 7 不使用do循环,单纯用GOTO语句也能设计循环程序,但不推荐使用GOTO 语句 7 fortran有等价声明:即用equivalence(a,b),这样使得a,b使用同一块内存,这样可以节省内存,有时可精简代码。 8 fortran77中只能用单引号。(还有疑问,因为fixed format能用双引号) 9 逻辑运算符 == /= > >= < <= !Fortran90用法 .EQ. .NE. .GT. GE. .LT. .LE. !Fortran77用法 9 PAUSE,CONTINUE,STOP pause 暂停程序执行,按enter可继续执行 continue 貌似没什么用处,可用作封装程序的标志 STOP 命令用来结束程序,要谨慎使用 10 数组元素之间要用逗号分隔,而不能像matlab一样既可以用逗号也可以用空格,fortran的数组元素之间不能用空格。 11 数组的声明: Fortran 77中数组的声明,必须使用DIMENSION命令 Integer a; !先声明a是整型 Dimension a(10) !再声明a是大小为10的数组 Fortran 95中可以用简单的方法: Integer a(10) !最简单的方法

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

一般现在时知识点归纳总结 定义: 一般现在时表示经常或习惯性的动作或一般性事实,也可表示现在的状态或主语具备的性格和能力。 用法: (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程序30个

程序1 PROGRAM chaper1272 INTEGER :: A(10)=(/5,7,4,8,12,2,10,3,9,11/) INTEGER :: sum=0,ave !打开一数据文件,设置一个有格式直接存取文件,将10个数分2个记录写入文件。 !数据文件生成2个记录,每个记录行长度相同,记录长度为25 OPEN(1,FILE='input21.dat',FORM='FORMATTED',ACCESS='D IRECT',RECL=25) WRITE(1,"(5I5)",REC=1)(A(I)+10,I=1,5) !按格式说明将头5个数写入第1个记录 WRITE(1,"(5I5)",REC=2)(A(I)+10,I=6,10)!按格式说明将后5个数写入第2个记录 READ(1,"(5I5)",REC=2)(A(I),I=6,10) !按格式说明从第2个记录中读取后5个数 READ(1,"(5I5)",REC=1)(A(I),I=1,5) !按格式说明从第1个记录中读取头5个数 DO I=1,10 sum=sum+A(I) ENDDO ave=sum/10 !打开一个最大记录长度为22的有格式顺序存取文件

OPEN(2,FILE='input22.dat',FORM='FORMATTED',ACCESS='D IRECT',RECL=22) WRITE(2,"('10个数之和为:',I5)",REC=1) sum !输出1记录行,记录长度为22 WRITE(2,"('10个数平均值为:',I5)",REC=2)ave !输出1记录行,记录长度为22 WRITE(2,"(A)",REC=3) '程序运行正常结束。' !输出一个记录行,记录长度为22 END 程序2 PROGRAM average REAL sum,ave INTEGER n OPEN(1,file='score.dat') PRINT*,'正在统计平均成绩,请等待。' sum=0.0;n=0 DO READ(1,*,END=100) S sum=sum+s n=n+1 ENDDO 100 ave=sum/n

相关主题