收藏 分销(赏)

FORTRAN程序设计复习题及答案.doc

上传人:二*** 文档编号:4626714 上传时间:2024-10-08 格式:DOC 页数:16 大小:70KB 下载积分:5 金币
下载 相关 举报
FORTRAN程序设计复习题及答案.doc_第1页
第1页 / 共16页
本文档共16页,全文阅读请下载到手机保存,查看更方便
资源描述
. . FORTRAN程序设计复习题 一、 选择题 B (1)以下各FORTRAN表达式中合法的是 A) S+T*2P >= 0.0B) .NOT. (A*B+C) C) A2+B2/(C+D) <= 0.0 D) (A+B).NOT.A*B.GT.0.0(.NOT.只跟一个表达式) C(2)数学式(3/5)ex+y的FORTRAN表达式是 A) 3*EXP(X+Y)/5 B) 3*E* *(X+Y)/5.0 C) (3/5)*EXP(X+Y)    D) (3.0/5.0)EXP(X+Y) D(3)以下FORTRAN77表达式中不合法的是 A) A.GT.B.EQV.C.GT.D     B) A.AND.B.AND.C.AND.D C).NOT.(X.LE.0.0)      D) A.LT.B.LT.C.LT.D D(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) 3 A(7)以下FORTRAN77 表达式中,合法的是:A) 0.0.LE.X.AND..NOT.X.GE.10.0 B) 0.0.GE.X.LT.10.0 C) 0.0.LE.X.GE.10. D) 10.0.LE.X.OR..AND.X.GT.0.0 提示:A〕相当于0.0.LE.X .AND.〔.NOT.〔X.GE.10.0 〕〕 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+0.5"的值是 A) 0.5 B)1 C) 1.0 D) 0 提示:2/4默认等于整型,0.5=?0.0 D(12)FORTRAN表达式"MOD(4.9,1.3)"的值是A)1.3 B)0.0 C)4.9 D)1.0 A(13以下FORTRAN运算符中,优先级最低的是A〕逻辑运算符.AND. B〕算术运算符*C)关系运算符 >= D)算术运算符+ A (14以下语句函数的定义中正确的选项是A〕F(X,Y)=(X+Y)/(X*Y)+7.0B〕FUNCTIONFUN(I,J,K)=3*I+2*J+0.5*K C〕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〕FALSE C〕ˊROOT=ˊ D〕ˊ123.0ˊ B〔16〕"整型变量M能被整型变量K整除"的FORTRAN77表达式是A〕MOD(M,K)=0 〔MOD(M,K)= =0〕B〕M-M/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〕121 A(18)按隐含规那么〔默认为整型〕,语句 IP=3.1415926 执行之后,IP的值是 A) 3 B) 3.1416 C) 3.141592 D)3.141593 D (19)以下数据中,不符合 FORTRAN常量表示法的是 A) -25.6 B) 2.758D3 C)‘FOOT’‘=’ D) TRUE C(20)设C是复型变量,A与B为有定义的实型变量,以下赋值语句中合法的是 A) C=A+BB) C=(3.5,1.5**2) C) C=(2.0,3D-2)D) C=(A+B,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循环及循环嵌套时,以下表达中正确的选项是 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.0 D (24)为了保证正确出数据,格式编辑符Ew.d中w与d的关系应该是 A) w>d B) w>d+2 C) w>d+4 D) w>d+6 C(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.4 C) DO 10 S=-5.3,-1.6,-0.4 D) DO 10 K=1.6,5.3,-1.4 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(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+2*J+0.5*K C) 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)MON语句的功能是 A) 给同一程序模块中的假设干变量分配同一存储单元 B) 给不同程序模块中的变量分配一样的存储单元 C) 给程序中任意两个变量分配一样的存储单元 D) 给同一程序模块中的不同变量分配一样的存储单元 B (32)以下表达式中值为整数4的是 A) SQRT(16.0)B)27/6 C) 16**0.5D) 4*1.0 C(34)语句K=2+3.0**2/2执行后,整型变量 K的值是 A)6.5B) 5C) 6D)7 C (36)适用于字符型I/O的 FORTRAN77格式编辑将是 A) Fw.d B) Iw.d C) A D) Gw.d D (37)给定子例行程序如下 SUBROUTINE SUB(K,A) B=K+2〔K为整型,B〕错误;A不是整型,A〕错误;K为传入,可为表达式, A=A+BA为传出,不能为表达式〕 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*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) MON A(5), B B) MON/AB/ A(5), B C) MON AB/A(5), B/ D) MON//A(5), B D (41)以下各逻辑IF语句中正确的选项是 A) IF(X<0.0) THEN 10 B) IF(X>=0.0).AND.(X.LT.1.0)Y=2*X+1.0 C) IF(0.0>=X<=1.0)Y=2*X+1.0 D) IF(X>= 0.0.AND.X <=1.0)Y=2*X+1.0 二、阅读题 1、阅读以下FORTRAN程序: program example real a,b,c a=1.0 b=2.0 c=3.0 write(*,"(3(F5.2))") a,b,c end 程序运行的结果是:1.00 2.00 3.00 2、阅读以下FORTRAN程序: program example integer :: a=1 integer :: b=2 real :: c c=a/b write(*,"(F5.2)") c end 程序运行结果是:0.00 3、阅读以下FORTRAN程序: program example implicit none integer rain, windspeed write(*,*) "Rain:" read(*,*) rain write(*,*) "Wind:" read(*,*) windspeed If ( rain>=500 .or. windspeed >=10 ) then write(*,*) "停顿上班上课" else write(*,*) "照常上班上课" end if stop end 运行上述程序时,如果从键盘输入 Rain: 505<回车> Wind: 8<回车> 那么最后输出的结果为:停顿上班上课 4、阅读以下FORTRAN程序: program example implicit none real a,b,ans character operator read(*,*) a read(*,"(A1)") operator read(*,*) b select case(operator) case('+') ans = a+b case('-') ans = a-b case('*') ans = a*b case('/') ans = a/b case default write(*,"('Unknown operator ',A1)") operator stop end select write(*,"(F6.2,A1,F6.2,'=',F6.2)") a,operator,b,ans stop end 运行上述程序时,如果从键盘输入 100<回车> ?<回车> 200<回车> 那么最后输出的结果为: Unknown operator ? 5、阅读以下FORTRAN程序: program example implicit 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 stop end BCDIJK<回车> 那么最后输出的结果为: DEFKLM 6、阅读以下FORTRAN程序: programexample implicit none integer i,j do i=1, 2 do j=2, 3, 2 write(*, "(I2,I2)") i,j end do write(*,*) "another circle" end do stop end 程序运行的结果是:1 2 another circle 2 2 another circle 〔按输出格式,1、2前均有一空格。假设题目无特殊说明,不需表达出;假设有说明,那么空格用“□〞表示〕 7、阅读以下FORTRAN程序: program example implicit none integer :: dest = 6 integer floor do floor=1, dest if ( floor==2 .or. floor==4 ) cycle write(*,*) floor end do stop end 程序运行的结果是:1 3 5 6 8、阅读以下FORTRAN77程序: program example implicit none integer, parameter :: limit=10 integer counter integer :: ans = 0 counter = 1 do while( counter <= limit ) ans = ans + counter counter = counter + 2 end do write(*,*) ans stop end 程序运行的结果是:25 9、阅读以下FORTRAN程序: program example implicit none integer, parameter :: students = 5 integer :: student(students) = (/ 80, 90, 85, 75, 95 /) integer i do while( .true. ) write(*,*) "Query:" read(*,*) i if ( i<=0 .or. i>students ) exit write(*,*) student(i) end do stop end 运行上述程序时,如果从键盘输入 3<回车> 那么最后输出的结果为: 85 10、阅读以下FORTRAN程序: program example implicit 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 do end do end do do i=1,L write(*,*) C(i,:) end do stop end 程序运行的结果是:22 49 28 64 11、阅读以下FORTRAN程序: program example implicit 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 stop end 程序运行的结果是:(1,1) (1,3) (2,1) (2,3) 12、阅读以下FORTRAN程序: program example implicit none real :: a=1.0 call ShowInteger(a) call ShowReal(a) stop end subroutine ShowInteger(num) implicit none integer :: num write(*,*) num return end subroutine ShowReal(num) implicit none real :: num write(*,*) num return end 程序运行的结果是:随机数 1.000000 13、阅读以下FORTRAN程序: program example implicit 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) stop end 程序运行的结果是:1 3 2 4 14、阅读以下FORTRAN程序: program ex0805 implicit none integer :: a = 1 integer :: b = 2 write(*,*) a,b call add(a) call add(b) write(*,*) a,b stop end subroutine add(num) implicit none integer :: num num = num+1 return end 程序运行的结果是: 1 2 2 3 15、阅读以下FORTRAN程序: program example implicit 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, size-1 do j=i+1, size if ( a(i) > a(j) ) then t=a(i) a(i)=a(j) a(j)=t end if end do end do write(*,"(10I4)") a stop end 程序运行的结果是: 1 2 3 4 5 6 7 8 9 10 16、阅读以下FORTRAN程序: program example implicit none real :: a=1 real :: b=2 real, external :: add write(*,*) add(a,b) stop end function add(a,b) implicit none real :: a,b real :: add add = a+b return end 程序运行的结果是:3.000000(类似的题目,写3.0亦可,但不可写3) 17、阅读以下FORTRAN程序: program example implicit none integer :: a,b mon a,b a=1 b=2 call Showmon() write(*,*) a, b end subroutine Showmon() implicit none integer :: num1, num2 mon num1, num2 write(*,*) num1, num2 return end 程序运行的结果是:1 2 1 2 18、阅读以下FORTRAN程序: module global implicit none real a,b mon a,b end module program example use global implicit none a=1.0 b=2.0 call sub() end program subroutine sub() use global implicit none write(*,*) a,b return end subroutine 程序运行的结果是:1.000000 2.000000 19、阅读以下FORTRAN程序: INTEGER A(3,3) DO K=1,3 DO L=1,3 A(K,L)=K*10+L END DO END DO WRITE(*,'(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 DO END 程序运行时执行循环体的次数是:0 22、阅读以下FORTRAN77程序: 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 DO 100 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 FORMAT(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.01.0 25、 阅读以下FORTRAN程序: INTEGER N(20) DO M=1,20 N(M)=0 END DO K=5 DO M=1,K DO J=1,K N(J)=N(M)+1 END DO END DO WRITE(*,*)N(K) END 程序运行的结果是:9 26、 阅读以下FORTRAN程序: MON //M(5),N(4) CALL FIB WRITE(*,'(1X,4I3)') N END SUBROUTINE FIB MON //J(5),K(4) DO I=1,4 K(I)=J(I+1)-J(I) END DO END BLOCK DATA MON //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 END DO END DO WRITE(*,*) 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<回车> 那么最后输出的X值为 :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 DO WRITE(*,*) N END 运行上述程序后,输出的N的值为 4 30、阅读以下FORTRAN77程序: READ(*,*) Y IF (Y.LE.0.0) THEN Z=0 .0 ELSE IF ((Y < 5.0).AND.(Y /= 2.0)) THEN Z=1/(Y+2) ELSE IF (Y <= 10.0) THEN Z=1/Y ELSE Z=10.0 END IF WRITE (*,*)Z END 在执行上述程序时,由键盘输入 2.0 最后输出的Z值为0.5000000〔写0.5即可,不同的编译器,输出的“0〞的个数可能会不同〕 三、编程题 教科书中: 第四章—第九章的习题。 . .word..
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服