1、一、选取题1、下列关于SUBROUTINE MAP(X,Y)语句行论述中,不对的是( ) A) 这是子程序第一种语句 B) 字符串MAP是子程序名 C) 变量X是子程序形参 D) 子程序执行后,MAP将返回整型数据 2、FORTRAN表达式2/4+0.5值是( ) A) 0.5 B) 1 C) 1.0 D) 0 3、阅读下列FORTRAN程序: PI=3.14159265 WRITE(*,(F7.4) )PI END 程序运营后输出成果是( ) A) 3.142 B) 3.1415 C) 0.31416 D) 3.1416 4、圆直径存储在整型变量K之中,下列计算圆面积表达式中对的是( ) A
2、) 3.1415926*K*K/4 B) 3.1415926*(K*K/4) C) 3.1415926*(K/2)*2 D) 3.1415926*(K/2)*(K/2) 5、要判断月收入M在元以上(含元)且5000元如下)不含5000元)职工,应当使用逻辑表达式是( ) A) M .GE. .AND. M .LE. 5000 B) M .GE. .OR. M .LE. 5000 C) M .GE. .AND. M .LT. 5000 D) M .GE. .OR. M .LT. 5000 6、设FORTRAN子程序如下: SUBROUTINE SUB(I,X) B=I+1 X=X+B END 若
3、主程序中变量M,B已按I-N规则赋值,则调用上述子程序语句中对的是( )A) CALL SUB(M,M) B) CALL SUB(M+4,B) C) CALL SUB(B,B) D) CALL SUB(M,B+4) 7、下列不是FORTRAN常量是( ) A) (3.0,4.0) B) 3.1416D+00 C) 2/3 D) Very good! 8、阅读下列FORTRAN程序: F=1.0 DO 20 K=3,7,3 DO 20 L=K-1,K 20 WRTTE(*,(I3,F8.1)K,F*K END 程序运营成果最后一行是( ) A) 3 6.0 B) 6 6.0 C) 6 180.0
4、 D) 7 180.0 9、在FORTRAN中,下列运算符优先顺序是( ) A) 逻辑运算,关系运算,算术运算 B) 关系运算,逻辑运算,算术运算 C) 算术运算,关系运算,逻辑运算 D) 关系运算,算术运算,逻辑运算 10、使用FORTRAN内部函数时,所给自变量( ) A) 只能是常量 B) 只能是变量 C) 只能是常量或者变量 D) 可以是常量、变量或者表达式 11、设X=2.0,Y=8.0,Z=6.0,L=.TRUE.,则下列FORTRAN表达式中值为.TRUE.是( ) A) X+Z.GT.Y.AND.L B) .NOT.(Y.LT.Z+X).NEQV.NOT.L C) .NOT.L
5、.OR.(L.EQV.Y+X.EQ.Z) D) Y+X.GE.Z+X.AND.(L.AND.FALSE.) 12、下列输出语句行中对的是( ) A) WRITE(*,*)(A(K,L),K=1,3,L=1,3) B) WRITE(*,*)A(K,L),K=1,3,L=1,3 C) WRITE(*,*)(A(K,L),K=1,3), L=1,3) D) WRITE(*,*)(A(K,L),K=1,3),L=1,3 13、给定下列FORTRAN子程序如下: SUBROUTINE SUB(K,A) A=SQRT(K*K+1.0) END 下列调用语句中对的是( ) A) CALL SUB(N,N)
6、B) CALL SUB(X,X) C) CALL SUB(N,X*X) D) CALL SUB(11,X) 14、阅读下列FORTRAN程序:INTEGER AA(2,3) DATA AA/1,2,3,4,5,6/ CALL S2D19(AA) CALL S2D19(AA(1,2) END SUBROUTINE S2D19(BB) INTEGER BB(2,2) WRITE(*,(1X,2I3) BB(1,1),BB(2,2) END 程序运营成果是( ) A) 1 4 B) 1 5 C) 1 4 D) 1 2 3 6 2 6 2 5 3 4 15、阅读下列FORTRAN程序:INTEGER
7、A(3,3) DO 10 K=1,3 DO 10 L=1,3 10 A(K,L)=K*10+L WRITE(*,(1X,3I3)A END 程序运营成果是:( ) A) 11 21 31 B) 11 12 13 C) 31 32 33 D) 33 32 31 12 22 32 21 22 23 21 22 23 32 22 21 13 23 33 31 32 33 11 12 13 31 21 11 16、阅读下列FORTRAN程序:WRITE(*,10)YEAR:,1996 10 FORMAT(/3X,A,I4) END 程序运营成果是(代表空格,下同) ( ) A) YEAR:1996 B
8、) YEAR:1996 C) 空白行 D) 空白行 YEAR:1996 YEAR:1996 17、某函数子程序中使用了IMPLICIT、READ、COMPLEX和FUNCTION四种语句,其中属于可执行语句是:( ) A)FUNCTION B) READ C) COMPLEX D) IMPLICIT 18、阅读下列FORTRAN程序:DIMENSION M(4,4) DATA M/1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6/ DO 10 I=1,4 WRITE (*,100)(M(I,J),J=1,I) 10 CONTINUE 100 FORMAT(1X,4I2) END
9、程序运营成果是( ) A) 1 2 3 4 B) 1 5 9 3 C) 1 D) 1 6 7 8 6 0 4 2 6 2 6 6 1 2 1 5 3 7 1 9 3 7 1 1 6 6 4 8 2 6 3 4 4 8 2 6 6 19、阅读下列FORTRAN程序:CHARACTER*10 A,B*6 DO 10 I=1,10 A(I:I)= 10 COUNTINUE A(1:5)=ABCDE B=FGHIJK A(4:9)=B WRITE(*,100) A 100 FORMAT(1X,A) END 程序运营成果是:( )A) ABCDEFGHIJ B) ABCDEGHIJK C) ABCFGH
10、IJK D) BCDEFGHIJK 20、阅读下列FORTRAN程序: INTRINSIC SIN, COS WRITE(*,*)FUN(SIN,30.0)/FUN(COS,30.0) END FUNCTION FUN(F,X) X=X*3.14159/180 FUN=F(X) END 程序运营成果是 ( )A) sin30值 B) cos30值 C) tg30值 D) ctg30值 二、填空题1、下列FORTRAN子程序功能是用如下公式计算一组数据Z1,Z2,Zn原则差: 2=(Z12 +Z22+Zn2)/n-(Z1+Z2+Zn)/n2 请在程序中下划线处填入适当内容。 【1】 SIGMA(
11、Z,N) REAL Z(N) SUMX=0.0 SUMX2=0.0 DO 10 K=1,N 【2】 SUMX=SUMX+X SUMX2=SUMX2+X*X 10 CONTINUE AV=SUMX/N AV2=SUMX2/N S2=AV2-AV*AV SIGMA=【3】 END 2、下列FORTRAN程序功能是将30个学生考试成绩读入数组A,然后记录并且输出最高分数以及不大于60分、6080分与不不大于80分三个分数段学生数。请在程序中下划线处填入适当内容。 【4】 A(30),B,C(3) DATA C/3*0/ READ(*,*)A 【5】 DO 10 K=2,30 IF(A(K).GT.B
12、) B=A(K) 10 CONTINUE DO 30 K=1,30 IF (A(K).LT.60)C(1)=C(1)+1 IF (A(K).GT.80)C(3)=C(3)+1 IF(A(K).LE.80 【6】 A(K).GE.60)C(2)=C(2)+1 30 CONTINUE WRITE(*,*) B,C END 3、下列FORTRAN程序功能是用对分法求出方程4.1x3-5.2x=11.8在区间(1,5)中一种实数根,规定输出根近似值和对分次数。请在程序中下划线处填入适当内容。 【7】 =4.4*X*3-5.2*X-11.8 DATA XL,XR,N/1.0,5.0,0/ 10 N=N+
13、1 X=(XL+XR)/2.0 FX=FUN(X) IF (ABS(FX).LT.1E-6.OR.N.GE.1000)THEN WRITE(*,(1X,A2,F12.7,A5,I4)X=,X,N=,N ELSE IF(FUN(XR)*FX.GE.0.0) THEN XR=X 【8】 XL=X ENDIF 【9】 ENDIF END 4、下列FORTRAN程序功能是计算多项式y=2+2.1x+3.2x3+5.4x5 在x=1.7时值。主程序调用了函数子程序POLY。请在程序中下划线处填入适当内容。 PROGRAM PVALUE REAL A(6) DATA A/【10】 / DATA N,X/6
14、, 1.7/ Y=POLY(A,N,X) WRITE(*,(1X,A5,6F5.1)a(k)=,A WRITE(*,(1X,A2,F5.1,A6,F8.2)X=,X,;Y=,Y END FUNCTION POLY(B,M,V) 【11】 POLY=B(1) FV=1.0 DO 10 K=2,M FV=FV*V 10 POLY=POLY+【12】 END 5、下列FORTRAN程序功能是使用筛法筛选出N以内所有素数并输出。其算法如下: 在N 以内自然数列中先筛除2倍数(不涉及2);在2之后未筛去第一种数是3,于是再筛除3倍数;在3之后未筛去第一种数是5,于是再筛除5倍数;如此重复下去,直到碰见筛
15、剩余第一种数是最接近N平方根那个数为止。请在程序中下划线处填入适当内容。 PARAMETER (N=100) 【13】 A(N),P(N) A(1)=0 DO 10 K=2,N 10 A(K)=K DO 20 K=3,N 20 IF(MOD(A(K),2).EQ.0)A(K)=0 ISR=SQRT(FLOAT(N) DO 30 M=3,ISR,2 DO 30 K=M+2,N 30 IF(A(K).NE.0.AND.MOD(A(K),M).EQ.0)【14】 M=1 DO 40 K=1,N IF(A(K).NE.0)THEN P(M)=【15】 M=M+1 ENDIF 40 CONTINUE W
16、RITE(*,(1X,10I8)(P(K),K=1,M-1) END 三、编写程序题1、以循环来计算 1/1!+1/2!+1/3!+1/4!+1/10! 值。2、编写一种程序计算圆面积,输入两个参数,一种参数为输入圆半径长,另一种参数用来返回圆面积。3、运用选取排序法编制程序,将数组A中所有数值(5,3,6,4,8,7,1,9,2,10)从小到大排列。参照答案及评分原则 一、选取题1、D 2、A 3、D 4、A 5、C 6、B 7、C 8、B9、C 10、D 11、B 12、C 13、D 14、A 15、A 16、D17、B 18、C 19、C 20、C 二、填空题【1】FUNCTION 【2
17、】XZ(K) 【3】SQRT(S2) 【4】 INTEGER或者REAL 【5】 B=A(1) 【6】.AND. 【7】FUN(X) 【8】ELSE 【9】 GOTO 10 【10】 2.0,2.1 0.0,3.2, 0.0,5.4 (注:顺序不可颠倒,小数点先后0可以省略其中一种。) 【11】DIMENSION B(M) 或者 REAL B(M) 【12】 B(K)*FV 或者 FV*B(K) 【13】INTEGER 【14】A(K)=0 或者 A(K)=0.0 【15】A(K) 三、编写程序题1、解题程序:program main implicit none integer,paramet
18、er ::max=10 integer i real item real ans ans = 1.0 item = 1.0 do i=2,max item = item/real(i) ans = ans+item end do write(*,*) ans stopend program2、解题程序:program main implicit none real radius,area write(*,*) 请输入半径长 read(*,*) radius call CircleArea(radius,area) write(*,( 面积 = F8.3) area stopend progra
19、msubroutine CircleArea(radius,area) implicit none real,parameter ::PI=3.14159 real radius,area area = radius*radius*PIend subroutine3、解题程序:program mainimplicit 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
20、(i) a(j) ) then !a(i)跟a(j)互换 t=a(i) a(i)=a(j)a(j)=t end ifend do end do write(*,(10I4) a stopend一、选取题1、下列关于FORTRAN源程序编辑规则论述之中,对的是( )A) IMPLICIT语句可以放在REAL语句行之后 B) DATA语句可以在放在紧靠END语句行之前 C) 注释行不可以放在END语句行之后D) FORMAT语句可以放在PROGRAM语句行之前2、下列FORTRAN源程序变量名之中,不符合规则是( )A) W B) W3 C) -3 D) W3W3、若FORTRAN中一种INTEG
21、ER型数据占用2个字节,那么该类型数据值范畴是( )A) - B) -32768 32767C) 0 D) 0 655354、阅读下列程序X=0.618WRITE(*,(E12.4)XEND程序运营后显示成果是( )A) .6180 B) 6.180E-01 C) .0618E+01 D) .6180E+005、梯形上底为A,下底为B,高为H,计算其面积FORTRAN表达式中错误是( )A) 1/2*(AB)*H B) (A+B)*H/2 C) (A+B)/2*H D) 0.5*(A+B)*H6、要选拔身高T1.7米且体重W62.5公斤人,FORTRAN逻辑表达式是( )A) T.CE.1.7
22、.AND.W.LE.62.5 B) T.LE.1.7.OR.W.GE.62.5C) T.GT.1.7.AND.W.LT.62.5 D) T.GT.1.7.OR.W.LT.62.57、在FORTRAN变量类型阐明语句中没有( )A) REAl语句 B) CHAR语句 C) INTEGER语句 D) LOGICAL语句8、一次成功FORTRAN源程序编译操作,不能( )A) 同步编译一种主程序和一种子程序 B) 同步编译几种子程序C) 同步编译一种主程序和几种子程序 D) 同步编译几种主程序9、阅读下列程序F=1.0DO 20,J=3,7,2DO 20,K=J-1,J20 F =F*KWRITE(
23、*,(13,F8.1)J,FEND程序运营成果是A) 3 6.0 B) 5 120.0 C) 9 5040.0 D) 9362880.010、阅读下列程序CHARACTER*10 WDO K=1,10 READ *,W IF (W(1:2).EQ.AB.OR.W(1:2).EQ.ab)WRITE(*,*),WENDDOEND程序功能是( )A) 首字符是A或B字符串被输出显示B) 第一、二个字符是AB或ab字符串被输出显示C) 首字符是a或b字符串将被输出显示D) 第一、二个字符是Aa或Bb字符串将被输出显示11、阅读下列程序LOGICAL LREAD(*,*)A,BL=A.GT.BIF(L)
24、THENX=B+2*AELSEX=BEND IFWRITE(*,*)XEND使用键盘为上述程序输入两个初值4和3,其输出X值是( )A) 4.0 B) 3.0 C) 11.0 D) 10.012、阅读下列程序READ(*,*)KWRITE(*,100)K100 FORMAT(I5)END程序运营时输入初始值12345,那么显示成果是A) 2345 B) 12345 C) * D) *13、阅读下列程序INTEGER FF(X,Y)=X+YA=-2.5B=2.1B=B+F(A,B)WRITE(*,(F3.1)BEND程序运营成果是( )A) .1 B) .7 C) 2.1 D) 1.714、阅读
25、下列程序A=3.5CALL SUBA(A,A,A)WRITE(*,(F4.1)AENDSUBROUTINE SUBA(X,Y,Z)Y=Y-2.0Z=Z+XEND程序运营成果是( )A) 7.0 B) 5.0 C) 3.5 D) 1.515、阅读下列程序CHARACTER A*4,B*5,C*4DATA A,B,C/BIG,MIDDLE,SMALL/WRITE(*,20)A,B,C20 FORMAT(1X,A2,A3,A4)END程序运营成果是( )A) BIGMIDDLE B) * C) BIGMIDSMA D) BIMIDSMAL16、阅读下列程序N=0DO 10 K=1,3N =N+1M=
26、K*N10 CONTINUEWRITE(*,(1X,2I3)M,KEND程序运营成果是( )A) 9 4 B) 9 3 C) 12 4 D) 12 3(#)17、阅读下列程序FUN(c,d)=a*c+b/dDATA a,b/1.0,1.0/WRITE(*,(F4.1)FUN(a,b)-FUN(b,a)END程序运营成果是( )A) 0.0 B) 4.0 C) 2.O D) 3.O18、阅读下列程序LOGICAL L1,L2,L3,L4,L5DATA L1,L2,L3/3*.TRUE./L4=.NOT.L1.AND.NOT.L2.AND.L3L5=.NOT.L1.OR.NOT.L2.OR.L3W
27、RITE(*,*)L4,L5END程序运营成果是( )A) T T B) T F C) F F D) F T19、阅读下列程序DIMENSION M(3,3)DATA M/1,2,3,4,5,6,7,8,9/WRITE(*,100)(M(3,J),J=1,3)100 FORMAT(1X,3I2)END程序运营成果是( )A) 2 5 8 B) 3 6 9 C) 4 5 6 D) 7 8 920、阅读下列程序INTEGER A(100),GREAD(*,*)N,(A(I),I=1,N)DO 10 I=1,N-1G=IDO 20 J=I+1,NIF(A(J).LT.A(G)THENG=JENDIF
28、20 CONTINUEK=A(I)A(I)=A(G)A(G)=K10 CONTINUEWRITE(*,(1X,10I2)(A(I),I=1,N)END程序运营时输入初始值是3,6,9,8,则运营成果是( )A) 6 9 8 B) 8 9 6 C) 6 8 9 D) 9 8 6二、填空题1、阅读下列程序,其功能是求出方程2X3-3X2+4X-11=0在区间(1,5)中一种实数根,运营成果是显示根值和对分次数,使用是二分算法。请在其中_处填入恰当内容。FUN(X)=2.0*X*3-3.0*X*2+4.0*X-11.0DATA XL,XR,N/1.O,5.0,0/10 CONTINUE【1】X=(X
29、L+XR)/2.0【2】IF(ABS(FX).LT.1E-6 .OR.N.GE.1000)THENWRITE(*,(1X,A2,F12.7,A5,14)X=,X,N=,NELSEIF(FUN(【3】)*FX.GE.0.0)THENXR=XELSEXL=XENDIFGOTO 10ENDIFEND2、阅读下列程序.其功能是计算Y=1+1.1X+1.2X2+1.3X3+1.4X4+1.5X5当X=3.1时值。主程序调用了函数子程序。请在其中_处填入恰当内容。PROGRAM PVALUE【4】DATA A/1.0,1.1,1.2,1.3,1.4,1.5/,N,X/6,3.1/【5】WRITE(*,(1
30、X,A5,6F5.1)a(k)=,AWRITE(*,(1X,A2,F5.1,A6,F8.2)X=,X,;Y=,YEND FUNCTION POLY(B,M,V)DIMENSION B(M)POLY=B(1)FV=1.0DO 10K=2,MFV=FV*V10 【6】=POLY+B(K)*FVEND3、函数子程序DTOH可以将一种十进制正整数DEC转换为一种表达十六进制数字符字符串,其长度不超过8。例如127转换为7F。算法是:将DEC除16取余,将所得商再除16取余,如此重复,直到商和零为止,最后按照逆序输出所得各个余数。请在其中_处填入恰当内容。CHARACTER*8 FUNCTION DTO
31、H(DEC)INTEGER DEC,R,POSPOS=9DTOH=111 CONTINUE【7】IF(POS.GE.1)THENR=MOD(DEC,16)IF(R.LT.1O)THEN【8】=CHAR(ICHAR(0)+R )ELSEDTOH(POS:POS)=CHAR(ICHAR(A)+R-10)ELSEDTOH=*GOTO999ENDIFDEC=DEC/16IF(【9】)GOTO 111999 CONTINUEENDPROGRAM DECHEXCHARACTER*8 DTOHWRETE(*,*) DTOH(127)END4、有一种十进制四位数ABCD与一种十进制三位数CDC差等于十进制三位
32、数ABC.下列程序按ABCD=9876样式打印出ABCD这个数。请在其中_外填入恰当内容.INTEGER A,B,C,DDO 10 A=1,9DO 10 B=0,9DO 10 C=1,9【10】L=1000*A+100*B+10*C+DM=100*C+10*D+CN=100*B+CIF(【11】)WRITE(*,(【12】)XABCD=,A,B,C,D10 CONTINUEEND5、阅读下列程序,其功能是使用筛法选出N以内所有素数并显示算法在N以内自然数列中先筛除2倍数;在2之后筛乘下第一种数是3,于是再筛除3倍数;在3之后筛剩余第一种数是5,于是再筛除5倍数;如此重复下去,直到碰见筛剩余第一
33、种数是最接近N平方根那个数为止。请在其中_处填入恰当内容。PROGRAM PRINESPARAMETER (N=100)INTEGER A(N),P(N)DO 10 K=1,N10 A(K)=KDO 20 K=3,N20 IF(【13】.EQ.0)A(K)=0ISR=SQRT(REAL(N)DO 30M=3,ISR,2DO 30K=M+2,N30 IF(A(K).NE.0.AND.MOD(A(K),M).EQ.0)A(K)=0M=1DO 40K=2.NIF(A(K).NE.0)THEN【14】M=M+1ENDIF40 CONTINUEWRITE(*,(1X,1018)(P(K),【15】)EN
34、D三、编写程序题1、以循环来计算等差数列 1+3+5+7+99 值。2、运用选取排序法编制程序,将数组A中所有数值(5,3,6,4,8,7,1,9,2,10)从大到小排列。3、编制函数GCD(A,B)计算输入两个整数A,B最大公因子。参照答案一、选取题1、B 2、C 3、B 4、D 5、A 6、C 7、B 8、D 9、C 10、B 11、C 12、B 13、A 14、C 15、D 16、A 17、B 18、D 19、B 20、C 二、填空题【1】 N=N+1或N=1+N 【2】FX=FUN(X) 【3】XR【4】 DIMENSION A(6)或REPL A(6) 【5】Y=POLY(A,N,X
35、)【6】 POLY【7】POS=POS-1 【8】DTOH(POS:POS)【9】 DEC.NE.0或DEC.GT.0【10】 DO 10 D=0,9或DO 10,D=0,9 【11】L-M.EQ.N或(L-M).EQ.N【12】A6.411【13】 MOD(A(K),2) 【14】P(M)=A(K) 【15】K=1,M-1三、编写程序题1、解题程序:program main implicit none integer i,sum sum = 0 do i=1,99,2 sum = sum+i end do write(*,*) sum stopend program2、排序程序:progra
36、m mainimplicit 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 !a(i)跟a(j)互换 t=a(i) a(i)=a(j)a(j)=t end ifend do end do write(*,(10I4) a stopend3、解题程序:program main implicit none integer,external ::gcd write(*,*) gcd(18,12)end programinteger function gcd(A,B) implicit none integer A,B,BIG,SMALL,TEMP BIG=max(A,B) SMALL=min(A,B) do while( SMALL /= 1 ) TEMP=mod(BIG,SMALL) if ( TEMP=0 ) exit BIG=SMALL SMALL=TEMP end do gcd=SMALL returnend function