第六讲__Fortran数据结构及输入、输出_第1页
第六讲__Fortran数据结构及输入、输出_第2页
第六讲__Fortran数据结构及输入、输出_第3页
第六讲__Fortran数据结构及输入、输出_第4页
第六讲__Fortran数据结构及输入、输出_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、苏州科技大学计算中心苏州科技大学计算中心第六讲第六讲 Fortran数据结构及输入、输出数据结构及输入、输出第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.1 Fortran 6.1 Fortran 数据结构数据结构FORTRAN 90FORTRAN 90具有丰富的具有丰富的数据类型数据类型, ,有有内部数据类型内部数据类型、派生数派生数据类型据类型、数组数组和和指针类型指针类型等。利用丰富的数据类型可设计和等。利用丰富的数据类型可设计和编写出功能强大的编写出功能强大的FORTRAN 90FORTRAN 90程序。程

2、序。类型类型复数运算复数运算字符型字符型6.1 Fortran 6.1 Fortran 数据结构数据结构FORTRAN 90FORTRAN 90数据类型数据类型内部数据类型内部数据类型派生类型派生类型( (记录类型记录类型) ) 数组类型数组类型指针类型指针类型公用区类型公用区类型整数类型整数类型实数类型实数类型复数类型复数类型字符类型字符类型逻辑类型逻辑类型第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.1 6.1 复数型数据运算及内部函数复数型数据运算及内部函数l与实数的运算一样。与实数的运算一样。l有,有,-

3、-,/ /,* * *。l并与实数一样有相应的内部函数。并与实数一样有相应的内部函数。lFORTRAN 90FORTRAN 90提供了针对复数型数据的内部函数。提供了针对复数型数据的内部函数。lCMPLXCMPLX(x,y,kind) (x,y,kind) 将参数转换为复数型。将参数转换为复数型。结果结果:C(kind):C(kind)。lDCMPLXDCMPLX(x,y) (x,y) 将参数转换为复数型。结将参数转换为复数型。结果果:C(8):C(8)。lREALREAL(x) (x) 求求x x的实部。的实部。lAIMAGAIMAG(x) (x) 求求x x的虚部。的虚部。lIMAGIMA

4、G(x) (x) 同同AIMAGAIMAG(x)(x)。lCONJGCONJG(x) (x) 求求x x的共轭复数。的共轭复数。复数型数据复数型数据类型类型复数型复数型字符型字符型第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.1 6.1 字符型数据字符型数据/ /子字符串子字符串l表示形式:字符变量名(开始位置:终止位置)表示形式:字符变量名(开始位置:终止位置)l例子:有字符变量例子:有字符变量A A,其取值为,其取值为ABCDE12345FGHABCDE12345FGH,则下,则下面的子串取值为:面的子串取值为

5、:lA(3:11) - CDE12345FA(3:11) - CDE12345F,lA(I+4:9) - E1234(I=1)A(I+4:9) - E1234(I=1),1234(I=2)1234(I=2)lA(:5) - ABCDEA(:5) - ABCDElA(11:) - FGHA(11:) - FGHlA(:) - ABCDE12345FGHA(:) - ABCDE12345FGHlA(3:3) - CA(3:3) - C字符型数据字符型数据u子字符串子字符串运算符运算符u内部函数内部函数第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算

6、中心苏州科技大学计算中心6.1 6.1 字符型数据字符型数据/ /运算符运算符l字符运算符:字符运算符:/l例子例子l关系表达式关系表达式: :对每种机器,系统都把本机上可以使用的各种对每种机器,系统都把本机上可以使用的各种字符按先后排列成某种次序,每个字符在排序中有确定的位字符按先后排列成某种次序,每个字符在排序中有确定的位置,称为置,称为排序号排序号。有了排序号,字符之间就可以比较大小及。有了排序号,字符之间就可以比较大小及相等与否,组成关系表达式。相等与否,组成关系表达式。 字符作比较实际上是比较它们的序号大小。字符比较的一字符作比较实际上是比较它们的序号大小。字符比较的一般形式是两端为

7、字符表达式的关系表达式:般形式是两端为字符表达式的关系表达式:字符表达式字符表达式关系操作符字符表达式关系操作符字符表达式。 例 如 :例 如 : A B A =(XY/C2)/C3 C1/CCTV=(XY/C2)/C3 式当式当C1C1、C2C2、C3C3是字符型是字符型变量名时是合法的,要先计算两端字符表达式的值,而后比变量名时是合法的,要先计算两端字符表达式的值,而后比较它们是否满足较它们是否满足关系。关系。program ex060202program ex060202 character(len= 6) first character(len= 6) first character(

8、len=10) second character(len=10) second character(len=20) add character(len=20) add first=Happy first=Happy second=Birthday second=Birthday add = first/second ! add = first/second ! 经由两个连续的除号经由两个连续的除号! !可以连接两个字符串可以连接两个字符串 write(write(* *, ,* *) add) addend end 字符型数据字符型数据u子字符串子字符串运算符运算符u内部函数内部函数第六讲第六

