1
2009-7-29
第 7章 数据的输入输出
§ 1 输入输出概述
§ 2 格式输出
§ 3 格式输入练 习
2
2009-7-29
输入输出 是指在 计算机内存 与 外部设备 之间传送数据的过程。
从外部设备将数据传送到计算机内存 称为 输入 。
将计算机内存的数据传送到外部设备 称为 输出 。
要顺利地传送数据,一般应在输入输出语句中给计算机提供三方面的信息:
① 通过什么 设备 来进行输入输出。
② 采用什么样的 格式 来进行输入输出。
③ 输入输出的具体 内容 。
§ 1 输入输出概述 (p128-129)
§ 1 输入输出概述
3
2009-7-29
一,Fortran的输出语句一般格式:
输出表,一个或多个用逗号隔开的需要输出的 变量,常量 或 表达式 。(输出内容)
u是设备号,用于指明具体使用的输出设备。
u可以是一个 正整数,代表一个输出设备;
u也可以是一个 星号 *,代表系统默认的输出设备,一般指显示器。
write(u,f) 输出表
§ 1 输入输出概述
4
2009-7-29
f 指定输出所用的格式,有两种形式:
f 可以是一个 星号,代表系统默认的输出格式;
f 也可以是一个 语句标号 s,通过语句标号指向一个格式语句( format语句)。
以 显示器 为输出设备的格式输出语句的一般形式:
write(u,f) 输出表如:表控输出语句 使用系统默认的输出格式。
write(*,*) 输出表
write(*,s) 输出表
s format(格式说明符 )
§ 1 输入输出概述
5
2009-7-29
格式输出语句:
功能,输出时,根据语句标号 s找到 format语句,对输出表中的每个输出项 按照 format语句中格式说明符指定的格式 进行输出。
format语句,称为 格式语句,是一个非执行语句,不产生任何操作,只是给输出语句提供输出的格式描述。
格式说明符,也称为 格式编辑符 或 编辑描述符,多个格式说明符之间用逗号分隔。
基本原则,在格式输出时,write语句输出表中的 每个输出项 (不论是常量、变量、表达式),在 format语句中均需要有一个格式说明符相对应 。
write(*,s) 输出表
s format(格式说明符 )
§ 1 输入输出概述
6
2009-7-29
二,Fortran的输入语句一般格式:
输入变量表,需要输入数据的 变量,多个变量时用逗号分隔。(输入内容)
u是设备号,用于指明具体使用的输入设备。
u可以是一个 正整数,代表一个输入设备;
u也可以是一个 星号 *,代表系统默认的输入设备,一般指键盘。
read(u,f) 输入变量表
§ 1 输入输出概述
7
2009-7-29
§ 1 输入输出概述
f 指定输入所用的格式,有两种形式:
f 可以是一个 星号,代表系统默认的输入格式;
f 也可以是一个 语句标号 s,通过语句标号指向一个格式语句。
以 键盘 为输入设备的格式输入语句的一般形式:
read(u,f) 输入变量表如:表控输入语句 使用系统默认的输入格式。
read(*,*) 输入变量表
read(*,s) 输入变量表
s format(格式说明符 )
8
2009-7-29
【 引例 】
格式说明符 包括,数据格式说明符 (整数、实数、
双精度数、复数、逻辑型、字符型 ),空格格式说明符,走纸控制符,斜杠说明符、单引号说明符等。
另外还有格式说明符的 重复系数 。
§ 2 格式输出 (p147-161)
k=125
a=321.65
write(*,10) k,a
10 format(1x,i3,1x,f 7.2)
125 321.65
§ 2 格式输出
9
2009-7-29
一、整型格式说明符
i或 I,用于整型数据的输入输出。
格式,iw或 Iw
其中,w是一个整数,称为 字段宽度 (场宽 ),即数据输出所占的位数。
功能,按照 w指定的位数 输出整数 。
如:
40 -12 123
§ 2 格式输出
j=40
k=-12
l=123
write(*,100) j,k,l
100 format(1x,i3,i5,i7)
10
2009-7-29
注意:
① 若整数的实际位数 <w,数据靠右对齐,左补空格;
② 负整数的符号也算一位;
③ 若 数据的实际位数 >w,输出 w个星号 *。
40 -12 123***
§ 2 格式输出
j=40
k=-12
l=123
write(*,100) j,k,l
100 format(1x,i3,i5,i7)
j=- 400
11
2009-7-29
二、实型格式说明符
1,以小数形式输出 ( f或 F)
格式,fw.d或 Fw.d
其中,w为字段宽度,是数据输出的总位数; d
为小数点后面小数部分的位数。
要输出的值 格式符 输出结果
1640 i5
-8763 i8
-67896 i5
§ 2 格式输出
1640
-8763
*****
12
2009-7-29
① 若实际小数位数 <d,小数部分右补 0。
② 若实际小数位数 >d,小数部分四舍五入。
③ 设实数的整数部分位数为 b,小数部分位数为 d,则总位数 w应设置为:
对于正数,w≥b+d+1(小数点一位);
对于负数,w≥b+d+2(小数点一位,符号一位)。
§ 2 格式输出
a=15.8
b=-746.578
c=873.2
write(*,100) a,b,c
100 format(1x,f6.1,f9.2,f7.2)
15.8 -746.58? 873.20
13
2009-7-29
要输出的值 格式符 输出结果
18.5 f6.2
1875.478 f9.2
-78567.83 f9.3
0.000678576 f10.4
18.50
1875.48
*********
0.0007
④ 由于一般难以提前估计出输出数据的值,使用 f格式说明符容易出现,大数不印,小数印丢 的现象。
a=2347856.0
b=0.000001234
write(*,100) a,b
100 format(1x,f9.2,f12.3)
********* 0.000
§ 2 格式输出
14
2009-7-29
2,以指数形式输出 ( e或 E)
格式,ew.d或 Ew.d
功能,以规格化指数形式输出 (0≤abs(数字部分 )< 1)。
其中 w为数据输出的总位数,d为数字部分的小数位数。
如,a=15.8
b=-746.578
c=873.2
write(*,100) a,b,c
100 format(1x,e15.6,e12.4,e9.3)
0.158000e+02? -0.7466e+030.873e+03
§ 2 格式输出
15
2009-7-29
① 指数部分占 4位,其中字母 e一位,指数的符号 +或 -
占一位,指数 2位(默认)。
② 数字部分的小数位数为 d位,小数点一位,小数点前的零占一位,符号占一位,则总位数 w至少为:
对于正数,w≥1+1+d+4,即 w≥d+6;
对于负数,w≥1+1+1+d+4,即 w≥d+7。
a=15.8
b=-746.578
c=873.2
write(*,100) a,b,c
100 format(1x,e15.6,e12.4,e9.3)
0.158000e+02? -0.7466e+030.873e+03
§ 2 格式输出
16
2009-7-29
③ e型格式说明符可以避免 f型的“大数不印、小数印丢”的现象。
④ Fortran77允许用户指定指数的位数,
格式,ew.dep ( 其中,p为指数的位数)
如:输出 2347856.0,格式为 e16.7e3,则输出结果为:
0.2347856e+007
0.2347856e+07 0.1234000e-05
§ 2 格式输出
a=2347856.0
b=0.000001234
write(*,100) a,b
100 format(1x,e16.7,e16.7)
17
2009-7-29
实型格式符的说明,f型和 e型是实数常用的两种格式说明符,至于使用哪个,由使用者自行确定。
要输出的值 格式符 输出结果
123.45 e12.4
-0.005 e11.3
876.53 e8.3
7621.2 e15.6e3
0.1235e+03
-0.500e-02
********
0.762120e+004
§ 2 格式输出实数在计算机中有两种表示形式小数形式指数形式实数的格式说明符
f型
e型
18
2009-7-29
三、双精度型格式说明符 ( d或 D)
格式,dw.d
功能,以指数形式输出,0≤abs(数字部分 )< 1。
其中,w为数据输出的总位数,d为数字部分小数位数。
如:
§ 2 格式输出
double precision d1,d2
d1=1.378675893d2
d2=1784.5d-3
write(*,100) d1,d2
100 format(1x,d18.10,d18.7)
0.1378675893d+03 0.1784500d+01
19
2009-7-29
注,双精度数据也可使用实型格式说明符输出。
§ 2 格式输出双精度数在计算机中只有一种表示形式指数形式指数形式,d型
f型或 e型的形式输出形式
double precision d1,d2
d1=1.378675893d2
d2=1784.5d-3
write(*,100) d1,d2
100 format(1x,f18.10,e18.7)
137.8675893000 0.1784500e+01
20
2009-7-29
四、复型的格式输出复数没有专门的格式符;输出时,可用两个实数的格式说明符( f型或 e型)进行格式输出。
如:
§ 2 格式输出
complex c1,c2
c1=(1.2,2.5)
c2=(3.0,-4.5)
write(*,100) c1,c2
100 format(1x,f5.2,f5.2,2x,e10.2,e10.2)
1.20? 2.50 0.30e+01? -0.45e+01
① 注意与表控输出语句的区别。
write(*,*) c1,c2
若上述输出语句改为:
(1.2000000,2.5000000) (3.0000000,-4.5000000)
21
2009-7-29
§ 2 格式输出
1.20? 2.50 0.30e+01? -0.45e+01
② 为了增加可读性,可以人为地加上‘ +’和表示虚部的符号‘ i’。
100 format(1x,f5.2,‘+’,f5.2,‘i’,2x,f5.2,f5.2,‘i’)
可将上述 format语句改为:
1.20+? 2.50i 3.00-4.50i
write(*,100) c1,‘i’,c2,‘i’
100 format(1x,f5.2,‘+’,f5.2,a,2x,f5.2,f5.2,a)
complex c1,c2
c1=(1.2,2.5)
c2=(3.0,-4.5)
write(*,100) c1,c2
100 format(1x,f5.2,f5.2,2x,e10.2,e10.2)
22
2009-7-29
五、逻辑型格式说明符 ( l或 L)
用于逻辑型数据的输入输出。
格式,lw或 Lw
同样,w是字段宽度,用于指定逻辑型数据的输出位数。
① 无论采用表控输出还是格式输出,逻辑真,true.输出一个字母 T,逻辑假输出一个字母 F。
② 对于格式输出,当 w>1位时,输出的 T或 F靠右对齐,左补空格 。
§ 2 格式输出
23
2009-7-29
【 例 7.1】
六、字符型格式说明符 ( a或 A)
用于字符型数据的输入输出。
格式,① aw或 Aw ② a或 A
注意:
① 若在 a后面不指定 w,表示按字符的实际长度输出。
logical L1,L2
L1=.true.
L2=.false.
write(*,100) L1,L2,.true,
100 format(1x,l4,l5,l2)
end
T F? T
§ 2 格式输出
24
2009-7-29
② 实际长度 <w,输出的字符串 靠右对齐,左补空格 。
③ 实际长度 >w,不是输出星号 *,而是字符串 从左输出 w个字符,截去右边的字符 。
④ 表控格式输出时,输出表中可以输出字符串。
如:
§ 2 格式输出要输出的字符串 格式符 输出结果
format a7
china a5
beijing a6
fortran a
format
chin
beijin
fortran
write(*,*)‘i=’,i,‘j=’,j
25
2009-7-29
格式语句输出时,输出字符串的方法有两种:
与表控语句一样,可在 write语句的输出表中输出字符串,但 需在 format语句中用 a型格式符说明 ;
如:
可将需要输出的字符串放在 format语句中。
如:
§ 2 格式输出
write(*,100)‘i=’,i,‘j=’,j
100 format(1x,a,i4,a,i5)
i=123
j=2347
write(*,100) i,j
100 format(1x,‘i=’,i4,‘j=’,i5)
i=? 123j=? 2347
26
2009-7-29
七、空格格式说明符 ( x或 X)
格式,nx或 nX
功能,输出时产生 n个空格,不需输出表元素对应。
其中,n为正整数,是需要输出的空格个数。
如:
格式语句中的第一个空格( 1x),作为 走纸控制符 使用,并不输出。
i=146
a=124.32
b=1247.32
write(*,100) i,a,b
100 format(1x,i4,2x,f6.2,2x,e12.5)
146 124.32 0.12473e+03
§ 2 格式输出
27
2009-7-29
八、走纸控制符( Compaq Visual Fortran中不存在 )
用于在输出时对换行进行控制,如:不换行输出、换行输出、换两行输出、换页输出、等等。
输出记录,外部介质上的一个输出单位(譬如显示器的一行)。
如:
输出记录:
i=146
a=124.32
b=1247.32
write(*,100) i,a,b
100 format(1x,i4,2x,f6.2,2x,e12.5)
146 124.32 0.12473e+03
§ 2 格式输出
28
2009-7-29
注意:
① 标准 Fortran77规定:在格式输出中,每个输出记录的 第一个字符 作为走纸控制符,该字符不再被输出,而从输出记录的第二个字符开始输出 。
§ 2 格式输出
read(*,101) 2.1234
101 format(f6.4)
.1234
read(*,101)-0.1234
101 format(f6.4)
0.1234
均非真实结果
29
2009-7-29
如:
实际输出,换页后输出
§ 2 格式输出走纸控制符 含义
换行输出
0 换两行,即隔行输出
1 换页输出
+ 不换行,从上一个输出记录开头处重新叠打
$ 或 \ Continues the same record
其它字符 大多数 Fortran系统按“换行输出”处理
i=123
j=2347
write(*,100) i,j
100 format(i3,1x,i4)
23? 2347
预期输出:
123? 2347
30
2009-7-29
【 例 】 设 i=246,j=1234,执行,write(*,100)i,j”语句时使用下面不同 format语句的输出结果是什么?
format语句 说明 输出结果
format(1x,i3,i4)
format(‘? i=’,i3,‘j=‘,i4)
format(‘i=’,i3,‘j=’,i4)
format(i3,i4)
format(‘1’,i3,i4)
format(‘0’,i3,i4)
换行输出换行输出换行输出换行输出换页输出换两行输出
2461234
i=246j=1234
=246j=1234
461234
2461234
2461234
② 不同的 Fortran系统所使用的走纸控制符的符号及含义可能存在差别,使用时要具体分析。
在大部分系统,空格一般都代表换行。
§ 2 格式输出
31
2009-7-29
九、斜杠说明符 ( /)
/的作用,结束本输出记录,并开始一个新的输出记录。
如:设 i=246,a=12.36,j=35,b=173.5
注意:
① 若有两个连续的斜杠,则两个斜杠之间为一个空的输出记录,输出时输出一个空行。
write(*,100) i,a,j,b
100 format(1x,i3,f6.1 / 1x,i3,f6.1)
246 12.4
35? 173.5
§ 2 格式输出
32
2009-7-29
如:设 i=246,a=12.36,j=35,b=173.5
write(*,100) i,a,j,b
100 format(1x,i3,f6.1 // 1x,i3,f6.1)
246 12.4
35? 173.5
§ 2 格式输出
② 若在最后出现斜扛,则其后也是一个空的输出记录,
输出时同样输出一个空行。
write(*,100) i,a,j,b
100 format(1x,i3,f6.1 / 1x,i3,f6.1 / )
246 12.4
35? 173.5
33
2009-7-29
十、格式说明符的重复系数重复使用的格式说明符可以在其前加一个重复系数,
形式为,riw,rfw.d,rew.d,rdw.d,raw,rlw等,r为重复系数。
如:
如:
100 format(1x,i3,i3,f10.2,f10.2,f10.2)
100 format(1x,2i3,3f10.2)
100 format(1x,i4,1x,f10.2,i4,1x,f10.2)
100 format(1x,2(i4,1x,f10.2))
100 format(1x,2i4,2x,2f10.2)
§ 2 格式输出格式说明符组
(格式符个数 >1)
34
2009-7-29
如:设 i=246,a=12.36,j=35,b=173.5
write(*,100) i,a,j,b
100 format(1x,2(i3,f6.1,1x,'upc'))
write(*,100) i,a,j,b
100 format(1x,2(i3 / f6.1,1x,'upc'))
§ 2 格式输出
246 12.4? upc? 35? 173.5? upc
246
12.4? upc? 35
173.5? upc
100 format(1x,i3,f6.1,1x,'upc',i3,f6.1,1x,'upc')
100 format(1x,i3 / f6.1,1x,'upc',i3 / f6.1,1x,'upc')
35
2009-7-29
以上是格式输出时的主要说明符,包括,数据格式说明符 (整数、实数、双精度数、逻辑型、字符型 ),空格格式说明符,走纸控制符,斜杠说明符,以及格式说明符的重复系数 。
十一、格式输出的注意事项
① 基本原则,格式输出时,write语句输出表中的每个输出项 (不论是常量、变量、表达式 ),均需要在 format语句中有一个相对应的格式说明符,即 一个输出项对应一个数据格式说明符 (注:复型应有两个实型格式符)。
② 走纸控制符只能在输出语句中使用,用于对输出的换行进行控制;其余格式符在格式输入时也可以使用。
③ 当输出表中的 输出项个数 与 format语句中的 数据格式说明符个数不等 时,分两种情况处理:
§ 2 格式输出
36
2009-7-29
若输出项个数 <格式说明符个数,则 format语句中 多余的 数值格式说明符 不起作用,之前的所有格式符均起作用 。
如:设 i=246,a=12.36
若输出项个数 >格式说明符个数,则
若 format语句中 不存在包含重复系数的格式说明符组 (如,2(i4,1x,f10.2)),则 重新使用整个格式说明,
并产生一个新的输出记录 。
write(*,100) i,a
100 format(1x,i3,f6.1,1x,'upc',i3)
246 12.4? upc
§ 2 格式输出
37
2009-7-29
若输出项个数 >格式说明符个数,则
若 format语句中 不存在包含重复系数的格式说明符组 (如,2(i4,1x,f10.2)),则 重新使用整个格式说明,
并产生一个新的输出记录 。
如:设 i=246,a=12.36,j=35,b=173.5
§ 2 格式输出
write(*,100) i,a,j,b
100 format(1x,i3,f6.1,1x,'upc')
246 12.4? upc
35? 173.5? upc
100 format(1x,i3,f6.1,1x,'upc'/1x,i3,f6.1,1x,'upc')
38
2009-7-29
如:设 i=246,a=12.36,j=35,b=173.5
write(*,100) i,a,j,b
100 format(1x,i3 / f6.1,1x,'upc')
246
12.4? upc
35
173.5? upc
100 format(1x,i3 / f6.1,1x,'upc' / 1x,i3 / f6.1,1x,'upc')
§ 2 格式输出
39
2009-7-29
如:设 i=246,a=12.36,j=35,b=173.5
write(*,100) i,a,a+1,j,b
100 format(1x,i3,2f6.1,1x,'upc')
246 12.4 13.4? upc
35? 173.5
§ 2 格式输出
100 format(1x,i3,2f6.1,1x,'upc' / 1x,i3,2f6.1,1x,'upc')
40
2009-7-29
若输出项个数 >格式说明符个数,则
若 format语句中 不存在包含重复系数的格式说明符组 (如,2(i4,1x,f10.2)),则 重新使用整个格式说明,
并产生一个新的输出记录 。
若 format语句中 存在包含重复系数的格式说明符组,则 重新使用从最后一个包含重复系数的格式说明符组开始 (包括重复系数在内) 的所有格式符,并产生一个新的输出记录 。
如:教材 p160最下面的例子。
§ 2 格式输出
41
2009-7-29
如:设 i=246,a=12.36,j=35,b=173.5
write(*,100) i,a,a+1,b
100 format(1x,i3,2(f6.1,1x),'upc')
§ 2 格式输出
246 12.4 13.4? upc
173.5?
100 format(1x,i3,2(f6.1,1x),'upc' / 2(f6.1,1x),'upc' )
42
2009-7-29
如:设 i=246,a=12.36,j=35,b=173.5
§ 2 格式输出
write(*,100) i,a,a+1,b
100 format(1x,i3,2(f6.1,1x),'upc'/ )
246 12.4 13.4? upc
173.5?
注意,在 VF中运行 ppt中本章例子时,将输出结果中每行的第一列字符去掉即得到 ppt中的结果(原因:为防止出错,VF在每个输出记录前自动加上一个前导字符)。
100 format(1x,i3,2(f6.1,1x),'upc'/ / 2(f6.1,1x),'upc'/ )
43
2009-7-29
§ 3 格式输入 (p162-167)
格式输出中使用的格式说明符,除走纸控制符外,其余格式符均可在格式输入语句中使用
(具体包括,数据格式说明符 (整数、实数、双精度数、逻辑型、字符型 ),空格格式说明符,斜杠说明符,以及格式说明符的 重复系数 )。
格式输入中格式符的具体使用方法,不在考试范围内,感兴趣的同学可自学。
为避免出错,推荐使用表控 输入语句。
read(*,*) 输入变量表
44
2009-7-29
【 练习 】 教材 p169习题六 ⑴ ~ ⑺ 。
设 I=12,J=-123
A=48.56(0.4856× 102),B=-578.687(-0.578687× 103),
K=-4895,M=-12500,X=-1.5E+12(-0.15× 1013),
Y=168.874E-10(0.168874× 10-7)
write(*,100)I,J,A,B,K,M,X,Y
⑴ format(1x,I3,I4,F6.2,F10.2,I5,I6,E12.4,E12.4)
12-123? 48.56 -578.69-4895-12500? -0.1500e+13
0.1689e-07
⑵ format(3x,2I5,2F10.2,2I6,2E12.4)
format(3x,I5,I5,F10.2,F10.2,I6,I6,E12.4,E12.4)
12? -123 48.56 -578.69? -4895-12500
-0.1500e+13 0.1689e-07
45
2009-7-29
设 I=12,J=-123
A=48.56(0.4856× 102),B=-578.687(-0.578687× 103),
K=-4895,M=-12500,X=-1.5E+12(-0.15× 1013),
Y=168.874E-10(0.168874× 10-7)
write(*,100)I,J,A,B,K,M,X,Y
⑶ format('? I=',I3,'J=',I4,'A=',F6.2,'B=',F10.2,'K=',
I5,'M=',I6,'X=',E12.4,'Y=',E12.4)
I=? 12J=-123A=? 48.56B= -578.69K=-4895M=-12500
X=? -0.1500e+13Y= 0.1689e-07
I J A B
K M X Y
46
2009-7-29
format('? ',I4,2X,I4,2X,E12.4,2X,E12.4,2X,
I4,2X,I4,2X,E12.4,2X,E12.4,2X )
设 I=12,J=-123
A=48.56(0.4856× 102),B=-578.687(-0.578687× 103),
K=-4895,M=-12500,X=-1.5E+12(-0.15× 1013),
Y=168.874E-10(0.168874× 10-7)
write(*,100)I,J,A,B,K,M,X,Y
⑷ format('? ',2(I4,2X,I4,2X,E12.4,2X,E12.4,2X) )
12 -123 0.4856e+02 -0.5787e+03 ****
**** -0.1500e+13 0.1689e-07
I J A B
K M X Y
47
2009-7-29
format(2X,I4,2X,I4,2X,E12.4,2X,E12.4 / 2X,I4,
2X,I4,2X,E12.4,2X,E12.4)
设 I=12,J=-123
A=48.56(0.4856× 102),B=-578.687(-0.578687× 103),
K=-4895,M=-12500,X=-1.5E+12(-0.15× 1013),
Y=168.874E-10(0.168874× 10-7)
write(*,100)I,J,A,B,K,M,X,Y
⑸ format(2X,I4,2X,I4,2X,E12.4,2X,E12.4)
M X Y
I J A B K
12 -123 0.4856e+02 -0.5787e+03
**** **** -0.1500e+13 0.1689e-07 两行
48
2009-7-29
format(1X,I4,2X / I4,2X / E12.4,2X / E12.4 / 1X,I4,
2X / I4,2X / E12.4,2X / E12.4)
设 I=12,J=-123
A=48.56(0.4856× 102),B=-578.687(-0.578687× 103),
K=-4895,M=-12500,X=-1.5E+12(-0.15× 1013),
Y=168.874E-10(0.168874× 10-7)
write(*,100)I,J,A,B,K,M,X,Y
⑹ format(1X,I4,2X / I4,2X / E12.4,2X / E12.4)
M X Y
I J A B K
49
2009-7-29
format(1X,I4,2X / I4,2X / E12.4,2X / E12.4 / 1X,I4,
2X / I4,2X / E12.4,2X / E12.4)
I J A B
M X Y
K
设 I=12,J=-123,A=48.56(0.4856× 102),B=-
578.687(-0.578687× 103),K=-4895,M=-12500,X=-
1.5E+12(-0.15× 1013),Y=168.874E-10(0.168874× 10-7)
12
123
0.4856e+02
-0.5787e+03
****
***
-0.1500e+13
0.1689e-07
八行
50
2009-7-29
format(//1X,I4//1X,I4,2X//1X,E12.4,2X//1X,E12.4
/ //1X,I4//1X,I4,2X//1X,E12.4,2X//1X,E12.4)
设 I=12,J=-123
A=48.56(0.4856× 102),B=-578.687(-0.578687× 103),
K=-4895,M=-12500,X=-1.5E+12(-0.15× 1013),
Y=168.874E-10(0.168874× 10-7)
write(*,100)I,J,A,B,K,M,X,Y
⑺ format(//1X,I4//1X,I4,2X//1X,E12.4,2X//1X,E12.4)
I J A B
M X YK
51
2009-7-29
12
-123
0.4856e+02
-0.5787e+03
format(//1X,I4//1X,I4,2X//1X,E12.4,2X//1X,E12.4
/ //1X,I4//1X,I4,2X//1X,E12.4,2X//1X,E12.4)
I J A B
M X YK
****
****
-0.1500e+13
0.1689e-07
十八行
52
2009-7-29
【 练习 】 教材 p169习题七。
设 I=512,J=612,A=18.34,B=-21.4,C=112.463,
D=-2174.573
write(*,100)I,J,A,B,C,D
⑴ format(1X,I5,2X,I5,2X,2(F10.2,2X),F12.1 )
format(1X,I5,2X,I5,2X,F10.2,2X,F10.2,2X,
F12.1 / F10.2,2X,F10.2,2X,F12.1)
I J A B
DC
512 612 18.34 -21.40
112.5
-2174.57 两行
53
2009-7-29
设 I=512,J=612,A=18.34,B=-21.4,C=112.463,
D=-2174.573
write(*,100)I,J,A,B,C,D
⑵ format(3x,2(I4,2X),2(F10.2,2X),'NEW' )
format(3X,I4,2X,I4,2X,F10.2,2X,F10.2,2X,
'NEW' / F10.2,2X,F10.2,2X,'NEW')
I J A B
DC
512 612 18.34 -21.40 NEW
112.46 -2174.57 NEW 两行
54
2009-7-29
2009-7-29
第 7章 数据的输入输出
§ 1 输入输出概述
§ 2 格式输出
§ 3 格式输入练 习
2
2009-7-29
输入输出 是指在 计算机内存 与 外部设备 之间传送数据的过程。
从外部设备将数据传送到计算机内存 称为 输入 。
将计算机内存的数据传送到外部设备 称为 输出 。
要顺利地传送数据,一般应在输入输出语句中给计算机提供三方面的信息:
① 通过什么 设备 来进行输入输出。
② 采用什么样的 格式 来进行输入输出。
③ 输入输出的具体 内容 。
§ 1 输入输出概述 (p128-129)
§ 1 输入输出概述
3
2009-7-29
一,Fortran的输出语句一般格式:
输出表,一个或多个用逗号隔开的需要输出的 变量,常量 或 表达式 。(输出内容)
u是设备号,用于指明具体使用的输出设备。
u可以是一个 正整数,代表一个输出设备;
u也可以是一个 星号 *,代表系统默认的输出设备,一般指显示器。
write(u,f) 输出表
§ 1 输入输出概述
4
2009-7-29
f 指定输出所用的格式,有两种形式:
f 可以是一个 星号,代表系统默认的输出格式;
f 也可以是一个 语句标号 s,通过语句标号指向一个格式语句( format语句)。
以 显示器 为输出设备的格式输出语句的一般形式:
write(u,f) 输出表如:表控输出语句 使用系统默认的输出格式。
write(*,*) 输出表
write(*,s) 输出表
s format(格式说明符 )
§ 1 输入输出概述
5
2009-7-29
格式输出语句:
功能,输出时,根据语句标号 s找到 format语句,对输出表中的每个输出项 按照 format语句中格式说明符指定的格式 进行输出。
format语句,称为 格式语句,是一个非执行语句,不产生任何操作,只是给输出语句提供输出的格式描述。
格式说明符,也称为 格式编辑符 或 编辑描述符,多个格式说明符之间用逗号分隔。
基本原则,在格式输出时,write语句输出表中的 每个输出项 (不论是常量、变量、表达式),在 format语句中均需要有一个格式说明符相对应 。
write(*,s) 输出表
s format(格式说明符 )
§ 1 输入输出概述
6
2009-7-29
二,Fortran的输入语句一般格式:
输入变量表,需要输入数据的 变量,多个变量时用逗号分隔。(输入内容)
u是设备号,用于指明具体使用的输入设备。
u可以是一个 正整数,代表一个输入设备;
u也可以是一个 星号 *,代表系统默认的输入设备,一般指键盘。
read(u,f) 输入变量表
§ 1 输入输出概述
7
2009-7-29
§ 1 输入输出概述
f 指定输入所用的格式,有两种形式:
f 可以是一个 星号,代表系统默认的输入格式;
f 也可以是一个 语句标号 s,通过语句标号指向一个格式语句。
以 键盘 为输入设备的格式输入语句的一般形式:
read(u,f) 输入变量表如:表控输入语句 使用系统默认的输入格式。
read(*,*) 输入变量表
read(*,s) 输入变量表
s format(格式说明符 )
8
2009-7-29
【 引例 】
格式说明符 包括,数据格式说明符 (整数、实数、
双精度数、复数、逻辑型、字符型 ),空格格式说明符,走纸控制符,斜杠说明符、单引号说明符等。
另外还有格式说明符的 重复系数 。
§ 2 格式输出 (p147-161)
k=125
a=321.65
write(*,10) k,a
10 format(1x,i3,1x,f 7.2)
125 321.65
§ 2 格式输出
9
2009-7-29
一、整型格式说明符
i或 I,用于整型数据的输入输出。
格式,iw或 Iw
其中,w是一个整数,称为 字段宽度 (场宽 ),即数据输出所占的位数。
功能,按照 w指定的位数 输出整数 。
如:
40 -12 123
§ 2 格式输出
j=40
k=-12
l=123
write(*,100) j,k,l
100 format(1x,i3,i5,i7)
10
2009-7-29
注意:
① 若整数的实际位数 <w,数据靠右对齐,左补空格;
② 负整数的符号也算一位;
③ 若 数据的实际位数 >w,输出 w个星号 *。
40 -12 123***
§ 2 格式输出
j=40
k=-12
l=123
write(*,100) j,k,l
100 format(1x,i3,i5,i7)
j=- 400
11
2009-7-29
二、实型格式说明符
1,以小数形式输出 ( f或 F)
格式,fw.d或 Fw.d
其中,w为字段宽度,是数据输出的总位数; d
为小数点后面小数部分的位数。
要输出的值 格式符 输出结果
1640 i5
-8763 i8
-67896 i5
§ 2 格式输出
1640
-8763
*****
12
2009-7-29
① 若实际小数位数 <d,小数部分右补 0。
② 若实际小数位数 >d,小数部分四舍五入。
③ 设实数的整数部分位数为 b,小数部分位数为 d,则总位数 w应设置为:
对于正数,w≥b+d+1(小数点一位);
对于负数,w≥b+d+2(小数点一位,符号一位)。
§ 2 格式输出
a=15.8
b=-746.578
c=873.2
write(*,100) a,b,c
100 format(1x,f6.1,f9.2,f7.2)
15.8 -746.58? 873.20
13
2009-7-29
要输出的值 格式符 输出结果
18.5 f6.2
1875.478 f9.2
-78567.83 f9.3
0.000678576 f10.4
18.50
1875.48
*********
0.0007
④ 由于一般难以提前估计出输出数据的值,使用 f格式说明符容易出现,大数不印,小数印丢 的现象。
a=2347856.0
b=0.000001234
write(*,100) a,b
100 format(1x,f9.2,f12.3)
********* 0.000
§ 2 格式输出
14
2009-7-29
2,以指数形式输出 ( e或 E)
格式,ew.d或 Ew.d
功能,以规格化指数形式输出 (0≤abs(数字部分 )< 1)。
其中 w为数据输出的总位数,d为数字部分的小数位数。
如,a=15.8
b=-746.578
c=873.2
write(*,100) a,b,c
100 format(1x,e15.6,e12.4,e9.3)
0.158000e+02? -0.7466e+030.873e+03
§ 2 格式输出
15
2009-7-29
① 指数部分占 4位,其中字母 e一位,指数的符号 +或 -
占一位,指数 2位(默认)。
② 数字部分的小数位数为 d位,小数点一位,小数点前的零占一位,符号占一位,则总位数 w至少为:
对于正数,w≥1+1+d+4,即 w≥d+6;
对于负数,w≥1+1+1+d+4,即 w≥d+7。
a=15.8
b=-746.578
c=873.2
write(*,100) a,b,c
100 format(1x,e15.6,e12.4,e9.3)
0.158000e+02? -0.7466e+030.873e+03
§ 2 格式输出
16
2009-7-29
③ e型格式说明符可以避免 f型的“大数不印、小数印丢”的现象。
④ Fortran77允许用户指定指数的位数,
格式,ew.dep ( 其中,p为指数的位数)
如:输出 2347856.0,格式为 e16.7e3,则输出结果为:
0.2347856e+007
0.2347856e+07 0.1234000e-05
§ 2 格式输出
a=2347856.0
b=0.000001234
write(*,100) a,b
100 format(1x,e16.7,e16.7)
17
2009-7-29
实型格式符的说明,f型和 e型是实数常用的两种格式说明符,至于使用哪个,由使用者自行确定。
要输出的值 格式符 输出结果
123.45 e12.4
-0.005 e11.3
876.53 e8.3
7621.2 e15.6e3
0.1235e+03
-0.500e-02
********
0.762120e+004
§ 2 格式输出实数在计算机中有两种表示形式小数形式指数形式实数的格式说明符
f型
e型
18
2009-7-29
三、双精度型格式说明符 ( d或 D)
格式,dw.d
功能,以指数形式输出,0≤abs(数字部分 )< 1。
其中,w为数据输出的总位数,d为数字部分小数位数。
如:
§ 2 格式输出
double precision d1,d2
d1=1.378675893d2
d2=1784.5d-3
write(*,100) d1,d2
100 format(1x,d18.10,d18.7)
0.1378675893d+03 0.1784500d+01
19
2009-7-29
注,双精度数据也可使用实型格式说明符输出。
§ 2 格式输出双精度数在计算机中只有一种表示形式指数形式指数形式,d型
f型或 e型的形式输出形式
double precision d1,d2
d1=1.378675893d2
d2=1784.5d-3
write(*,100) d1,d2
100 format(1x,f18.10,e18.7)
137.8675893000 0.1784500e+01
20
2009-7-29
四、复型的格式输出复数没有专门的格式符;输出时,可用两个实数的格式说明符( f型或 e型)进行格式输出。
如:
§ 2 格式输出
complex c1,c2
c1=(1.2,2.5)
c2=(3.0,-4.5)
write(*,100) c1,c2
100 format(1x,f5.2,f5.2,2x,e10.2,e10.2)
1.20? 2.50 0.30e+01? -0.45e+01
① 注意与表控输出语句的区别。
write(*,*) c1,c2
若上述输出语句改为:
(1.2000000,2.5000000) (3.0000000,-4.5000000)
21
2009-7-29
§ 2 格式输出
1.20? 2.50 0.30e+01? -0.45e+01
② 为了增加可读性,可以人为地加上‘ +’和表示虚部的符号‘ i’。
100 format(1x,f5.2,‘+’,f5.2,‘i’,2x,f5.2,f5.2,‘i’)
可将上述 format语句改为:
1.20+? 2.50i 3.00-4.50i
write(*,100) c1,‘i’,c2,‘i’
100 format(1x,f5.2,‘+’,f5.2,a,2x,f5.2,f5.2,a)
complex c1,c2
c1=(1.2,2.5)
c2=(3.0,-4.5)
write(*,100) c1,c2
100 format(1x,f5.2,f5.2,2x,e10.2,e10.2)
22
2009-7-29
五、逻辑型格式说明符 ( l或 L)
用于逻辑型数据的输入输出。
格式,lw或 Lw
同样,w是字段宽度,用于指定逻辑型数据的输出位数。
① 无论采用表控输出还是格式输出,逻辑真,true.输出一个字母 T,逻辑假输出一个字母 F。
② 对于格式输出,当 w>1位时,输出的 T或 F靠右对齐,左补空格 。
§ 2 格式输出
23
2009-7-29
【 例 7.1】
六、字符型格式说明符 ( a或 A)
用于字符型数据的输入输出。
格式,① aw或 Aw ② a或 A
注意:
① 若在 a后面不指定 w,表示按字符的实际长度输出。
logical L1,L2
L1=.true.
L2=.false.
write(*,100) L1,L2,.true,
100 format(1x,l4,l5,l2)
end
T F? T
§ 2 格式输出
24
2009-7-29
② 实际长度 <w,输出的字符串 靠右对齐,左补空格 。
③ 实际长度 >w,不是输出星号 *,而是字符串 从左输出 w个字符,截去右边的字符 。
④ 表控格式输出时,输出表中可以输出字符串。
如:
§ 2 格式输出要输出的字符串 格式符 输出结果
format a7
china a5
beijing a6
fortran a
format
chin
beijin
fortran
write(*,*)‘i=’,i,‘j=’,j
25
2009-7-29
格式语句输出时,输出字符串的方法有两种:
与表控语句一样,可在 write语句的输出表中输出字符串,但 需在 format语句中用 a型格式符说明 ;
如:
可将需要输出的字符串放在 format语句中。
如:
§ 2 格式输出
write(*,100)‘i=’,i,‘j=’,j
100 format(1x,a,i4,a,i5)
i=123
j=2347
write(*,100) i,j
100 format(1x,‘i=’,i4,‘j=’,i5)
i=? 123j=? 2347
26
2009-7-29
七、空格格式说明符 ( x或 X)
格式,nx或 nX
功能,输出时产生 n个空格,不需输出表元素对应。
其中,n为正整数,是需要输出的空格个数。
如:
格式语句中的第一个空格( 1x),作为 走纸控制符 使用,并不输出。
i=146
a=124.32
b=1247.32
write(*,100) i,a,b
100 format(1x,i4,2x,f6.2,2x,e12.5)
146 124.32 0.12473e+03
§ 2 格式输出
27
2009-7-29
八、走纸控制符( Compaq Visual Fortran中不存在 )
用于在输出时对换行进行控制,如:不换行输出、换行输出、换两行输出、换页输出、等等。
输出记录,外部介质上的一个输出单位(譬如显示器的一行)。
如:
输出记录:
i=146
a=124.32
b=1247.32
write(*,100) i,a,b
100 format(1x,i4,2x,f6.2,2x,e12.5)
146 124.32 0.12473e+03
§ 2 格式输出
28
2009-7-29
注意:
① 标准 Fortran77规定:在格式输出中,每个输出记录的 第一个字符 作为走纸控制符,该字符不再被输出,而从输出记录的第二个字符开始输出 。
§ 2 格式输出
read(*,101) 2.1234
101 format(f6.4)
.1234
read(*,101)-0.1234
101 format(f6.4)
0.1234
均非真实结果
29
2009-7-29
如:
实际输出,换页后输出
§ 2 格式输出走纸控制符 含义
换行输出
0 换两行,即隔行输出
1 换页输出
+ 不换行,从上一个输出记录开头处重新叠打
$ 或 \ Continues the same record
其它字符 大多数 Fortran系统按“换行输出”处理
i=123
j=2347
write(*,100) i,j
100 format(i3,1x,i4)
23? 2347
预期输出:
123? 2347
30
2009-7-29
【 例 】 设 i=246,j=1234,执行,write(*,100)i,j”语句时使用下面不同 format语句的输出结果是什么?
format语句 说明 输出结果
format(1x,i3,i4)
format(‘? i=’,i3,‘j=‘,i4)
format(‘i=’,i3,‘j=’,i4)
format(i3,i4)
format(‘1’,i3,i4)
format(‘0’,i3,i4)
换行输出换行输出换行输出换行输出换页输出换两行输出
2461234
i=246j=1234
=246j=1234
461234
2461234
2461234
② 不同的 Fortran系统所使用的走纸控制符的符号及含义可能存在差别,使用时要具体分析。
在大部分系统,空格一般都代表换行。
§ 2 格式输出
31
2009-7-29
九、斜杠说明符 ( /)
/的作用,结束本输出记录,并开始一个新的输出记录。
如:设 i=246,a=12.36,j=35,b=173.5
注意:
① 若有两个连续的斜杠,则两个斜杠之间为一个空的输出记录,输出时输出一个空行。
write(*,100) i,a,j,b
100 format(1x,i3,f6.1 / 1x,i3,f6.1)
246 12.4
35? 173.5
§ 2 格式输出
32
2009-7-29
如:设 i=246,a=12.36,j=35,b=173.5
write(*,100) i,a,j,b
100 format(1x,i3,f6.1 // 1x,i3,f6.1)
246 12.4
35? 173.5
§ 2 格式输出
② 若在最后出现斜扛,则其后也是一个空的输出记录,
输出时同样输出一个空行。
write(*,100) i,a,j,b
100 format(1x,i3,f6.1 / 1x,i3,f6.1 / )
246 12.4
35? 173.5
33
2009-7-29
十、格式说明符的重复系数重复使用的格式说明符可以在其前加一个重复系数,
形式为,riw,rfw.d,rew.d,rdw.d,raw,rlw等,r为重复系数。
如:
如:
100 format(1x,i3,i3,f10.2,f10.2,f10.2)
100 format(1x,2i3,3f10.2)
100 format(1x,i4,1x,f10.2,i4,1x,f10.2)
100 format(1x,2(i4,1x,f10.2))
100 format(1x,2i4,2x,2f10.2)
§ 2 格式输出格式说明符组
(格式符个数 >1)
34
2009-7-29
如:设 i=246,a=12.36,j=35,b=173.5
write(*,100) i,a,j,b
100 format(1x,2(i3,f6.1,1x,'upc'))
write(*,100) i,a,j,b
100 format(1x,2(i3 / f6.1,1x,'upc'))
§ 2 格式输出
246 12.4? upc? 35? 173.5? upc
246
12.4? upc? 35
173.5? upc
100 format(1x,i3,f6.1,1x,'upc',i3,f6.1,1x,'upc')
100 format(1x,i3 / f6.1,1x,'upc',i3 / f6.1,1x,'upc')
35
2009-7-29
以上是格式输出时的主要说明符,包括,数据格式说明符 (整数、实数、双精度数、逻辑型、字符型 ),空格格式说明符,走纸控制符,斜杠说明符,以及格式说明符的重复系数 。
十一、格式输出的注意事项
① 基本原则,格式输出时,write语句输出表中的每个输出项 (不论是常量、变量、表达式 ),均需要在 format语句中有一个相对应的格式说明符,即 一个输出项对应一个数据格式说明符 (注:复型应有两个实型格式符)。
② 走纸控制符只能在输出语句中使用,用于对输出的换行进行控制;其余格式符在格式输入时也可以使用。
③ 当输出表中的 输出项个数 与 format语句中的 数据格式说明符个数不等 时,分两种情况处理:
§ 2 格式输出
36
2009-7-29
若输出项个数 <格式说明符个数,则 format语句中 多余的 数值格式说明符 不起作用,之前的所有格式符均起作用 。
如:设 i=246,a=12.36
若输出项个数 >格式说明符个数,则
若 format语句中 不存在包含重复系数的格式说明符组 (如,2(i4,1x,f10.2)),则 重新使用整个格式说明,
并产生一个新的输出记录 。
write(*,100) i,a
100 format(1x,i3,f6.1,1x,'upc',i3)
246 12.4? upc
§ 2 格式输出
37
2009-7-29
若输出项个数 >格式说明符个数,则
若 format语句中 不存在包含重复系数的格式说明符组 (如,2(i4,1x,f10.2)),则 重新使用整个格式说明,
并产生一个新的输出记录 。
如:设 i=246,a=12.36,j=35,b=173.5
§ 2 格式输出
write(*,100) i,a,j,b
100 format(1x,i3,f6.1,1x,'upc')
246 12.4? upc
35? 173.5? upc
100 format(1x,i3,f6.1,1x,'upc'/1x,i3,f6.1,1x,'upc')
38
2009-7-29
如:设 i=246,a=12.36,j=35,b=173.5
write(*,100) i,a,j,b
100 format(1x,i3 / f6.1,1x,'upc')
246
12.4? upc
35
173.5? upc
100 format(1x,i3 / f6.1,1x,'upc' / 1x,i3 / f6.1,1x,'upc')
§ 2 格式输出
39
2009-7-29
如:设 i=246,a=12.36,j=35,b=173.5
write(*,100) i,a,a+1,j,b
100 format(1x,i3,2f6.1,1x,'upc')
246 12.4 13.4? upc
35? 173.5
§ 2 格式输出
100 format(1x,i3,2f6.1,1x,'upc' / 1x,i3,2f6.1,1x,'upc')
40
2009-7-29
若输出项个数 >格式说明符个数,则
若 format语句中 不存在包含重复系数的格式说明符组 (如,2(i4,1x,f10.2)),则 重新使用整个格式说明,
并产生一个新的输出记录 。
若 format语句中 存在包含重复系数的格式说明符组,则 重新使用从最后一个包含重复系数的格式说明符组开始 (包括重复系数在内) 的所有格式符,并产生一个新的输出记录 。
如:教材 p160最下面的例子。
§ 2 格式输出
41
2009-7-29
如:设 i=246,a=12.36,j=35,b=173.5
write(*,100) i,a,a+1,b
100 format(1x,i3,2(f6.1,1x),'upc')
§ 2 格式输出
246 12.4 13.4? upc
173.5?
100 format(1x,i3,2(f6.1,1x),'upc' / 2(f6.1,1x),'upc' )
42
2009-7-29
如:设 i=246,a=12.36,j=35,b=173.5
§ 2 格式输出
write(*,100) i,a,a+1,b
100 format(1x,i3,2(f6.1,1x),'upc'/ )
246 12.4 13.4? upc
173.5?
注意,在 VF中运行 ppt中本章例子时,将输出结果中每行的第一列字符去掉即得到 ppt中的结果(原因:为防止出错,VF在每个输出记录前自动加上一个前导字符)。
100 format(1x,i3,2(f6.1,1x),'upc'/ / 2(f6.1,1x),'upc'/ )
43
2009-7-29
§ 3 格式输入 (p162-167)
格式输出中使用的格式说明符,除走纸控制符外,其余格式符均可在格式输入语句中使用
(具体包括,数据格式说明符 (整数、实数、双精度数、逻辑型、字符型 ),空格格式说明符,斜杠说明符,以及格式说明符的 重复系数 )。
格式输入中格式符的具体使用方法,不在考试范围内,感兴趣的同学可自学。
为避免出错,推荐使用表控 输入语句。
read(*,*) 输入变量表
44
2009-7-29
【 练习 】 教材 p169习题六 ⑴ ~ ⑺ 。
设 I=12,J=-123
A=48.56(0.4856× 102),B=-578.687(-0.578687× 103),
K=-4895,M=-12500,X=-1.5E+12(-0.15× 1013),
Y=168.874E-10(0.168874× 10-7)
write(*,100)I,J,A,B,K,M,X,Y
⑴ format(1x,I3,I4,F6.2,F10.2,I5,I6,E12.4,E12.4)
12-123? 48.56 -578.69-4895-12500? -0.1500e+13
0.1689e-07
⑵ format(3x,2I5,2F10.2,2I6,2E12.4)
format(3x,I5,I5,F10.2,F10.2,I6,I6,E12.4,E12.4)
12? -123 48.56 -578.69? -4895-12500
-0.1500e+13 0.1689e-07
45
2009-7-29
设 I=12,J=-123
A=48.56(0.4856× 102),B=-578.687(-0.578687× 103),
K=-4895,M=-12500,X=-1.5E+12(-0.15× 1013),
Y=168.874E-10(0.168874× 10-7)
write(*,100)I,J,A,B,K,M,X,Y
⑶ format('? I=',I3,'J=',I4,'A=',F6.2,'B=',F10.2,'K=',
I5,'M=',I6,'X=',E12.4,'Y=',E12.4)
I=? 12J=-123A=? 48.56B= -578.69K=-4895M=-12500
X=? -0.1500e+13Y= 0.1689e-07
I J A B
K M X Y
46
2009-7-29
format('? ',I4,2X,I4,2X,E12.4,2X,E12.4,2X,
I4,2X,I4,2X,E12.4,2X,E12.4,2X )
设 I=12,J=-123
A=48.56(0.4856× 102),B=-578.687(-0.578687× 103),
K=-4895,M=-12500,X=-1.5E+12(-0.15× 1013),
Y=168.874E-10(0.168874× 10-7)
write(*,100)I,J,A,B,K,M,X,Y
⑷ format('? ',2(I4,2X,I4,2X,E12.4,2X,E12.4,2X) )
12 -123 0.4856e+02 -0.5787e+03 ****
**** -0.1500e+13 0.1689e-07
I J A B
K M X Y
47
2009-7-29
format(2X,I4,2X,I4,2X,E12.4,2X,E12.4 / 2X,I4,
2X,I4,2X,E12.4,2X,E12.4)
设 I=12,J=-123
A=48.56(0.4856× 102),B=-578.687(-0.578687× 103),
K=-4895,M=-12500,X=-1.5E+12(-0.15× 1013),
Y=168.874E-10(0.168874× 10-7)
write(*,100)I,J,A,B,K,M,X,Y
⑸ format(2X,I4,2X,I4,2X,E12.4,2X,E12.4)
M X Y
I J A B K
12 -123 0.4856e+02 -0.5787e+03
**** **** -0.1500e+13 0.1689e-07 两行
48
2009-7-29
format(1X,I4,2X / I4,2X / E12.4,2X / E12.4 / 1X,I4,
2X / I4,2X / E12.4,2X / E12.4)
设 I=12,J=-123
A=48.56(0.4856× 102),B=-578.687(-0.578687× 103),
K=-4895,M=-12500,X=-1.5E+12(-0.15× 1013),
Y=168.874E-10(0.168874× 10-7)
write(*,100)I,J,A,B,K,M,X,Y
⑹ format(1X,I4,2X / I4,2X / E12.4,2X / E12.4)
M X Y
I J A B K
49
2009-7-29
format(1X,I4,2X / I4,2X / E12.4,2X / E12.4 / 1X,I4,
2X / I4,2X / E12.4,2X / E12.4)
I J A B
M X Y
K
设 I=12,J=-123,A=48.56(0.4856× 102),B=-
578.687(-0.578687× 103),K=-4895,M=-12500,X=-
1.5E+12(-0.15× 1013),Y=168.874E-10(0.168874× 10-7)
12
123
0.4856e+02
-0.5787e+03
****
***
-0.1500e+13
0.1689e-07
八行
50
2009-7-29
format(//1X,I4//1X,I4,2X//1X,E12.4,2X//1X,E12.4
/ //1X,I4//1X,I4,2X//1X,E12.4,2X//1X,E12.4)
设 I=12,J=-123
A=48.56(0.4856× 102),B=-578.687(-0.578687× 103),
K=-4895,M=-12500,X=-1.5E+12(-0.15× 1013),
Y=168.874E-10(0.168874× 10-7)
write(*,100)I,J,A,B,K,M,X,Y
⑺ format(//1X,I4//1X,I4,2X//1X,E12.4,2X//1X,E12.4)
I J A B
M X YK
51
2009-7-29
12
-123
0.4856e+02
-0.5787e+03
format(//1X,I4//1X,I4,2X//1X,E12.4,2X//1X,E12.4
/ //1X,I4//1X,I4,2X//1X,E12.4,2X//1X,E12.4)
I J A B
M X YK
****
****
-0.1500e+13
0.1689e-07
十八行
52
2009-7-29
【 练习 】 教材 p169习题七。
设 I=512,J=612,A=18.34,B=-21.4,C=112.463,
D=-2174.573
write(*,100)I,J,A,B,C,D
⑴ format(1X,I5,2X,I5,2X,2(F10.2,2X),F12.1 )
format(1X,I5,2X,I5,2X,F10.2,2X,F10.2,2X,
F12.1 / F10.2,2X,F10.2,2X,F12.1)
I J A B
DC
512 612 18.34 -21.40
112.5
-2174.57 两行
53
2009-7-29
设 I=512,J=612,A=18.34,B=-21.4,C=112.463,
D=-2174.573
write(*,100)I,J,A,B,C,D
⑵ format(3x,2(I4,2X),2(F10.2,2X),'NEW' )
format(3X,I4,2X,I4,2X,F10.2,2X,F10.2,2X,
'NEW' / F10.2,2X,F10.2,2X,'NEW')
I J A B
DC
512 612 18.34 -21.40 NEW
112.46 -2174.57 NEW 两行
54
2009-7-29