FORTRAN语言程序设计复习指导
FORTRAN语言是世界上广泛流行的,最适用于数值计算的一种计算机语言,是世界上最早出现的高级语言。江苏广播电视大学为了满足大专学生学习知识,应试和实际的需要,特选用清华大学出版社谭浩强教授等编写的《FORTRAN语言—FORTRAN
77结构化程序设计》一书作为教材。现就教材部分章节中的重点和难点做进一步的说明并给出综合练习,以便学生更好的复习,巩固所学的知识。
第一章 算法
理解算法的概念,掌握算法的特性。
掌握流程图表示算法,三种基本结构及改进的流程图。
熟练掌握用N-S流程图,伪代码,PAD图表示算法。
第二章 计算机和计算机程序
了解电子计算机的特点,用途。
掌握计算机的基本组成,存储信息的方法。
理解机器语言,符号语言,算法语言,非过程化的语言,计算机程序。
掌握程序开发的步骤,软件生命期和软件工程的概念。
掌握结构化程序设计方法。掌握自顶向下,逐步细化的设计方法。
第三章 FORTRAN语言程序设计初步
了解FORTRAN语言发展概况
掌握FORTRAN源程序的书写格式,输入方式。
掌握常量,变量的定义及表示形式,掌握常用的内部函数,算术表达式的含义和表示方法。
掌握赋值语句,输入输出语句的格式。
第四章 逻辑运算和选择结构
掌握关系表达式,逻辑表达式
掌握用块IF实现选择结构及逻辑IF语句。
第五章 循环结构的实现
掌握用GOTO语句实现循环的方法,用DO语句实现循环
掌握当型循环、直到型循环的实现
第六章 FORTRAN的数据结构
了解程序中的数据结构
掌握整型、实型、双精度、复型数据之间的转换和运算。
掌握字符型数据的定义和用法。
第七章 数据的输入输出
掌握用I,F,E,G,D,L,A,H,X等编辑符格式输出
掌握格式输入的一般形式,几种常用数据类型的输入
第八章 常用算法的程序设计举例
掌握求数值积分的矩形法,梯形法,幸普生法。
掌握解一元方程的迭代法,牛顿迭代法,
第九章 数组
掌握数组的基本概念,数组的逻辑结构和存储结构。
掌握一维和二维数组的输入和输出操作。掌握使用DATA语句给数组赋初值。
会分析,编写利用数组进行数据存储和处理的简单程序。
第十章 语句函数
掌握语句函数的概念、定义
会引用语句函数。
第十一章 子程序
掌握函数子程序的定义及调用,子例行程序的定义及调用。
掌握实参和虚参及之间的数据传送。
理解利用子程序实现程序的模块化设计。
会分析,编写使用子程序实现的简单程序。
第十二章 数据共用存储单元和数据块子程序
了解等价语句的形式及使用规则
了解无名公用区和有名公用区的使用。
了解数据块子程序的说明形式及规则。
第十三章 文件
了解文件的概念及FORTRAN语言对文件处理的基本思想和方法。
掌握有格式顺序存取文件、直接存取文件,无格式文件的存取。
掌握OPEN,CLOSE等常用的文件操作语句。
综合练习
一、
选择题
1. 一个完整的FORTRAN77的程序单位的最后一行必须是语句______。
A) RETURN B) CONTINUE C) STOP D) END
2. 下列说法正确的是______。
A) 以I-N字母为首的变量名只能作为整形变量名使用
B) 以FORTRAN77字符集中的任一字符为首的变量名均是合法的FORTRAN语句变量名
C) 要想把以字符Y为首的所有变量确定为整形变量,可以用IMPLICIT语句进行说明
D) 要想把以字符Y为首的变量名确定为整形变量,不可以用类型说明语句
3. 下列数据中合法的FORTRAN77常量是______。
A) 10**4 B)T C)5.1D-3 D) 9*7/7
4. 根据I-N规则,以下全部为实型变量名的一组是______。
A) QBASIC S8EA SUN Z80
B) OUT 6B KISS 386
C) 1A DRL ABC GYJ
D) A(2,3) MISS UFO A*
5. 对语句IMPLICIT REAL(I,L)作用解释正确的是______。
A) I和L两变量为实型
B) I,J,K,L为实型变量
C) 凡以字母I-L开头的变量均为实型变量
D) 凡以字母I和L开头的变量均为实型变量
6. 以下表达式为5的是______。
A) SQRT(25.0) B)25**0.5 C)10*0.25 D) MOD(25,10)
7. 数学不等式|x1-x0|<10-3的FORTRAN77表达式是______ 。
A) ABS(X1-X0)<0.001
B) ABS(X1-X0).LT.1E-3.0
C) ABS(X1-X0).LT.1E-3
D) ABS(X1-X0).LT.(-1)E3
8. 以下能表示条件“X,Y中至少有一个大于等于10或小于5”的逻辑表达式是______。
A)(0.LT.X.LE.10).OR.(0.LT.Y.LE.10)
B) (0.LT.X.AND.X.LE.10).AND.(0.LT.Y.AND.Y.LE.10)
C) (0.LT.X.AND.X.LE.10).OR.(0.LT.Y.AND.Y.LE.10)
D) 0.LT.(X.OR.Y).LE.10
9. 在一个表达式中,运算的先后顺序是______。
A) 算术表达式 逻辑表达式 关系表达式
B) 关系表达式 算术运算符 逻辑运算符
C) 逻辑表达式 算术表达式 关系表达式
D) 算术表达式 关系表达式 逻辑表达式
10. 下面正确的逻辑IF语句是______。
A) IF(NX.EQ.NY) THEN GOTO 10
B) IF A.LT.B PRINT *
C) IF (ABS(X).LE.1E-5) X=5
D) IF (S.AND.(S.LE.2.0)) S=2*3)
11. 下面程序段中,循环体的执行次数是______。
DO 10,I=- 1,- 10,- 2
N=N+1
M=2*N+M
10 CONTINUE
END
A) 0 B)4 C)5 D) 6
12. 以下正确的描述是______。
A) 循环终端语句可以是任何语句
B) 循环终端语句可以是任意的控制转移语句
C) 非可执行语句不能作为循环终端语句
D) 循环终端语句只能是CONTINUE语句
13. 设Z是复型变量、X和Y为实型变量,下列赋值语句中不合法的是______。
A) Z=X+Y
B) Z=(X,Y)
C) Z=(X+Y,X-Y)
D) Z=(Y,X)
14. 以下程序段的执行结果是______。
X=37.625
WRITE(*,’(1X,F5.2)’)X
A) * * * * * B)37.63 C)37.62 D)出现格式错误信息
15. 以下四种FORTRAN 77 格式编辑符中,适用于实型变量输出的有______。
A) Gw.d B) Aw C) Lw D) Iw.d
16. 若有语句:INTEGER B(-1:2,3:7),则数组B中所包含的元素个数为______。
A) 12 B)15 C)20 D)24
17. 以下不正确的描述是______。
A) 不能在数组说明语句中对一个数组重复说明
B) DIMENSION语句可用来说明数组及数组的类型
C) 同一程序单位中,对某个数组的定义只能有一次
D) DIMENSION 语句是非执行语句
18. 以下定义正确的语句函数是______。
A) SU(X,2)=X+2
B) SU(X,Y)=X+Y
C) SU(X,X)=X+Y
D) SU(3*A)=1.0/3.0+A
19. 以下描述中正确的是______。
A) 形参是数组名时,对应的实参只能是数组名
B) 形参和实参数组是字符类型时,形参数组的字符总数必须等于实参数组的字符总数
C) 形参和实参数组是字符类型时,虚实结合是按数组元素的顺序一一对应结合的
D) 形参和实参数组是字符类型时,形参数组允许的字符总数必须小于等于实参数组允许的字符总数
20. 下面关于函数子程序的描述中正确的是______。
A) 函数值只能通过函数名返回
B) 函数子程序中可以不对函数名赋值
C) 一个函数子程序只能返回一个函数值或一个变量值
D) 函数值不仅能通过函数名返回,也能通过虚实结合双向传递
21. 若有语句:READ(3,REC=5,ERR=100) A
WRITE (3,5)X,Y
则关于它们的正确描述为( )
A) 顺序有格式读和顺序无格式写
B) 直接有格式读和顺序有格式写
C) 直接无格式读和直接无格式写
D) 直接无格式读和顺序有格式写
22. 在FORTRAN语言中,直接存取文件的特点是______。
A) 存取文件的速度快
B) 只能存放在磁带上
C) 对文件的存取操作必须从文件头开始
D) 文件可以存放在磁带或磁盘上
23. 以下正确的描述是______。
A) 直接存取文件中的每个记录长度可以不相等
B) 直接存取文件中的每个记录长度必须相等
C) 直接存取方式只适用于磁带文件
D) 直接存取方式适用于磁盘文件或磁带文件
24. 若OPEN语句中的文件状态说明值为’SCRATCH’,则不能在该OPEN语句中同时指定的说明项是______。
A) FILE B)ACCESS C)UNIT D)FORM
二、
填空题
1. 计算机硬件系统是由______、______、______、______和______五大部分组成。
2. 运行一个FORTRAN程序一般需要经过______、______、______和______四个步骤。
3. 结构化程序设计的基本结构有______、______和______三种。
4. 数学式cos3α-3cosαsin3α的FORTRAN表达式为______。
5. FORTRAN77提供的四种数值类型分别是整形、______、______和______。
6. 下面程序的运行运行结果是______。
DO 10 K=2,10,2
IF (K .LE. 5) WRITE (*,*) K
10 CONTINUE
WRITE(*,*) K
END
7.若有说明语句:INTEGER A(5,0:3,-1:4),则数组A的第一维下标下界为______,数组A共包含______个元素。
8. 请写出将任意大写字母CH转换成小写字母的表达式______。
9. 在FORTRAN中文件存取的单位是______。
10. 在FORTRAN中文件的存取方式有______和______两种。
三、程序填空题
1. 下面的程序的功能是根据生日(年:Y0, 月:M0,日:D0)和当前日期
(年:Y1, 月:M1,日:D1),求出实足年龄。请填空。
INTEGER Y0,Y1,M0,M1,D0,D1,AGE
READ(*,*) Y0,M0,D0,Y1,M1,D1
AGE=Y1-Y0
IF([1] ______) AGE=AGE-1
IF ((M0 [2] ______ M1).AND. (D0[3]D1)) AGE=AGE-1
WRITE(*,*) AGE
END
2. 下面程序的功能是:利用公式
=
×
×
×
×
×
×
×…
计算圆周率的近似值,请填空。
S=[1] ______
K=1
READ(*,*)N
DO 100 K=1,N
S=S*(2.0*k/(2.0*K-1)*(2.0*K/[2] ______))
100 CONTINUE
WRITE(*,*) [3] ______
END
3. 下面程序是一个3×3的方阵的转置。请填空
INTEGER A(3,3),B(3,3)
WRITE(*,*) ‘INPUT A(1,1) TO A(3,3):’
READ(*,*)((A(I,J),J=1,3),I=1,3)
DO 20 I=[1] ______
DO 20 J=[2] ______
[3] ______
20 CONTINUE
WRITE(*,*) ‘THE RESULT IS:’
WRITE(*,200)((B(I,J),J=1,3),I=1,3)
200 FORMAT(1X,14X,3I3)
END
四、阅读程序
1. 请写出下面程序的运行结果
M=0
DO 30 I=1,10
DO 10 J=I+1,10
M=M+1
10 CONTINUE
30 CONTINUE
WRITE(*,*) M
END
2. 请写出下面程序的运行结果
INTEGER M(5,5)
S=0.0
DO 20 I=1,5
DO 10 J=1,5
10 N(I,J)=I+J+2
20 WRITE(*,*) (N(I,J),J=1,5)
DO 30 I=1,5
DO 30 J=1,I-1
30 S=S+N(I,J)
WRITE(*,*) S
END
3. 请写出下面程序的运行结果
PRORGAM MAIN
A=2.5
B=9.0
CALL SS(B-A,A,A)
WRITE(*,100) A
100 FORMAT(1X,F6.2)
END
SUBROUTINE SS(A,B,C)
B=B-1.0
C=C+A
END
五、编程题
1. 求Y值。X由键盘输入。

2. 求
,n=20
3. 请编程打印以下图形:
*
***
*****
***
*
4. 编程输入N个数组中,把出现次数大于2的数找出来,并同居出现次数。
5. 用双精度数据计算;
sinx≈x-x3/3!+x5/5! - … +((-1)n-1)*x2n-1/(2n-1)!
直到第n项的绝对值小于10-15为止
6. 编写一个函数子程序ADD用于进行两个整数相加运算,所得结果也为整数。
7. 编写语句函数计算K!的值,并且编写主程序通过调用语句函数计算S=![]()
8. 编写子程序,把制订字符串中的小写字母转换成大写字母,其他字符不变。
√