9、讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.1 6.1 字符型数据字符型数据/ /内部函数内部函数函数名函数名 说明说明ACHAR(n)ACHAR(n) 将将ASCIIASCII码码n n转换为对应字符。转换为对应字符。ADJUSTL(string)ADJUSTL(string)* * 将字符串将字符串stringstring左对齐左对齐, ,即去即去掉左端空格掉左端空格ADJUSTR(string)ADJUSTR(string)* * 将字符串将字符串stringstring右对齐右对齐, ,即去即去掉右端空格。掉右端空

10、格。string:CH(string:CH(* *),),结果类型同结果类型同stringstringCHAR(n)CHAR(n)* * 将将ASCIIASCII码码n n转换为对应字符。转换为对应字符。IACHAR(c)IACHAR(c)* * 将字符将字符c c转换为对应的转换为对应的ASCIIASCII码。码。ICHAR(c)ICHAR(c)* * 将字符将字符c c转换为对应的转换为对应的ASCIIASCII码。码。INDEX(s,ss,b)INDEX(s,ss,b)* * 求子串求子串ssss在串在串s s中起始位置。中起始位置。b b为真从右起为真从右起LEN(s)LEN(s)*

11、* 求字符串求字符串s s的长度。的长度。LEN_TRIM(s)LEN_TRIM(s)* * 求字符串求字符串s s去掉尾部空格后的字符数。去掉尾部空格后的字符数。LGE(s1,s2)LGE(s1,s2)* * 按按ASCIIASCII码值判定字符串码值判定字符串s1s1大于等于大于等于字符串字符串s2s2。LGT(s1,s2)LGT(s1,s2)* * 按按ASCIIASCII码值判定字符串码值判定字符串s1s1大于字符大于字符串串s2s2。LLE(s1,s2)LLE(s1,s2)* * 按按ASCIIASCII码值判定字符串码值判定字符串s1s1小于等于小于等于字符串字符串s2s2。LLT

12、(s1,s2)LLT(s1,s2)* * 按按ASCIIASCII码值判定字符串码值判定字符串s1s1小于字符小于字符串串s2s2。REPEAT(s,n)REPEAT(s,n)* * 求字符串求字符串s s重复重复n n次的新字符串。次的新字符串。SCAN(s,st,b)SCAN(s,st,b)求串求串stst中任一字符在串中任一字符在串s s中的位置。中的位置。TRIM(s)TRIM(s)* * 求字符串求字符串s s去掉首尾部空格后的字符数。去掉首尾部空格后的字符数。VERIFY(s,st,b)VERIFY(s,st,b) 求不在串求不在串stst中字符在中字符在s s中位置。中位置。b

13、b为真右起为真右起字符型数据字符型数据u子字符串子字符串运算符运算符u内部函数内部函数第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.2 6.2 数组数组/ /定义定义6.2 6.2 数组数组l数组是类型相同的组变量的有序集合。数组是类型相同的组变量的有序集合。 任何一组类型相同且有序的数据都可使用数组存储。任何一组类型相同且有序的数据都可使用数组存储。 如如: :保存保存3030名学生成绩数据的一组变量:名学生成绩数据的一组变量:s1,s2,s3,s30s1,s2,s3,s30 REAL s1,s2,s3,s4,s

14、5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15 REAL s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15 这组变量可用数组这组变量可用数组s s取代,数组元素取代,数组元素s(1),s(2),s(15),s(1),s(2),s(15),分别取代分别取代s1,s2,s15s1,s2,s15。 REAL s(15)REAL s(15)l数组分静态数组和动态数组数组分静态数组和动态数组n静态数组:在编译时分配存储单元,运行时数组大小不能改变。静态数组:在编译时分配存储单元,运行时数组大小不能改变。 INTEGER nu

