《FORTRAN程序设计复习题及答案(16页).doc》由会员分享,可在线阅读,更多相关《FORTRAN程序设计复习题及答案(16页).doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-FORTRAN程序设计复习题及答案-第 16 页FORTRAN程序设计复习题一、 选择题B (1)下列各FORTRAN表达式中合法的是A) S+T*2P = 0.0 B) .NOT. (A*B+C) C) A2+B2/(C+D) = D)算术运算符 A (14下列语句函数的定义中正确的是A)F(X,Y)(XY)/(X*Y)7.0 B)FUNCTION FUN(I,J,K)3*I2*J0.5*KC)H(A,B,C(I)SIN(A)SIN(B)C(I) D)S(A,B,C)A*BS(A*A,B,C) B(15下列标识符中,不属于FORTRAN常量的是A).TRUE. B)FALSE C)ROOT
2、 D)123.0 B(16)整型变量M能被整型变量K整除的FORTRAN77表达式是A)MOD(M,K)0 (MOD(M,K)= =0) B)MM/K*K .EQ. 0C)MOD(K,M)0 D)MOD(M,K)0 = .TRUE. C(17)设有下列数组说明语句:REAL: A(1:10,1:10)该数组说明语句定义了数组A中的元素个数为A)100 B)110 C)120 D)121A (18)按隐含规则(默认为整型),语句IP=3.1415926执行之后,IP的值是A) 3 B) 3.1416C) 3.141592 D)3.141593D (19)下列数据中,不符合 FORTRAN常量表示
3、法的是A) -25.6 B) 2.758D3 C)FOOT= D) TRUEC (20)设C是复型变量,A与B为有定义的实型变量,下列赋值语句中合法的是A) C=A+BB) C=(3.5,1.5*2)C) C=(2.0,3D-2)D) C=(AB,A-B)B (21)有矩阵(数组)下列DATA语句中正确的是A) DATA B/4*1.0,4*2.0/ B) DATA(B(I,J), J=1,4), I=1,2)/4*1.0, 4*2.0/C) DATA B/4*(1.0,2.0)/ D) DATA(B(I,J),I=1,2), J=1,4)/4*1.0, 4*2.0/C (21)在使用DO循环
4、及循环嵌套时,下列叙述中正确的是A) 不仅可以从循环体内转到循环体外,也可以从循环体外转到循环体内B) 外循环与内循环的DO循环控制变量可以不同也可以相同C) 可以从循环体内转到循环体外,但不能从循环体外转到循环体内D) DO循环控制变量在循环体内可以再赋值,也可以被引用B (22)在FORTRAN表达式中,各种运算的顺序是A) 逻辑运算,关系运算,算术运算B) 算术运算,关系运算,逻辑运算C) 关系运算,逻辑运算,算术运算D) 关系运算,算术运算,逻辑运算D (23)赋值语句 X=4*(6/12)=4*0=1.0 执行后,实型变量X的值是A) 2 B) 2.0 C) 1 D) 1.0D (2
5、4)为了保证正确出数据,格式编辑符Ew.d中w与d的关系应该是A) wd B) wd+2 C) wd+4 D) wd+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=-1.6,-5.3,-0.4 B) DO 10 K=-1.6,-5.3,-0.4C) D
6、O 10 S=-5.3,-1.6,-0.4 D) DO 10 K=1.6,5.3,-1.4D (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
7、 SS(X,Y,S,T) S=X+Y(S,T为传出,即需要输出的(相当于求圆的面积中的area),只能 T=X*Y 为确定的数;X,Y为传入(相当于radius),可为表达式) END调用上述子程序的正确语句是A) CALL SS(2.4,W*W,5,5.9,Z)(多了一个) B) CALL SS(0.0,4.2,P,Q,R) (多了一个)C) CALL SS(F,G,7.2,5.1) D) CALL SS(4.4*I,5.8*J,C,D)(I,J可先赋值)A (30)在下列语句函数的定义中正确的是A) F(X,Y)=(X+Y)/(X*Y)+7.0B) FUNCTION(I,J,K)=3*I+
8、2*J+0.5*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(16.0)B)27/6 C) 16*0.5D) 4*1.0C (34)语句K=2+3.0*2/2执行后,整型变量 K的值是A) 6.5B) 5C) 6D) 7C (36)适用于字符型 I/
9、O的 FORTRAN77格式编辑将是A) Fw.dB) Iw.dC) AD) Gw.dD (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
10、=1,10) C) WRITE(*,*) (10,A(K),K=1,10) D) DATA A,B,C/2*0.0/ C (39)对于下列给定的FORTRAN说明和赋初值语句: INTEGER A(2,2) DATA A/3,4,5,6/ 数组元数A(2,1)的初值为 A) 3 B) 5 C) 4 D) 6 C (40)下列对公用区的说明语句中错误的是 A) COMMON A(5), B B) COMMON/AB/ A(5), B C) COMMON AB/A(5), B/ D) COMMON/A(5), BD (41)下列各逻辑IF语句中正确的是A) IF(X=0.0).AND.(X.LT.
11、1.0)Y=2*X+1.0C) IF(0.0=X= 0.0.AND.X =500 .or. windspeed =10 ) then write(*,*) 停止上班上课 else write(*,*) 照常上班上课 end ifstopend运行上述程序时,如果从键盘输入 Rain:505Wind: 8则最后输出的结果为: 停止上班上课 4、阅读下列FORTRAN程序:program exampleimplicit none real a,b,ans character operator read(*,*) a read(*,(A1) operator read(*,*) b select c
12、ase(operator) case(+) ans = a+b case(-) ans = a-b case(*) ans = a*b case(/) ans = a/b case default write(*,(Unknown operator ,A1) operatorstop end select write(*,(F6.2,A1,F6.2,=,F6.2) a,operator,b,ans stopend运行上述程序时,如果从键盘输入 100?200则最后输出的结果为: Unknown operator ? 5、阅读下列FORTRAN程序:program exampleimplicit
13、 none integer i integer strlen integer, parameter : key = 2 character(len=20) : string write(*,*) Encoded string: read(*,*) string strlen = len_trim(string) do i = 1, strlen string(i:i) = char( ichar(string(i:i) + key ) end do write(*,(String:,A20) string stopendBCDIJK则最后输出的结果为: DEFKLM 6、阅读下列FORTRAN
14、程序: program exampleimplicit none integer i,j do i=1, 2 do j=2, 3, 2 write(*, (I2,I2) i,jend dowrite(*,*) another circle end do stopend程序运行的结果是: 1 2 another circle 2 2 another circle (按输出格式,1、2前均有一空格。若题目无特殊说明,不需表达出;若有说明,则空格用“”表示)7、阅读下列FORTRAN程序:program exampleimplicit none integer : dest = 6 integer
15、floor do floor=1, dest if ( floor=2 .or. floor=4 ) cyclewrite(*,*) floor end do stopend程序运行的结果是: 1 3 5 6 8、阅读下列FORTRAN77程序:program exampleimplicit none integer, parameter : limit=10 integer counter integer : ans = 0 counter = 1 do while( counter = limit ) ans = ans + counter counter = counter + 2 en
16、d do write(*,*) ans stopend程序运行的结果是: 25 9、阅读下列FORTRAN程序:program exampleimplicit none integer, parameter : students = 5 integer : student(students) = (/ 80, 90, 85, 75, 95 /) integer i do while( .true. ) write(*,*) Query: read(*,*) i if ( istudents ) exit write(*,*) student(i) end do stopend运行上述程序时,如
17、果从键盘输入 3则最后输出的结果为: 85 10、阅读下列FORTRAN程序:program exampleimplicit none integer, parameter : L=2, M=3, N=2 real : A(L,M) = (/ 1,2,3,4,5,6/) real : B(M,N) = (/ 1,2,3,4,5,6/) real : C(L,N) integer : i,j,k do i=1,L do j=1,N C(i,j) = 0.0 do k=1,M C(i,j) = C(i,j)+A(i,k)*B(k,j) end doend do end do do i=1,L wr
18、ite(*,*) C(i,:) end do stopend程序运行的结果是: 22 49 28 64 11、阅读下列FORTRAN程序:program exampleimplicit none integer : i,j loop1: do i=1,3 loop2: do j=1,3 if ( i=3 ) exit loop1 if ( j=2 ) cycle loop2 write(*, (,i2,i2,) ) i, j end do loop2 end do loop1 stopend程序运行的结果是: (1,1) (1,3) (2,1) (2,3) 12、阅读下列FORTRAN程序:p
19、rogram exampleimplicit none real : a=1.0 call ShowInteger(a) call ShowReal(a) stopendsubroutine ShowInteger(num)implicit none integer : num write(*,*) num returnendsubroutine ShowReal(num)implicit none real : num write(*,*) num returnend程序运行的结果是: 随机数 1.000000 13、阅读下列FORTRAN程序:program exampleimplicit
20、 none integer, parameter : row = 2 integer, parameter : col = 2 integer : m(row, col) integer r integer c data (m(r,c), r=1, 2), c=1,2) /1,2,3,4/ write(*,(I3,I3,/,I3,I3) ( m(r,c), c=1,2 ), r=1,2) stopend程序运行的结果是: 1 3 2 4 14、阅读下列FORTRAN程序:program ex0805implicit none integer : a = 1 integer : b = 2 wr
21、ite(*,*) a,b call add(a) call add(b) write(*,*) a,b stopendsubroutine add(num)implicit none integer : num num = num+1 return end程序运行的结果是: 1 2 2 3 15、阅读下列FORTRAN程序:program exampleimplicit none integer, parameter : size=10 integer : a(size) = (/ 5,3,6,4,8,7,1,9,2,10 /) integer : i,j integer : t do i=1
22、, size-1 do j=i+1, size if ( a(i) a(j) ) then t=a(i) a(i)=a(j)a(j)=t end ifend do end do write(*,(10I4) a stopend程序运行的结果是: 1 2 3 4 5 6 7 8 9 10 16、阅读下列FORTRAN程序:program exampleimplicit none real : a=1 real : b=2 real, external : add write(*,*) add(a,b) stopendfunction add(a,b)implicit none real : a,
23、b real : add add = a+b returnend程序运行的结果是: 3.000000 (类似的题目,写3.0亦可,但不可写3)17、阅读下列FORTRAN程序:program exampleimplicit none integer : a,b common a,b a=1 b=2 call ShowCommon() write(*,*) a, b endsubroutine ShowCommon()implicit none integer : num1, num2 common num1, num2 write(*,*) num1, num2 returnend程序运行的结
24、果是: 1 2 1 2 18、阅读下列FORTRAN程序:module global implicit none real a,b common a,bend moduleprogram example use global implicit none a=1.0 b=2.0 call sub()end programsubroutine sub() use global implicit none write(*,*) a,b returnend subroutine程序运行的结果是: 1.000000 2.000000 19、阅读下列FORTRAN程序: INTEGER A(3,3) DO
25、 K=1,3 DO L=1,3 A(K,L)=K*10+L END DO END DOWRITE(*,(1X,3I3) A END 程序运行的结果是: 11 21 31 12 22 32 13 23 33 20、阅读下列FORTRAN程序: INTEGER F F(X,Y)=X+Y A=-2.5 B=4.0 B=1.0+F(A,B) WRITE(*,20) B 20 FORMAT(1X,F4.1) END 程序运行的结果是: 2.0 21、阅读下列FORTRAN程序: X=0 DO L=10, 5, 15 X=X+1.0 END DOEND 程序运行时执行循环体的次数是: 0 22、阅读下列F
26、ORTRAN77程序: DIMENSION M(4,4) DATA M/1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6/ DO I=1,4 WRITE (*,100)(M(I,J),J=1,I) END DO100 FORMAT(1X,4I2) END 程序运行的结果是: 1 2 6 3 7 1 4 8 2 6 23、阅读下列FORTRAN程序: CHARACTER(LEN=10) A CHARACTER(LEN=6) B DO I=1,10 A(I:I)= END DO A(1:5)=ABCDE B=FGHIJK A(4:9)=B WRITE(*,100) A 100 FOR
27、MAT(1X,A) END 程序运行结果是: ABCFGHIJK 24、 阅读下列FORTRAN程序: X=0.0 Y=2.0 CALL SUB(X,Y,Z,3.0) WRITE(*,(1X,3F5.1)X,Y,Z END SUBROUTINE SUB(A,B,X,Z) A=A+1 B=B+2.0 Y=1.0 X=X+Y END 程序运行结果是: 1.0 4.0 1.0 25、 阅读下列FORTRAN程序: INTEGER N(20) DO M=1,20 N(M)=0 END DOK=5 DO M=1,K DO J=1,K N(J)=N(M)+1 END DOEND DOWRITE(*,*)N
28、(K) END 程序运行的结果是: 9 26、 阅读下列FORTRAN程序: COMMON /COM/M(5),N(4) CALL FIB WRITE(*,(1X,4I3) N END SUBROUTINE FIB COMMON /COM/J(5),K(4) DO I=1,4 K(I)=J(I+1)-J(I) END DO END BLOCK DATA COMMON /COM/K(5),L(4) DATA K/8,7,10,4,13/ END 程序运行的结果是: -1 3 -6 9 27、阅读下列FORTRAN程序: N=0 DO K=30,0,-2 DO L=-10,10,1 N=N+1 E
29、ND DOEND DOWRITE(*,*) N END 程序运行结果是: 336 28、阅读下列FORTRAN程序: READ(*,*) N X=1.0 IF (N.GE.0) X=2*X IF (N.GE.5) X=2*X+1.0 IF (N.GT.15) X=3*X-1.0 WRITE(*,*) X END 运行上述程序时,如果从键盘输入 15 则最后输出的值为 : 5.000000 29、阅读下列FORTRAN程序: DIMENSION M(3,4) DATA M/4*2,4*1,4*-1/ N=0 DO K=1 ,4 N=N+M(1,K) END DOWRITE(*,*) N END 运行上述程序后,输出的N的值为 4 30、阅读下列FORTRAN77程序:READ(*,*) YIF (Y.LE.0.0) THENZ=0 .0ELSE IF (Y 5.0).AND.(Y /= 2.0) THENZ=1/(Y+2)ELSE IF (Y = 10.0) THENZ=1/YELSEZ=10.0END IF WRITE (*,*)ZEND在执行上述程序时,由键盘输入2.0最后输出的Z值为 0.5000000 (写0.5即可,不同的编译器,输出的“0” 的个数可能会不同) 三、编程题教科书中:第四章第九章的习题。
限制150内