FORTRAN程序设计复习题一、选择题B (1)下列各FORTRAN表达式中合法的是A) S+T*2P >= B) .NOT. (A*B+C)C) A2+B2/(C+D) <= D) (A+B).NOT.A*B.GT.(.NOT.只跟一个表达式)C (2)数学式(3/5)ex+y的FORTRAN表达式是A) 3*EXP(X+Y)/5 B) 3*E* *(X+Y)/C) (3/5)*EXP(X+Y)D) EXP(X+Y)D (3)下列FORTRAN77表达式中不合法的是A) A.GT.B.EQV.C.GT.D B) A.AND.B.AND.C.AND.DC) .NOT.(X.LE.D) A.LT.B.LT.C.LT.DD(4)下列叙述中不正确的是A) FORTRAN子程序可以单独编译B) 对一个FORTRAN源程序进行编译和连接无误后可生成可执行文件C) 即使编译和连接都正确无误,FORTRAN程序运行时仍可能出错D) FORTRAN连接的主要任务是把函数库中的函数翻译成机器指令(正确描述:主要任务为连接目标文件)B (5)在下列FORTRAN77运算符中,优先级最高的是A) .AND. B) .NOT. C) .OR. D) .EQ.B (6)FORTRAN表达式"6/5+9/2**3/2"的值为A) 33 B) 1 C) 5 D) 3A (7)下列FORTRAN77表达式中,合法的是:A) .AND.. B) 10.0C) D)提示:A)相当于 .AND.(.NOT.())D (8)关于编译一个FORTRAN源程序文件,下列说法中错误的是A) 允许编译只有一个主程序而没有子程序的源文件B) 允许编译有多个子程序的源文件C) 允许编译只有一个子程序而没有主程序的源文件D) 允许编译有多个主程序的源文件C (9)在FORTRAN77源程序中,续行标志符必须放在A) 第1列 B) 第1-6列C) 第6列D) 第5列D (10)下列关于"SUBROUTINE MAP(X,Y)"语句行的叙述中,不正确的是A) 这是子程序的第一个语句 B) 字符串"MAP"是子程序名C) 变量X是子程序的形参D) 子程序执行后,MAP将返回整型数据提示:子程序无返回值,自定义函数才有)A (11)FORTRAN表达式"2/4+"的值是A) B) 1 C) D) 0提示:2/4默认等于整型,=》D (12)FORTRAN表达式"MOD,"的值是A) B)0.0 C) D)A (13下列FORTRAN运算符中,优先级最低的是A)逻辑运算符.AND. B)算术运算符*C)关系运算符 >= D)算术运算符+A (14下列语句函数的定义中正确的是A )F(X ,Y)=(X +Y)/(X*Y)+B )FUNCTION FUN(I ,J ,K)=3*I +2*J +*KC )H(A ,B ,C(I))=SIN(A)+SIN(B )+C(I) D)S(A ,B ,C)=A*B +S(A*A ,B ,C)B (15下列标识符中,不属于FORTRAN 常量的是A ).TRUE.B )FALSEC )ˊROOT =ˊD )ˊˊB (16)"整型变量M 能被整型变量K 整除"的FORTRAN77表达式是A )MOD(M ,K)=0 (MOD(M ,K)= =0)B )M -M/K*K .EQ. 0C )MOD(K ,M)=0D )MOD(M ,K)=0 == .TRUE.C (17)设有下列数组说明语句:REAL:: A(1:10,-1:10)该数组说明语句定义了数组A 中的元素个数为A )100B )110C )120D )121A (18)按隐含规则(默认为整型),语句IP=执行之后,IP 的值是A) 3 B) 3.1416 C) D)D (19)下列数据中,不符合 FORTRAN 常量表示法的是A) B) C)‘FOOT’‘=’ D) TRUEC (20)设C 是复型变量,A 与B 为有定义的实型变量,下列赋值语句中合法的是A) C=A+B B) C=,**2)C) C=,3D-2) D) C=(A +B ,A-B )B (21)有矩阵(数组)⎥⎦⎤⎢⎣⎡=22221111B 下列DATA 语句中正确的是A) DATA B/4*,4* B) DATA((B(I,J), J=1,4), I=1,2)/4*, 4*C) DATA B/4*,/ D) DATA((B(I,J),I=1,2), J=1,4)/4*, 4*C (21)在使用DO 循环及循环嵌套时,下列叙述中正确的是A) 不仅可以从循环体内转到循环体外,也可以从循环体外转到循环体内B) 外循环与内循环的DO 循环控制变量可以不同.也可以相同C) 可以从循环体内转到循环体外,但不能从循环体外转到循环体内D) DO 循环控制变量在循环体内可以再赋值,也可以被引用B (22)在FORTRAN 表达式中,各种运算的顺序是A) 逻辑运算,关系运算,算术运算 B) 算术运算,关系运算,逻辑运算C) 关系运算,逻辑运算,算术运算 D) 关系运算,算术运算,逻辑运算D (23)赋值语句X=4**(6/12)=4**0=执行后,实型变量X 的值是A) 2 B) 2.0 C) 1 D)D (24)为了保证正确出数据,格式编辑符中w与d的关系应该是A) w>d B) w>d+2 C) w>d+4 D) w>d+6C (25)设下列各语句中用到的数组都已定义,则下列语句中正确的是A) READ(*,*)(I,A(I),I=1,10) B)READ(*,*)(B,(I,J),I=1,10,J=1,10)C) READ(*,*)N,(A(I),I=1,N) D) READ(*,*)(I=1,10,A(I))A (26)下列DO语句中,不正确实现循环的是(I-N规则:I-N会被视为整型)A) DO 10 S=,, B) DO 10 K=,,C) DO 10 S=,, D) DO 10 K=,,D (27)下列说法中正确的是A) 块IF结构中的THEN块或ELSE块不能是空块B) 块IF结构中至少有一个ELSE IF 语句或ELSE语句C) 每个ELSE IF 语句要有一个对应的END IF语句D) 一个块 IF 结构中只能有一个END IF语句A (28)下列数组说明语句中正确的是A) INTEGER A(-1:5,0:6)B) REAL M(10:5)C) DOUBLE Y(1:N+1) D) DOUBLE Z(14)B (29)设有一个FORTRAN77子程序如下:SUBROUTINE SS(X,Y,S,T)S=X+Y(S,T为传出,即需要输出的(相当于求圆的面积中的area),只能 T=X*Y 为确定的数;X,Y为传入(相当于radius),可为表达式)END调用上述子程序的正确语句是A) CALL SS,W*W,5,,Z)(多了一个)B) CALL SS,,P,Q,R) (多了一个)C) CALL SS(F,G,,D) CALL SS*I,*J,C,D)(I,J可先赋值)A (30)在下列语句函数的定义中正确的是A) F(X,Y)=(X+Y)/(X*Y)+B) FUNCTION(I,J,K)=3*I+2*J+*KC) H(A,B,C(I))=SIN(A)+SIN(B)+C(I) D) S(A,B,C)=A*B+S(A*A,B,C)B (31)COMMON语句的功能是A) 给同一程序模块中的若干变量分配同一存储单元B) 给不同程序模块中的变量分配相同的存储单元C) 给程序中任意两个变量分配相同的存储单元D) 给同一程序模块中的不同变量分配相同的存储单元B (32)下列表达式中值为整数4的是A) SQRT B)27/6 C) 16** D) 4*C(34)语句K=2+**2/2执行后,整型变量 K的值是A) B) 5 C) 6D) 7C (36)适用于字符型 I/O的 FORTRAN77格式编辑将是A) B) C) A D)D (37)给定子例行程序如下SUBROUTINE SUB(K,A)B=K+2(K为整型,B)错误;A不是整型,A)错误;K为传入,可为表达式,A=A+B A为传出,不能为表达式)END下列调用语句中正确的是A) CALL SUB(N,N) B) CALL SUB(X,X)C) CALL SUB(N+2,X) D) CALL SUB(N,X+3)C (38) 下列FORTRAN语句中,正确的是A) READ(*,*) (N,A(K),K=1,N) B) WRITE(*,*) (M(K,J),K=1,10, J=1,10)C) WRITE(*,*) (10,A(K),K=1,10) D) DATA A,B,C/2*C (39)对于下列给定的FORTRAN说明和赋初值语句:INTEGER A(2,2)DATA A/3,4,5,6/数组元数A(2,1)的初值为A) 3 B) 5 C) 4 D) 6C(40)下列对公用区的说明语句中错误的是A) COMMON A(5), B B) COMMON/AB/ A(5), BC) COMMON AB/A(5), B/ D) COMMONND. IF>=X<= Y=2*X+D) IF(X >= <= Y=2*X+二、阅读题1、阅读下列FORTRAN程序:program examplereal a,b,ca=b=c=write(*,"(3)") a,b,cend程序运行的结果是:2、阅读下列FORTRAN程序:program exampleinteger :: a=1integer :: b=2real :: cc=a/bwrite(*,"") cend程序运行结果是:3、阅读下列FORTRAN程序:program exampleimplicit noneinteger rain, windspeedwrite(*,*) "Rain:"read(*,*) rainwrite(*,*) "Wind:"read(*,*) windspeedIf ( rain>=500 .or. windspeed >=10 ) then write(*,*) "停止上班上课"elsewrite(*,*) "照常上班上课"end ifstopend运行上述程序时,如果从键盘输入Rain:505<回车>Wind:8<回车>则最后输出的结果为: 停止上班上课4、阅读下列FORTRAN程序:program exampleimplicit nonereal a,b,anscharacter operatorread(*,*) aread(*,"(A1)") operatorread(*,*) bselect case(operator)case('+')ans = a+bcase('-')ans = a-bcase('*')ans = a*bcase('/')ans = a/bcase defaultwrite(*,"('Unknown operator ',A1)") operator s topend selectwrite(*,",A1,,'=',") a,operator,b,ansstopend运行上述程序时,如果从键盘输入100<回车><回车>200<回车>则最后输出的结果为: Unknown operator5、阅读下列FORTRAN程序:program exampleimplicit noneinteger iinteger strleninteger, parameter :: key = 2character(len=20) :: stringwrite(*,*) "Encoded string:"read(*,*) stringstrlen = len_trim(string)do i = 1, strlenstring(i:i) = char( ichar(string(i:i)) + key )end dowrite(*,"('String:',A20)") stringstopendBCDIJK<回车>则最后输出的结果为: DEFKLM6、阅读下列FORTRAN程序:program exampleimplicit noneinteger i,jdo i=1, 2do j=2, 3, 2write(*, "(I2,I2)") i,je nd dowrite(*,*) "another circle"end dostopend程序运行的结果是: 1 2another circle2 2another circle(按输出格式,1、2前均有一空格。