15、m(5) !INTEGER num(5) !在编译时分配在编译时分配5 5个数组元素存储单元个数组元素存储单元(20(20字节字节) )n动态数组:在程序运行时分配存储单元,运行时数组大小可改变。动态数组:在程序运行时分配存储单元,运行时数组大小可改变。 INTEGERINTEGER,ALLOCATABLE : num(:) !ALLOCATABLE : num(:) !在编译时不分配存储单元在编译时不分配存储单元 ALLOCATEALLOCATE(num(5) !num(5) !在运行时分配在运行时分配5 5个数组元素存储单元个数组元素存储单元(20(20字节字节) )l数组大小为数组元素个

16、数。数组大小为数组元素个数。l数组声明有数组声明有3 3种方式:类型声明语句、种方式:类型声明语句、DIMENSIONDIMENSION语句、语句、DIMENSIONDIMENSION属性属性定义定义声明声明1 1声明声明2 2声明声明3 3说明说明第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.2 6.2 数组数组/ /声明声明1 1l使用类型声明语句进行数组声明。一般格式:使用类型声明语句进行数组声明。一般格式: : : INTEGERREALCOMPLEXCHARACTERLOGICALINTEGERREALC

17、OMPLEXCHARACTERLOGICAL ()=)=, ( ()=)= , : (/,/n/)n声明下界为声明下界为1 1的数组。例的数组。例n声明数组下界不为声明数组下界不为1 1的数组。的数组。例例n声明赋初值的数组及动态数组。声明赋初值的数组及动态数组。例例l数组元素个数计算。数组元素个数计算。REAL a(L1:U1,L2:U2,Ln:Un) !REAL a(L1:U1,L2:U2,Ln:Un) !数组元素个数数组元素个数m m按以下公式计算:按以下公式计算:m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)如:如:

18、REAL arr(2:5,-1:2,4),M=(5-2+1)REAL arr(2:5,-1:2,4),M=(5-2+1) (2-(-1)+1)(2-(-1)+1) (4-1+1)=64(4-1+1)=64。6.2 6.2 数组数组定义定义声明声明1 1声明声明2 2声明声明3 3说明说明第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.2 6.2 数组数组/ /声明声明2 2l使用使用DIMENSIONDIMENSION语句进行数组声明。一般格式:语句进行数组声明。一般格式:DIMENSIONDIMENSION DIM

19、ENSION 例:例: INTEGER day,countINTEGER day,count CHARACTER CHARACTER* *10 country10 country LOGICAL L LOGICAL L DIMENSION num(3),day(12),ihour(5:7),count(-3:3) DIMENSION num(3),day(12),ihour(5:7),count(-3:3) DIMENSION sc(-5:-1,5:9),ar(2:5,-1:2,4) DIMENSION sc(-5:-1,5:9),ar(2:5,-1:2,4) DIMENSION countr

20、y(15),L(5) DIMENSION country(15),L(5)DIMENSIONDIMENSION语句中不能出现语句中不能出现:,:,不能给数组赋初值。不能给数组赋初值。6.2 6.2 数组数组定义定义声明声明1 1声明声明2 2声明声明3 3说明说明第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.2 6.2 数组数组/ /声明声明3 3l使用类型声明语句和使用类型声明语句和DIMENSIONDIMENSION属性进行数组声明。一般格式:属性进行数组声明。一般格式: ,DIMENSION(,DIMENSI

21、ON( ) : ) : 例:例: INTEGERINTEGER,DIMENSION(2):num,total,score(10:15),price(4,5)DIMENSION(2):num,total,score(10:15),price(4,5) REAL,DIMENSION(-5:-1,5:9) : sc,jp REAL,DIMENSION(-5:-1,5:9) : sc,jp CHARACTER CHARACTER* *10,DIMENSION(15) : country,name(10)10,DIMENSION(15) : country,name(10) INTEGER INTEGE

22、R,DIMENSION(5) : S=(/45,78,85,55,95/)DIMENSION(5) : S=(/45,78,85,55,95/)必须出现必须出现:,:,可给数组赋初值。可给数组赋初值。6.2 6.2 数组数组定义定义声明声明1 1声明声明2 2声明声明3 3说明说明第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.2 6.2 数组数组/ /说明说明l数组声明中,维下界可以为数组声明中,维下界可以为1 1,维下界为,维下界为1 1可缺省。可缺省。l数组声明中,维下界和维上界可以为任意整数,且维下界数组声明

23、中,维下界和维上界可以为任意整数,且维下界维上界。维上界。l数组声明中,出现数组声明中,出现:,才能在声明语句中给数组赋初值。,才能在声明语句中给数组赋初值。l数组声明中,允许维下界数组声明中,允许维下界 维上界,且数组大小为维上界,且数组大小为0 0。l使用类型声明语句声明数组时,可使数组与普通变量混合声明。使用类型声明语句声明数组时,可使数组与普通变量混合声明。l使用使用DIMENSIONDIMENSION语句声明数组时,可用类型声明语句在前面声明类型。语句声明数组时,可用类型声明语句在前面声明类型。声明中不能有声明中不能有:。l使用使用DIMENSIONDIMENSION属性声明数组时,

