数据有格式输入输出

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

中山大学环境科学与工程学院陆希数据有格式输入输出一、概述输入输出数据是否简洁、直观、醒目、规范,是反映程序质量的一项重要指标示例:某程序需输入3个学生4门课成绩数据,共输入12个数据,有两种输入方式:①78.58558987588.59945.584.569.57782↙②数学物理化学英语输入第1位同学四门课成绩:78.585.058.098.0↙输入第2位同学四门课成绩:75.088.599.045.5↙输入第3位同学四门课成绩:84.569.577.082.0↙输入分类输入提示示例:某程序要输出3个学生4门课成绩数据,共输出12个数据,有两种输出方式:①78.5000085.0000058.0000098.0000075.0000088.5000099.0000045.5000084.5000069.5000077.0000082.00000②数学物理化学英语第1位同学成绩:78.585.058.098.0第2位同学成绩:75.088.599.045.5第3位同学成绩:84.569.577.082.0简洁直观醒目规范输入:从外部设备将数据传送到计算机内存输出:将计算机内部的数据传送到外部设备一般应在输入输出语句中提供三方面的信息:(1)通过什么设备来进行输入输出。(2)采用什么样的格式来进行输入输出。(3)输入输出的具体内容。二、格式输入输出程序1、格式输出1.1PRINT语句格式:PRINTf,输出项f:格式说明符,有三种形式:(1)*,使用表控格式。(2)‘(格式编辑符)’,例:PRINT'(1X,2F7.3)',X,Y(3)格式语句(FORMAT)的语句标号。例如:PRINT100,A,B,C100FORMAT(1X,F9.4,2F7.3)输出项可以是变量、常量、函数以及表达式。此外,输出项还可以是隐含DO循环。1.2WRITE语句格式:WRITE(u,f)输出项U:设备号,用于指明使用的输入输出设备。可以是一个整型量,也可以是星号*,*指系统隐含指定的外部设备,一般为显示器。f:格式说明符,用法与PRINT语句相同。二、格式输入格式:READf,输入项READ(u,f)输入项输入项可以是变量,也可以是隐含DO循环。U:设备号f:格式说明符三、格式说明语句格式:语句标号FORMAT(格式编辑符)例如:10FORMAT(1X,I4,F5.1)格式说明语句是非执行语句,它只是给输入输出语句提供数据的格式描述。格式说明语句可以放在程序单位语句(主程序语句PROGRAM,子程序语句FUNCTION或SUBROUTINE)之后,END语句之前的任何位置。四、常用的编辑符1、可重复编辑描述符可重复编辑描述符与输入输出项相对应。不同类型的输入输出项使用不同的编辑描述符。1.1整型数据编辑描述符(I,B,O,Z)(1)I编辑符用于十进制整数的输入输出。格式:rIwr:重复系数,为1时可以省略。w:字段宽度。输入:在输入记录中从左往右取w个字符存入对应的输入项。取得的w个字符必须是整数,正负号也占一个字符位置,空格也占一个字符位置,但不起作用。输入数据间可按规定域宽紧密输入,也可用逗号间隔输入,不用空格例如:READ(*,10)I,J,K10FORMAT(I4,I5,I6)输入71□4-346□-□1□2345则I,J,K的值分别为:714、-346和-123。输出:数字在指定的w字段宽度中向右端靠齐,左补空格。当w位数不足时,将输出w个“*”。例如:WRITE(*,10)K,L10FORMAT(1X,I5,I4)当K=12,L=-7567时,输出结果为:□□□12****(2)B,O,Z编辑符。这是FORTRAN90新增的编辑符。分别采用二进制、八进制和十六进制形式描述整型量的输入输出。其基本用法与I编辑符相同。输入数据:123412345-6789↙12,12345-6789↙12,34,56789↙12123-78↙1,1234-6789↙1,12345-6789↙12-78↙123454321-6789↙2#1112345-6789↙1234543.2-6789↙i、j、k值:i=1234,j=12345,k=-6789i=12,j=12345,k=-6789i=12,j=34,k=5678i=12,j=123,k=-78i=1,j=1234,k=-678产生数据转换错误i=12,j=0,k=-78产生数据转换错误,超出最大范围产生数据转换错误,非十进制整数。产生数据转换错误,域宽内为实数。输入例子:INTEGER(2)i,j,kREAD10,i,j,k10FORMAT(I4,2I5)!等价于FORMAT(I4,I5,I5)输出例子READ*,i,j,k10FORMAT(1X,'i=',I4,'j=',I4,'k=',I4)PRINT10,i,j,kEND输出:i=1234j=-123k=4567i=10j=-12k=1234i=****j=-12k=1234i=8j=-12k=1234输入:1234,-123,4567↙10,-12,1234↙12345,-12,1234↙8,-12,1234↙1.2实型数据编辑描述符(F,E)(1)F编辑符用于实型量的小数形式输入输出。格式:rFw.dr:重复系数w:字段宽度d:输入输出的小数位数输入:按w指定的字段宽度从输入记录中截取数据,若截取的数据中不带小数点,则系统按d自动加上小数点;若数据自带小数点,此时d不起作用,自带小数点优先。输入数据可紧密输入,也可逗号间隔。逗号有强行终止域宽作用。在规定域宽内,数字前后,数字之间可出现空格,一般空格被视为空。在规定域宽内,全为空格,输入实数为0.0。在规定域宽内,可按指数形式输入数据,小数部分小数点d值确定。在规定域宽内,输入数据不能超出取值范围。对于F编辑符,输入表中对应变量类型必须是实型或复型。例如:READ(*,10)A,B输入123456□726.8910FORMAT(F7.2,F6.1)则A、B的值分别为1234.56和726.89输出:w≥实际位数时,左补空格w≤实际位数时,输出w个“*”实际位数:整数位数+小数位数+小数点+负号实际小数位d,在小数后补0到d位实际小数位d,保留d位,对d+1位四舍五入例如:WRITE(*,10)A,B,C10FORMAT(1X,3F8.3)当A、B、C的值分别是78.9、-0.00072、12345.678时,输出为:□□78.900□□□-.001********输入程序例子:READ10,a,b,c10FORMAT(2F5.2,F8.3)a,b,c值:a=123.45,b=543.21,c=-1234.567a=1.234,b=543.21,c=-1.23456a=123.45,b=432.1,c=-1234.567a=1.23,b=1.23,c=-6.789a=1.23,b=54.32,c=12.345a=1.23,b=54.32,c=-1.234a=1.23,b=54.32,c=12345.68a=123.45,b=0.0,c=-12.345a=123.45,b=543.21,c=123.4a=123.45,b=543.21,c=123.4a=123.45,b=543.21,c=123.4产生数据转换错误(“上溢”错误)输入:1234554321-1234567↙1.23454321-1.234567↙12345432.1-1234567↙123,1.23,-6789↙12354321234567↙1235432-123456↙123,543212345678↙1234512345678↙12345543211234E+02↙12345543211234E2↙12345543211234+2↙12345543211234E+40↙输出程序例子:READ*,a,bWRITE(*,10)a,b10FORMAT(1X,'a=',F7.3,'b=',F7.3)END输出:a=125.511b=-12.233a=125.500b=-12.230a=125.523b=-12.234a=1.234b=-2.234a=*******b=*******输入:125.511,-12.233↙125.5,-12.23↙125.5234,-12.233567↙1.234,-2.233567↙1111.23,-112.23↙(2)E编辑符E编辑符可用于指数型实数的有格式输入输出,一般格式是:[r]Ew.d[Ee]其中:r为F编辑符重复次数。即:[r]Ew.d[Ee]等价于Ew.d[Ee],Ew.d[Ee],…,Ew.d[Ee]。w为指数型实数输入输出域宽,即实数占连续字符个数。d为小数位数,其含义同F编辑符。e为指数位数,缺省为2,不包括E和符号,指数域宽e+2。输入规则:与F编辑符完全相同输出规则:采取格式化的指数形式,即数字部分小数前面为0,小数点后第一位为非0数字。如果输出项数字部分的小数位数多于d位,保留d位,从d+1位四舍五入;如果小于d位,在其右边补0.说明:用F,E编辑符输入时,它们的作用相同.例如:READ(*,100)A,B,C,D100FORMAT(F8.3,E8.3,E8.3,F8.3)如果输入数据为:□□□0.234□□□□□234□234E+002.34E-01则A,B,C,D的值均为0.234输出例子:READ*,a,bWRITE(*,10)a,b10FORMAT(1X,'a=',E10.5,'b=',E11.5)END输出:a=.12543E+02b=-.12233E+03a=.12500E+02b=-.12230E+03a=.12535E+02b=-.12233E+03输入:12.543,-122.33↙12.5,-122.3↙12.53456,-122.3344↙1.3复型数据编辑符FORTRAN没有专门的复型格式编辑符。对复数的输入/输出,用输入/输出两个实数(复数的实部和虚部)来实现。例如:COMPLEXCMREAD(*,10)CMWRITE(*,20)CM10FORMAT(2F5.2)20FORMAT(1X,2F7.2)输入1234567890,则输出为:□123.45□678.901.4逻辑型数据编辑符格式:rLw其中:r为L编辑符重复次数。即:[r]L[w]等价于L[w],L[w],…,L[w]。w为逻辑值输入输出域宽,即逻辑值占连续字符个数。缺省w,域宽为2在输入时,输入的数据可以是.TRUE.或.FALSE.,也可以是头一个字母为T或F的任何字符串(T或F前面可以接“.”或空格,后面可以是任意字符)输入原则:域宽内首个非空格或非小数点“.”字符是“T”或“t”,则输入为.TRUE.。域宽内首个非空格或非小数点“.”字符是“F”或“f”,则输入为.FASLE.。在域宽内,字母T、t、F、f后可跟任意字符,不影响逻辑值输入。逻辑值间可用逗号分隔,不用空格。输入逻辑值.TRUE.,域宽必须大于5。输入.FASLE.,域宽必须大于6。输入示例:LOGICALlog1,log2,log3,log4READ26,log1,log2,log3,log426FORMAT(L,L1,L2,L3)输入:TFTAFB↙值:log1=.TRUE.,log2=.FASLE.,log3=.TRUE.,log4=.FASLE.输出原则在指定域宽内右对齐输出T(.TRUE.)或F(.FALSE.)。示例:LOGICALlog1,log2,log3,log4Log1=.TRUE.;log2=.TRUE.;log3=.FALSE.;log4=.FALSE.PRINT27,log1,log2,log

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功