《数据的输入、输出(上课用定稿).ppt》由会员分享,可在线阅读,更多相关《数据的输入、输出(上课用定稿).ppt(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第八章 常用算法的程序设计举例第一章 算法第二章 计算机和计算机程序第四章 逻辑运算和选择结构第五章 循环结构的实现第六章 Fortran的数据结构第七章 数据的输入、输出第三章 Fortran语言程序设计初步2一、格式输出一、格式输出 Fortran规定用指定的规定用指定的“格式编辑符格式编辑符”来实现有格来实现有格式输入输出。式输入输出。1.I编辑符编辑符Iw或或Iw.m(w字宽,字宽,m最少字位)最少字位)write(*,100)100,-30,12100format(1x,i3,i5,i5.4)end format语句为非执行语句,可出现在程序单位语句语句为非执行语句,可出现在程序单
2、位语句(program,function)之后和之后和end语句之前的任何位置。语句之前的任何位置。(但为阅读方便,一般统一放在程序最后)(但为阅读方便,一般统一放在程序最后)输出输出 100-300012用于整型数据的输入输出,用于整型数据的输入输出,Integer第七章 数据的输入、输出3说明说明:1 1)数字在指定区域内向右靠齐;)数字在指定区域内向右靠齐;2 2)如果输出的列数超过字宽,字宽内充满)如果输出的列数超过字宽,字宽内充满“*”;3 3)m m不包括负号所占列,输出列数超过不包括负号所占列,输出列数超过m m,按实际列输出。按实际列输出。42.F编辑符编辑符Fw.d(w字宽,
3、字宽,d小数位数)小数位数)write(*,100)7.42,-194.31,0.12100format(1x,f6.3,f10.2,f4.1)end输出输出 7.420-194.310.1用于实数编辑用于实数编辑,Fixed point number5说明说明:1 1)小数点占一列,数字在指定区域内向右靠齐;)小数点占一列,数字在指定区域内向右靠齐;2 2)数据的小数部分字宽若小于)数据的小数部分字宽若小于d d则右端补则右端补0 0,大于,大于d d则多出则多出 的下一位按的下一位按“四舍五入四舍五入”处理;处理;3 3)如果输出的列数超过字宽,字宽内充满)如果输出的列数超过字宽,字宽内充
4、满“*”;4 4)容易)容易“大数印错,小数印丢大数印错,小数印丢”。63.E编辑符编辑符Ew.d(w字宽,字宽,dE前数字部分小数位数)前数字部分小数位数)write(*,100)7.42,-194.31,0.12100format(1x,e11.3,e10.2,e8.1)end输出输出.742e+01-.19e+03.1e+00用于实数编辑,以标准指数形式输出,用于实数编辑,以标准指数形式输出,Exponent7说明说明:1 1)指数部分含)指数部分含e e占占4 4列,数字在指定区域内向右靠齐;列,数字在指定区域内向右靠齐;2 2)小数点及前面的负号各占一列(有的系统还有)小数点及前面的
5、负号各占一列(有的系统还有0 0););3 3)小数部分字宽若小于)小数部分字宽若小于d d则右端补则右端补0 0,大于,大于d d则多出的下一则多出的下一位按位按“四舍五入四舍五入”处理;处理;4 4)如果输出的列数超过字宽,字宽内充满)如果输出的列数超过字宽,字宽内充满“*”;5 5)要有足够字宽。)要有足够字宽。8 实数输出既可用实数输出既可用F编辑符,也可用编辑符,也可用E编辑符号,但整编辑符号,但整数输出只能用数输出只能用I编辑符。编辑符。复数格式输出需要两个实数编辑符。复数格式输出需要两个实数编辑符。write(*,100)(2.2,3.4),(0.0,-5.8)100format
6、(1x,f6.3,f6.3,e10.2,e10.2)end输出输出 2.200 3.400.00e+00-.58e+0194.G编辑符编辑符Gw.d(w字宽,字宽,d有效位数)有效位数)在在 用用F格式,格式,F格式后格式后4列留空。列留空。G编编辑辑符符虽虽然然可可以以避避免免F格格式式“大大数数印印错错、小小数数印印丢丢”和和E格格式式不不直直观观的的弊弊病病,但但其其输输出出时时无无法法事事先先获获知知F输输出出的的小小数数位位数数,输输出出样样式式也也零零乱乱无无规规律律,故故不不推推荐荐使用。使用。根据实数大小决定用根据实数大小决定用F型或型或E型格式输出型格式输出105.D编辑符编
7、辑符Dw.d(w字宽,字宽,d小数位数)小数位数)write(*,100)1.378675893D+02,1784.5D-03100format(1x,d18.10,f11.7)end输出输出.1378675893d+031.7845000 双精度数编辑符,使用方法与双精度数编辑符,使用方法与E编辑符相仿。双编辑符相仿。双精度数也可以用精度数也可以用F编辑符输出。编辑符输出。6.L编辑符编辑符Lw(w字宽)字宽)write(*,100).true.,.false.100format(1x,l4,l7)end输出输出 TF用于双精度数据的输出,用于双精度数据的输出,Double Precisio
8、n用于逻辑型数据的输出,用于逻辑型数据的输出,Logical117.A编辑符编辑符Aw(w字宽,无字宽,无w按实际长度输出)按实际长度输出)write(*,100)China,NewYork,Fortran100format(1x,a6,a3,a)end输出输出 ChinaNewFortran8.撇号编辑符撇号编辑符write(*,100)3,5.6,Limin100format(1x,x=,i3,y=,f6.3,a,student)end输出输出 x=3y=5.600Liminstudent用于字符型数据输出用于字符型数据输出用来插入所需的字符串用来插入所需的字符串129.H编辑符编辑符用来
9、输出字符常量(不推荐使用)。用来输出字符常量(不推荐使用)。write(*,100)3,5.6,Liminwrite(*,200)100format(1x,2Hx=,i3,2Hy=,f6.3,a,8Hstudent)200format(1x,Hello,15HHappy New Year!)end输出输出 x=3y=5.600Liminstudent Hello,HappyNewYear!nH(n字串长度,字串长度,n要准确无误)要准确无误)10.X编辑符编辑符用来在输出时产生空格。用来在输出时产生空格。nX(n空格个数)空格个数)write(*,100)3,5.6,-0.23100forma
10、t(1x,i3,2x,f3.1,3x,f6.2)end输出输出 35.6-.231311.纵向走纸控制纵向走纸控制 Fortran规规定定将将输输出出的的第第一一个个字字符符作作为为纵纵向向走走纸纸标标记记,用用来来控控制制行行与与行行之之间间的的间间隔隔,打打印印从从第第二二个个字符开始。字符开始。write(*,100)246,12341412.重复系数重复系数使用重复系数来规定重复使用的编辑符。使用重复系数来规定重复使用的编辑符。下面的下面的format语句等价:语句等价:format(1x,i3,i3,i3,f6.2,f6.2)format(1x,3i3,2f6.2)format(1x
11、,i3,2x,f6.2,2x,i3,2x,f6.2,2x)format(1x,2(i3,2x,f6.2,2x)13.斜杠编辑符斜杠编辑符用于结束本行记录输出,开始下一行记录输出。用于结束本行记录输出,开始下一行记录输出。write(*,100)5,4.2,6,7.8100format(1x,i3,f6.2/1x,i3,f6.2/)输出输出 54.20 67.80 (空一行)空一行)中间空一行需用中间空一行需用两个连续斜杠两个连续斜杠15二、二、write和和format语句的相互作用语句的相互作用1.如果输出项的个数少于输出量编辑符个数,多余的如果输出项的个数少于输出量编辑符个数,多余的 编辑
12、符不起作用,但紧邻的非输出量编辑符除外,编辑符不起作用,但紧邻的非输出量编辑符除外,输出直到下一个输出量编辑符之前为止。输出直到下一个输出量编辑符之前为止。write(*,100)5,4.2100format(1x,i3,f6.2,2x,end,i3,f6.2)end输出输出 54.20end 2.如果输出项的个数多于输出量编辑符个数,重新使如果输出项的个数多于输出量编辑符个数,重新使 用格式说明,但用格式说明,但开始新记录开始新记录。write(*,100)5,4.2,2,7.8100format(1x,i3,f6.2)输出输出 54.20 27.80同同format(1x,i3,f6.2/
13、1x,i3,f6.2),但不同但不同format(2(1x,i3,f6.2)163.如果在格式说明中含有重复编辑符组,当格式说明如果在格式说明中含有重复编辑符组,当格式说明 用完后,用完后,只有最后一个编辑符组(含重复系数)及只有最后一个编辑符组(含重复系数)及 其后面的编辑符被重复使用。其后面的编辑符被重复使用。write(*,100)5,6,4.2,7.8,2,9.3,9.2,3100format(1x,2(i2,2x),2(f4.1,2x),i3)end输出输出 564.27.82 9.39.2 34.如果有输出量,但在格如果有输出量,但在格 式说明中无相应编辑符,式说明中无相应编辑符,
14、则输出永不停止。则输出永不停止。write(*,100)5100format(1x,i=)输出不停的输出不停的“I=”5.可以用可以用format()输出空行,输出空行,相应相应write语句应无输出量。语句应无输出量。6.右边两对右边两对write和和 format作用相同。作用相同。write(*,100)i=,5write(*,200)5 100format(1x,a,i3)200format(1x,i=,i3)end17三、格式输入三、格式输入 Fortran用用read和和format语语句句的的联联合合来来实实现现格格式式输输入入。各各编编辑辑符符含含义义与与输输出出时时相相同同,
15、但但输输入入时时不不必必考考虑虑纵向走纸控制。纵向走纸控制。1.整数的输入整数的输入read(*,100)i,j100format(i4,i5)输入输入 34-56结果结果 i=34,j=-56注意:注意:在字段宽度内,在字段宽度内,空格按空格按0处理。处理。(错误!)(错误!)2.实数、复数和双实数、复数和双 精度数的输入精度数的输入read(*,100)x,y,z100format(2f4.2,e6.2)输入输入 1346-5.17843e3结果结果 x=13.46,y=-5.1,z=78430注意:注意:输入数据可带可不带输入数据可带可不带小数点,自带小数点优先,小数点,自带小数点优先,
16、但输入数据小数点占列。但输入数据小数点占列。18complex xread(*,100)x100format(2f4.2)输入输入 134617.4结果结果 x=(13.46,17.4)复数输入两实数复数输入两实数real*8 x,yread(*,100)x,y100format(f12.10,d12.10)输入输入 13.4617445d14.57d2 结果结果 x=134.617445,y=457D,E,F,G编辑符作用相同编辑符作用相同3.逻辑型数据的输入逻辑型数据的输入logical a,b,cread(*,100)a,b,c100format(l6,2l4)输入输入.true.ttf
17、cftt 结果结果 a=.true.,b=.true.c=.false.注意注意数据可以是数据可以是.true.、.false.,也可以是也可以是T、F开头的任开头的任何字符串。何字符串。194.字符型数据的输入字符型数据的输入(1)格式输入字符)格式输入字符不用带撇号,不用带撇号,字符串常量间字符串常量间没有分隔没有分隔 标记。标记。(2)输入字串与字符变量长度不同时。字串短时右补空)输入字串与字符变量长度不同时。字串短时右补空 格,字串长时格,字串长时向右看齐,左边截去。向右看齐,左边截去。(3)推荐使用不带长度说明的推荐使用不带长度说明的A编辑符,编辑符,此时变量根据此时变量根据 长度自
18、动选值。长度自动选值。character*4 w,x,y,z*5read(*,100)w,x,y,z100format(a5,a3,2a)输入输入 chinanewwanghello 结果结果hinaw,newx,wangy,hellz205.其他说明其他说明1)X编辑符表示在读输入编辑符表示在读输入 记录时向右跳过若干列。记录时向右跳过若干列。2)如果格式说明符已用完,)如果格式说明符已用完,但还有未输入变量,则重复但还有未输入变量,则重复 使用编辑符,但应重开一行使用编辑符,但应重开一行 记录。记录。3)斜杠编辑符表示本记录)斜杠编辑符表示本记录 输入结束,并接着输入第二输入结束,并接着输
19、入第二 个记录。个记录。read(*,100)i,j100format(1x,i3,2x,i3)输入 1234567890结果 i=234,j=789read(*,100)i,jread(*,200)m,n100format(i3)200format(i3/i3)输入 1234567890 1234567890 1234567890 1234567890 结果 i=123,j=123 m=123,n=1234)可以将)可以将format语句中括语句中括 号中的格式说明放在号中的格式说明放在write、print和和read语句中,但说语句中,但说 明内容不宜过长。明内容不宜过长。read(*,
20、(2i3)i,j write(*,(1x,2i3)10,20 print(1x,2i3),10,2021上机目的:上机目的:1.掌握各种格式编辑符的作用;掌握各种格式编辑符的作用;2.熟悉格式语句与格式输入输出语句的相互作用。熟悉格式语句与格式输入输出语句的相互作用。上机内容:上机内容:1.调试课本中的所有程序;调试课本中的所有程序;2.习题第习题第6、10题。题。练习题:练习题:1.阅读下列阅读下列FORTRAN 77程序:程序:READ(*,100)IA,I IF(IA.GE.125)THEN I=I+10 ELSE I=I-10 END IF WRITE(*,*)I 100 FORMAT
21、(I2,I1)END在执行这个程序时,如果在键盘上输入在执行这个程序时,如果在键盘上输入256,2后,则运行结果后,则运行结果I的值的值 。答案:答案:-42.阅读下列阅读下列FORTRAN 77程序:程序:READ(*,200)P,Q,X WRITE(*,200)X 200 FORMAT(1X,3(2X,F3.1)END在执行这个程序时,如果由键盘输入,则最后输出的在执行这个程序时,如果由键盘输入,则最后输出的X的值为的值为 。3.阅读下列阅读下列FORTRAN 77程序:程序:READ(*,100)I,J,K WRITE(*,200)K 100 FORMAT(3I4)200 FORMAT(
22、1X,I4)END在执行这个程序时,如果从键盘输入在执行这个程序时,如果从键盘输入12 34 5 6 749845,则输出的,则输出的K值为值为 。答案:答案:2.*3.50604.阅读下列阅读下列FORTRAN 77程序:程序:LOGICAL X,Y READ(*,100)X,Y WRITE(*,*)X,Y 100 FORMAT(1X,L4,6X,L3)END如果在执行这个程序时由键盘输入如果在执行这个程序时由键盘输入.TRUE.FALSETAB,则该程序执行后输出的,则该程序执行后输出的X值为值为 ,Y值为值为 。5.阅读下列阅读下列FORTRAN 77程序:程序:CHARACTER X*
23、4,Y*5,Z*4 X=YOUR Y=GIRLS Z=BOYS WRITE(*,100)X,Y,Z 100 FORMAT(1X,A3,A4,A2)END 上述程序运行后,输出的上述程序运行后,输出的X,Y,Z的值为的值为 。答案:答案:4.T,T 5.YOUGIRLBO6.设有下列格式输入语句:设有下列格式输入语句:READ(*,100)X,Y,Z 100 FORMAT(1X,F3.1,2X,F4.1,3X,F2.1)END在执行这个程序时由键盘输入,则读入后在执行这个程序时由键盘输入,则读入后X的值为的值为 ,Y的值为的值为 ,Z的值为的值为 。7.阅读下列阅读下列FORTRAN 77程序:
24、程序:READ(*,100)M,N X=MOD(M,N)/N WRITE(*,*)100 FORMAT(1X,I2,2X,I2)END 如果在执行这个程序时由键盘输入如果在执行这个程序时由键盘输入1248048965,则运行后输出的,则运行后输出的X值值 。答案:答案:6.56.7 125.2 6.7 7.0.08.阅读下列阅读下列FORTRAN 77程序:程序:READ(*,100)M,N IF(M.LE.N)N=M WRITE(*,100)N 100 FORMAT(1X,I3,26X,I4)END如果在执行这个程序时由键盘输入如果在执行这个程序时由键盘输入.123456 789,则该程序执
25、行后输出的,则该程序执行后输出的N值为值为 。9.阅读下列阅读下列FORTRAN 77程序:程序:L;OGICAL X,P,Q READ(*,100)P,Q WRITE(*,*)X 100 FORMAT(2L6)END 如果在执行这个程序时由键盘输入如果在执行这个程序时由键盘输入.TRUE.FTRUE,则运行后输出的,则运行后输出的X值为值为 。答案:答案:8.789 9.F10.以下程序的运行结果是以下程序的运行结果是 。CHARACTER*5 STR DO 10 I=3,1,-1 STR=DO 20 J=1,2*I-1 STR(J:J)=*20 CONTINUE WRITE(*,*)STR 10 CONTINUE END答案:答案:*11.以下程序的运行结果是以下程序的运行结果是 。CHARACTER C*6,T*1 C=ABCDEF I=1 J=LEN(C)10 T=C(I:I)C(I:I)=C(J:J)C(J:J)=T I=I+1 J=J-1 IF(I.LT.J)GOTO 10 WRITE(*,*)C END答案:答案:FEDCBA
限制150内