24、声明中必须有属性声明数组时,声明中必须有:。6.2 6.2 数组数组定义定义声明声明1 1声明声明2 2声明声明3 3说明说明第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.2 6.2 数组数组/ /声明声明1/1/例例1 1l使用类型声明语句进行数组声明。一般格式:使用类型声明语句进行数组声明。一般格式: : : INTEGERREALCOMPLEXCHARACTERLOGICALINTEGERREALCOMPLEXCHARACTERLOGICAL ()=)=, ( ()=)= , : (/,/n/)n声明下界为声

25、明下界为1 1的数组。例的数组。例n声明数组下界不为声明数组下界不为1 1的数组。的数组。例例n声明赋初值的数组及动态数组。声明赋初值的数组及动态数组。例例l数组元素个数计算。数组元素个数计算。REAL a(L1:U1,L2:U2,Ln:Un) !REAL a(L1:U1,L2:U2,Ln:Un) !数组元素个数数组元素个数m m按以下公式计算:按以下公式计算:m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)如:如:REAL arr(2:5,-1:2,4),M=(5-2+1)REAL arr(2:5,-1:2,4),M=(5-

26、2+1) (2-(-1)+1)(2-(-1)+1) (4-1+1)=64(4-1+1)=64。INTEGERINTEGER(1 1)num(3),day(12) !num(3),day(12) !声明声明KINDKIND值为值为1 1的二个整型数组的二个整型数组INTEGER N(4),M(5,8) !INTEGER N(4),M(5,8) !声明声明KINDKIND值为值为4 4的二个整型数组的二个整型数组REAL score(4),prices(15) !REAL score(4),prices(15) !声明二个单精度实型数组声明二个单精度实型数组REAL(8) dr(5) !REAL(

27、8) dr(5) !声明一个双精度实型数组声明一个双精度实型数组COMPLEX comp(3) !COMPLEX comp(3) !声明一个单精度复型数组声明一个单精度复型数组CHARACTERCHARACTER* *10 country(15) !10 country(15) !声明一个长度为声明一个长度为1010的字符型数组的字符型数组LOGICAL L(5) !LOGICAL L(5) !声明一个声明一个KINDKIND值为值为4 4的逻辑型数组的逻辑型数组6.2 6.2 数组数组定义定义声明声明1 1声明声明2 2声明声明3 3说明说明第六讲第六讲 FortranFortran数据结构

28、及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.2 6.2 数组数组/ /声明声明1/1/例例2 2l使用类型声明语句进行数组声明。一般格式:使用类型声明语句进行数组声明。一般格式: : : INTEGERREALCOMPLEXCHARACTERLOGICALINTEGERREALCOMPLEXCHARACTERLOGICAL ()=)=, ( ()=)= , : (/,/n/)n声明下界为声明下界为1 1的数组。例的数组。例n声明数组下界不为声明数组下界不为1 1的数组。的数组。例例n声明赋初值的数组及动态数组。声明赋初值的数组及动态数组。例例l数组元素个数计算。

29、数组元素个数计算。REAL a(L1:U1,L2:U2,Ln:Un) !REAL a(L1:U1,L2:U2,Ln:Un) !数组元素个数数组元素个数m m按以下公式计算:按以下公式计算:m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)如:如:REAL arr(2:5,-1:2,4),M=(5-2+1)REAL arr(2:5,-1:2,4),M=(5-2+1) (2-(-1)+1)(2-(-1)+1) (4-1+1)=64(4-1+1)=64。INTEGER count(-3:3) !INTEGER count(-3:3)

30、!声明一个一维整型数组,有声明一个一维整型数组,有7 7个数组元素个数组元素INTEGER week(0:6) !INTEGER week(0:6) !声明一个一维整型数组,有声明一个一维整型数组,有7 7个数组元素个数组元素REAL sc(-5:-1,5:9) !REAL sc(-5:-1,5:9) !声明一个二维实型数组,有声明一个二维实型数组,有2525个数组元素个数组元素REAL ar(2:5,-1:2,4) !REAL ar(2:5,-1:2,4) !声明一个三维实型数组,有声明一个三维实型数组,有6464个数组元素个数组元素6.2 6.2 数组数组定义定义声明声明1 1声明声明2

31、2声明声明3 3说明说明第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.2 6.2 数组数组/ /声明声明1/1/例例3 3l使用类型声明语句进行数组声明。一般格式:使用类型声明语句进行数组声明。一般格式: : : INTEGERREALCOMPLEXCHARACTERLOGICALINTEGERREALCOMPLEXCHARACTERLOGICAL ()=)=, ( ()=)= , : (/,/n/)n声明下界为声明下界为1 1的数组。例的数组。例n声明数组下界不为声明数组下界不为1 1的数组。的数组。例例n声明赋

32、初值的数组及动态数组。声明赋初值的数组及动态数组。例例l数组元素个数计算。数组元素个数计算。REAL a(L1:U1,L2:U2,Ln:Un) !REAL a(L1:U1,L2:U2,Ln:Un) !数组元素个数数组元素个数m m按以下公式计算:按以下公式计算:m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)m=(U1-L1+1)(U2-L2+1)(Un-Ln+1)如:如:REAL arr(2:5,-1:2,4),M=(5-2+1)REAL arr(2:5,-1:2,4),M=(5-2+1) (2-(-1)+1)(2-(-1)+1) (4-1+1)=64(4-1+1)=64。INTE

33、GER : num(3)=(/12,23,34/),day(12)INTEGER : num(3)=(/12,23,34/),day(12)REAL : a(-1:3)=(/1.5,2.5,3.5,4.5,5.5/)REAL : a(-1:3)=(/1.5,2.5,3.5,4.5,5.5/)INTEGER : X(3,4)=(/1,2,3,4,5,6,7,8,9,10,11,12/)INTEGER : X(3,4)=(/1,2,3,4,5,6,7,8,9,10,11,12/)REAL,ALLOCATABLE:SUM(:),AVER(:,:),B(:)REAL,ALLOCATABLE:SUM(:

34、),AVER(:,:),B(:)READ(READ(* *, ,* *) M,N) M,NALLOCATE(SUM(0:N),AVER(M,N),B(-1:M)ALLOCATE(SUM(0:N),AVER(M,N),B(-1:M)DEALLOCATEDEALLOCATE6.2 6.2 数组数组定义定义声明声明1 1声明声明2 2声明声明3 3说明说明第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.3 6.3 数据有格式输入输出概述数据有格式输入输出概述6.3 6.3 数据有格式输入输出概述数据有格式输入输出概述l输入

35、输出数据是否输入输出数据是否简洁简洁、直观直观、醒目醒目、规范规范, ,是反映程序质量的一项重要指标。是反映程序质量的一项重要指标。l示例示例: :某程序需输入某程序需输入3 3个学生个学生4 4门课成绩数据门课成绩数据, ,共输入共输入1212个数据个数据, ,有两种输入方式:有两种输入方式: 78.5 85 58 98 75 88.5 99 45.5 84.5 69.5 77 8278.5 85 58 98 75 88.5 99 45.5 84.5 69.5 77 82 数学数学 物理物理 化学化学 英语英语 输入第输入第1 1位同学四门课成绩:位同学四门课成绩:78.5 85.0 58.

36、0 98.078.5 85.0 58.0 98.0 输入第输入第2 2位同学四门课成绩位同学四门课成绩: 75.0 88.5 99.0 45.5: 75.0 88.5 99.0 45.5 输入第输入第3 3位同学四门课成绩位同学四门课成绩: 84.5 69.5 77.0 82.0: 84.5 69.5 77.0 82.0l示例示例: :某程序要输出某程序要输出3 3个学生个学生4 4门课成绩数据门课成绩数据, ,共输出共输出1212个数据个数据, ,有两种输出方式:有两种输出方式: 78.50000 85.00000 58.00000 98.00000 75.00000 78.50000 85

37、.00000 58.00000 98.00000 75.00000 88.50000 99.00000 45.50000 84.50000 69.50000 88.50000 99.00000 45.50000 84.50000 69.50000 77.00000 82.00000 77.00000 82.00000 数学数学 物理物理 化学化学 英语英语 第第1 1位同学成绩位同学成绩: 78.5 85.0 58.0 98.0: 78.5 85.0 58.0 98.0 第第2 2位同学成绩位同学成绩: 75.0 88.5 99.0 45.5: 75.0 88.5 99.0 45.5 第第3

38、3位同学成绩位同学成绩: 84.5 69.5 77.0 82.0: 84.5 69.5 77.0 82.0输入分类输入分类输入提示输入提示简洁直观简洁直观醒目规范醒目规范第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.4 6.4 格式说明与格式编辑符格式说明与格式编辑符 READ( READ(* *,100) m,n,100) m,n WRITE( WRITE(* *,200) m+n,m-n,200) m+n,m-n 100 FORMAT(I3,I3) 100 FORMAT(I3,I3) 200 FORMAT(1X

39、, m+n=,I4, m-n=,I4) 200 FORMAT(1X, m+n=,I4, m-n=,I4) END END READ( READ(* *,(I3,I3)“) m,n,(I3,I3)“) m,n WRITE( WRITE(* *,(1X, m+n=,I4, m-n=,I4)“) m+n,m-,(1X, m+n=,I4, m-n=,I4)“) m+n,m-n n END END 输入:输入:987432987432。 输出:输出:m+n=1419m-n=m+n=1419m-n=555555。示例示例格式说明格式说明编辑符编辑符6.4 6.4 格式说明与格式编辑符格式说明与格式编辑符

40、READ( READ(* *,100)m,n ,100)m,n WRITE( WRITE(* *,200)m+n,m-n,200)m+n,m-n 100 FORMAT(I3,I3) 100 FORMAT(I3,I3) 200 FORMAT(1X,m+n=,I4, m-n=,I4) 200 FORMAT(1X,m+n=,I4, m-n=,I4) END END READ( READ(* *,(I3,I3)m,n,(I3,I3)m,n WRITE( WRITE(* *,(1X, m+n=,I4, m-n=,I4)m+n,m-n,(1X, m+n=,I4, m-n=,I4)m+n,m-n END E

41、ND第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.46.4格式说明与格式编辑符格式说明与格式编辑符/ /格式说明格式说明l数据有格式输入输出需要给出相关的格式说明。数据有格式输入输出需要给出相关的格式说明。lFORMATFORMAT语句提供输入输出数据的格式说明信息。语句提供输入输出数据的格式说明信息。lFORMATFORMAT语句既不是执行语句语句既不是执行语句, ,也不是说明语句。也不是说明语句。lFORMATFORMAT语句可出现在说明语句之后语句可出现在说明语句之后,END,END语句之前任何位置。语句之前

42、任何位置。l格式说明表是关键字格式说明表是关键字FORMATFORMAT之后的括号部分。之后的括号部分。l格式说明表由若干格式编辑符组成,编辑符由格式说明表由若干格式编辑符组成,编辑符由“,”,”分隔。分隔。l格式说明表可嵌入到输入输出语句中,取代格式说明表可嵌入到输入输出语句中,取代FORMATFORMAT语句。语句。l格式说明一般使用格式说明一般使用FORMATFORMAT语句,简单格式使用嵌入方式。语句,简单格式使用嵌入方式。lFORMATFORMAT语句语法描述:语句语法描述: FORMAT FORMAT FORMAT (,/,/)6.4 6.4 格式说明与格式编辑符格式说明与格式编辑

43、符示例示例格式说明格式说明编辑符编辑符第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.46.4格式说明与格式编辑符格式说明与格式编辑符/ /编辑符编辑符lFORTRAN 90FORTRAN 90提供了提供了2424个格式编辑符,如:个格式编辑符,如:I I、F F、E E、A A等。等。l格式编辑符分为两类:格式编辑符分为两类:可重复编辑符可重复编辑符、不可重复编辑符不可重复编辑符。 l可重复编辑符可重复编辑符可指定重复系数可指定重复系数, ,与与I/OI/O表中的一个表中的一个I/OI/O项对应。项对应。l不可重复

44、编辑符不可重复编辑符不可指定重复系数不可指定重复系数, ,不与输入输出项相对应。不与输入输出项相对应。 如:如:I I、F F、E E、A A等编辑符为等编辑符为可重复编辑符可重复编辑符。 如:如:X X、Q Q、/ /、 等编辑符为等编辑符为不可重复编辑符不可重复编辑符。 READ(READ(* *,100) num1, num2, price1, price2,100) num1, num2, price1, price2 100 FORMAT(2I3, F7.1, E8.2) 100 FORMAT(2I3, F7.1, E8.2) WRITE( WRITE(* *,200) num1,2

45、00) num1* *price1+num2price1+num2* *price2price2 200 FORMAT(1X,total prices=,E14.7) 200 FORMAT(1X,total prices=,E14.7) END END 输入:输入:1251252195234.57.52E+042195234.57.52E+04。 输出:输出:total prices=total prices=1.3483512E+071.3483512E+07。6.4 6.4 格式说明与格式编辑符格式说明与格式编辑符示例示例格式说明格式说明编辑符编辑符第六讲第六讲 FortranFortra

46、n数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心表表6-1 可重复编辑符可重复编辑符 格式格式 名称名称 功能功能 输入输入 输出输出 rIm.n rIm.n 整型编辑符整型编辑符 将整数按指定域宽输入输出将整数按指定域宽输入输出 rBm.n rBm.n 二进制编辑符二进制编辑符 将将2 2进制数按指定域宽输入输出进制数按指定域宽输入输出 rOm.n rOm.n 八进制编辑符八进制编辑符 将将8 8进制数按指定域宽输入输出进制数按指定域宽输入输出 rZm.n 16rZm.n 16进制编辑符进制编辑符 将将1616进制数按指定域宽输入输出进制数按指定域宽输入输出

47、 rFm.d rFm.d 小数型实型编辑符小数型实型编辑符 将实数按指定域宽输入输出将实数按指定域宽输入输出 rEm.dEe rEm.dEe 指数型实型编辑符指数型实型编辑符 将实数按指定域宽输入输出将实数按指定域宽输入输出 rDm.d rDm.d 双精度实型编辑符双精度实型编辑符 将双精度数按指定域宽输入输出将双精度数按指定域宽输入输出 rENm.dEe rENm.dEe 工程计数法编辑符工程计数法编辑符 将实数按工程计数法输入输出将实数按工程计数法输入输出 rESm.dEe rESm.dEe 科学计数法编辑符科学计数法编辑符 将实数按科学计数法输入输出将实数按科学计数法输入输出 rAm r

48、Am 字符型编辑符字符型编辑符 将字符串按指定域宽输入输出将字符串按指定域宽输入输出 rLm rLm 逻辑型编辑符逻辑型编辑符 将逻辑值按指定域宽输入输出将逻辑值按指定域宽输入输出 rGm.dEe rGm.dEe 通用编辑符通用编辑符 将任意类型数据按域宽输入输出将任意类型数据按域宽输入输出 第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心表表6-2 不可重复编辑符不可重复编辑符 格式格式 名称名称 功能功能 输入输入 输出输出 或或“ ” “ ” 撇号编辑符撇号编辑符 将字符串输出将字符串输出 nH HnH H编辑符编

49、辑符 将将H H后后n n个字符输出个字符输出 Q Q 字符计数编辑符字符计数编辑符 获到输入记录中剩余字符数获到输入记录中剩余字符数 Tc, TLc, TRc Tc, TLc, TRc 位置编辑符位置编辑符 指定输入输出记录中的位置指定输入输出记录中的位置 nX nX 位置编辑符位置编辑符 指定输入输出记录中的位置指定输入输出记录中的位置 SP, SS, S +SP, SS, S +号编辑符号编辑符 控制控制+ +号输出号输出 / / 斜杠编辑符斜杠编辑符 终止本记录终止本记录, ,开始下一记录开始下一记录 反斜杠编辑符反斜杠编辑符 下一记录接上一记录输出下一记录接上一记录输出 $ $ $编

50、辑符编辑符 下一记录接上一记录输出下一记录接上一记录输出 : 格式控制编辑符格式控制编辑符 无输出数据终止格式控制无输出数据终止格式控制 kP kP 比例因子编辑符比例因子编辑符 设置设置F F和和E E编辑符指数比例因子编辑符指数比例因子 BN, BZ BN, BZ 空格替代编辑符空格替代编辑符 指定数字串中空格意义指定数字串中空格意义 第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.5 6.5 整数有格式输入输出整数有格式输入输出I I 编辑符可用于整数的有格式输入输出编辑符可用于整数的有格式输入输出, ,一般格

51、式是:一般格式是: rIw.mrIw.m其中:其中:r r为为I I编辑符重复次数。编辑符重复次数。即:即:rIw.mrIw.m等价于等价于Iw.m,Iw.m,Iw.mIw.m,Iw.m,Iw.m。 w w为整数输入输出域宽为整数输入输出域宽, ,即整数占连续字符个数。即整数占连续字符个数。 m m为输出最少位数。为输出最少位数。 .m.m项只对整数输出有效项只对整数输出有效, ,对输入无效。对输入无效。 程序示例:程序示例: INTEGER(2) i,j,kINTEGER(2) i,j,k READ( READ(* *,10) i,j,k,10) i,j,k 10 10 FORMAT(I4,

52、2I5) FORMAT(I4,2I5) !等价于!等价于FORMAT(I4,I5,I5)FORMAT(I4,I5,I5) WRITE( WRITE(* *,(1X, i+j+k=,I5) i+j+k,(1X, i+j+k=,I5) i+j+k END END格式格式输入输入输出输出6.5 6.5 整数有格式输入输出整数有格式输入输出第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.5 6.5 整数有格式输入输出整数有格式输入输出/ /输入输入l输入数据间可按规定域宽紧密输入输入数据间可按规定域宽紧密输入, ,也可用逗号

53、间隔输入也可用逗号间隔输入, ,不用空格。不用空格。l在域宽内在域宽内, ,数字前后数字前后, ,数字之间可出现空格数字之间可出现空格, ,这些空格这些空格一般一般被视为空。被视为空。 l在域宽内在域宽内, ,全为空格全为空格, ,输入整数为输入整数为0 0。 l在域宽内在域宽内, ,输入数据不能超出范围输入数据不能超出范围, ,不能是非十进制整数。不能是非十进制整数。lI I编辑符要求输入表中对应变量的类型一般是整型编辑符要求输入表中对应变量的类型一般是整型, ,否则会产生错误。否则会产生错误。l示例:示例: INTEGER(2) i,j,kINTEGER(2) i,j,k READ( RE

54、AD(* *,10) i,j,k,10) i,j,k 10 10 FORMAT(I4,2I5) FORMAT(I4,2I5) !等价于!等价于FORMAT(I4,I5,I5)FORMAT(I4,I5,I5) WRITE( WRITE(* *,(1X, i+j+k=,I5) i+j+k,(1X, i+j+k=,I5) i+j+k END END 格式格式输入输入输出输出6.5 6.5 整数有格式输入输出整数有格式输入输出第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.5 6.5 整数有格式输入输出整数有格式输入输出/

55、/输出输出l若域宽等于整数位数若域宽等于整数位数, ,则在域宽内输出该整数则在域宽内输出该整数, ,与后一数据无空格间隔。与后一数据无空格间隔。l若域宽大于整数位数若域宽大于整数位数, ,则在域宽内按右对齐输出该整数则在域宽内按右对齐输出该整数, ,前补空格。前补空格。l若域宽小于整数位数若域宽小于整数位数, ,则表明域宽不足则表明域宽不足, ,无法输出数据无法输出数据, ,域宽内填充域宽内填充“* *”。l对于对于Iw.mIw.m格式格式,m,m表示输出最小位数。位数小于表示输出最小位数。位数小于m,m,补前导补前导0 0至至m m位。位。 l示例:示例: READ(READ(* *, ,*

56、 *) i,j,k) i,j,k 10 10 FORMAT(1X, i=,I4, j=,I4, k=,I4) FORMAT(1X, i=,I4, j=,I4, k=,I4) WRITE( WRITE(* *,10) i,j,k,10) i,j,k END END6.5 6.5 整数有格式输入输出整数有格式输入输出输出:输出:l i=1234j=-123k=4567i=1234j=-123k=4567l i= i=10j=10j=- -12k=123412k=1234 l i= i=* * * * *j=j=- -12k=123412k=1234 l i= i=008j=-008j=-012k=

57、1234012k=1234 输入:输入:l1234,-123,4567 1234,-123,4567 l10,-12,123410,-12,1234 l12345,-12,1234 12345,-12,1234 l8,-12,1234 8,-12,1234 格式格式输入输入输出输出第六讲第六讲 FortranFortran数据结构及输入、输出数据结构及输入、输出苏州科技大学计算中心苏州科技大学计算中心6.5 6.5 整数有格式输入输出整数有格式输入输出/ /输入输入/ /示例示例l输入数据间可按规定域宽紧密输入输入数据间可按规定域宽紧密输入, ,也可用逗号间隔输入也可用逗号间隔输入, ,不用空

58、格。不用空格。l在域宽内在域宽内, ,数字前后数字前后, ,数字之间可出现空格数字之间可出现空格, ,这些空格这些空格一般一般被视为空。被视为空。 l在域宽内在域宽内, ,全为空格全为空格, ,输入整数为输入整数为0 0。 l在域宽内在域宽内, ,输入数据不能超出范围输入数据不能超出范围, ,不能是非十进制整数。不能是非十进制整数。lI I编辑符要求输入表中对应变量的类型一般是整型编辑符要求输入表中对应变量的类型一般是整型, ,否则会产生错误。否则会产生错误。l示例示例: INTEGER(2) i,j,kINTEGER(2) i,j,k READ 10,i,j,k READ 10,i,j,k

59、10 10 FORMAT(I4,2I5) FORMAT(I4,2I5) !等价于!等价于FORMAT(I4,I5,I5)FORMAT(I4,I5,I5) PRINT (1X, i+j+k=,I5),i+j+k PRINT (1X, i+j+k=,I5),i+j+k END END 格式格式输入输入输出输出6.5 6.5 整数有格式输入输出整数有格式输入输出输入数据:输入数据:l 123412345-6789123412345-6789l 12,12345-678912,12345-6789l12,34,12,34,5678956789l1234,1234,5678956789l 1 12 21

60、23123- -7878l 1 1,12,123434- -67896789l 1 1,12,12345-345-67896789l1 12 2- -7878l123454321-6789123454321-6789l 2#1112345-67892#1112345-6789l 1234543.2-67891234543.2-6789i i、j j、k k 值:值:li=1234,j=12345,k=-6789i=1234,j=12345,k=-6789li=12,j=12345,k=-6789i=12,j=12345,k=-6789li=12,j=34,k=5678i=12,j=34,k=5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论