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.14
2、15 C) 0.31416 D) 3.1416 4、圆直径存储在整型变量K之中,下列计算圆面积表达式中对的是( ) A) 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
3、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 若主程序中变量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.1416
4、D+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 D) 7 180.0 9、在FORTRAN中,下列运算符优先顺序是( ) A) 逻辑运算,关系运算,算术运算 B) 关系运算,逻辑运算,算术运算 C) 算术运算,关系运算,逻辑运算
5、 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.OR.(L.EQV.Y+X.EQ.Z) D)
6、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
7、N,N) 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 程序运营成果是(
8、 ) A) 1 4 B) 1 5 C) 1 4 D) 1 2 3 6 2 6 2 5 3 4 15、阅读下列FORTRAN程序: INTEGER 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
9、 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) ^^YEAR:1996 C) 空白行 D) 空白行 ^^
10、^^^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 10
11、0 FORMAT(1X,4I2) END 程序运营成果是( ) 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
12、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) ABCFGHIJK D) BCDEFGHIJK 20、阅读下列FORTRAN程序: INTRINSIC SIN, COS WRITE(*,*)FUN(SIN,30.0)/FUN(COS,30.0) END FUNCTION FUN
13、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)/n]2 请在程序中下划线处填入适当内容。 【1】 SIGMA(Z,N) REAL Z(N) SUMX=0.0 SUMX2=0.0 DO 10 K=1,N 【2】 S
14、UMX=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分、60~80分与不不大于80分三个分数段学生数。请在程序中下划线处填入适当内容。 【4】 A(30),B,C(3) DATA C/3*0/ READ(*,*)A 【5】 DO 10 K=2,30 IF(A(K).GT.B) B=A(K) 10 CONTINUE
15、 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
16、N+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 P
17、VALUE REAL A(6) DATA A/【10】 / DATA N,X/6, 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以内所有素数并输出。其算法如
18、下: 在N 以内自然数列中先筛除2倍数(不涉及2);在2之后未筛去第一种数是3,于是再筛除3倍数;在3之后未筛去第一种数是5,于是再筛除5倍数;如此重复下去,直到碰见筛剩余第一种数是最接近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
19、 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 WRITE(*,'(1X,10I8)')(P(K),K=1,M-1) END 三、编写程序题 1、以循环来计算 1/1!+1/2!+1/3!+1/4!+……+1/10! 值。 2、编写一种程序计算圆面积,输入两个参数,一种参数为输入圆半径长,另一种参数用来返回圆面积。 3、运用选取排序法编制程序,将数组
20、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、B 9、C 10、D 11、B 12、C 13、D 14、A 15、A 16、D 17、B 18、C 19、C 20、C 二、填空题 【1】FUNCTION 【2】X=Z(K) 【3】SQRT(S2) 【4】 INTEGER或者REAL 【5】 B=A(1) 【6】.AND.
21、 【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,parameter ::max=10 integer i
22、 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 stop end program 2、解题程序: program main implicit none real radius,area write(*,*) "请输入半径长" read(*,*) radius call CircleArea(radius,area)
23、 write(*,"(' 面积 = 'F8.3)") area stop end program subroutine CircleArea(radius,area) implicit none real,parameter ::PI=3.14159 real radius,area area = radius*radius*PI end subroutine 3、解题程序: program main implicit none integer,parameter ::size=10 integer ::a(size) = (/ 5,3,
24、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 if end do end do write(*,"(10I4)") a stop end 一、选取题 1、下列关于FORTRAN源程序编辑规则论述之中,对的是( ) A) IMPLICIT语
25、句可以放在REAL语句行之后 B) DATA语句可以在放在紧靠END语句行之前 C) 注释行不可以放在END语句行之后 D) FORMAT语句可以放在PROGRAM语句行之前 2、下列FORTRAN源程序变量名之中,不符合规则是( ) A) W B) W3 C) -3 D) W3W 3、若FORTRAN中一种INTEGER型数据占用2个字节,那么该类型数据值范畴是( ) A) - B) -32768 32767 C) 0 D) 0 65535 4、阅读下列程序
26、X=0.618 WRITE(*,'(E12.4)')X END 程序运营后显示成果是( ) A) .6180 B) 6.180E-01 C) .0618E+01 D) .6180E+00 5、梯形上底为A,下底为B,高为H,计算其面积FORTRAN表达式中错误是( ) A) 1/2*(AB)*H B) (A+B)*H/2 C) (A+B)/2*H D) 0.5*(A+B)*H 6、要选拔身高T>1.7米且体重W<62.5公斤人,FORTRAN逻辑表达式是( ) A) T.CE.1.7.AND
27、W.LE.62.5 B) T.LE.1.7.OR.W.GE.62.5 C) T.GT.1.7.AND.W.LT.62.5 D) T.GT.1.7.OR.W.LT.62.5 7、在FORTRAN变量类型阐明语句中没有( ) A) REAl语句 B) CHAR语句 C) INTEGER语句 D) LOGICAL语句 8、一次成功FORTRAN源程序编译操作,不能( ) A) 同步编译一种主程序和一种子程序 B) 同步编译几种子程序 C) 同步编译一种主程序和几种子程序 D) 同步编译几种主程序 9、阅
28、读下列程序 F=1.0 DO 20,J=3,7,2 DO 20,K=J-1,J 20 F =F*K WRITE(*,'(13,F8.1)')J,F END 程序运营成果是 A) 3 6.0 B) 5 120.0 C) 9 5040.0 D) 9362880.0 10、阅读下列程序 CHARACTER*10 W DO K=1,10 READ *,W IF (W(1:2).EQ.'AB'.OR.W(1:2).EQ.'ab')WRITE(*,*)'',W ENDDO END 程序功能是( ) A) 首字符是A或B字符串被输出显示 B
29、) 第一、二个字符是AB或ab字符串被输出显示 C) 首字符是a或b字符串将被输出显示 D) 第一、二个字符是Aa或Bb字符串将被输出显示 11、阅读下列程序 LOGICAL L READ(*,*)A,B L=A.GT.B IF(L)THEN X=B+2*A ELSE X=B END IF WRITE(*,*)X END 使用键盘为上述程序输入两个初值4和3,其输出X值是( ) A) 4.0 B) 3.0 C) 11.0 D) 10.0 12、阅读下列程序 READ(*,*)K WRITE(*,100)K 100 FORMAT(I
30、5) END 程序运营时输入初始值12345,那么显示成果是 A) 2345 B) 12345 C) **** D) ***** 13、阅读下列程序 INTEGER F F(X,Y)=X+Y A=-2.5 B=2.1 B=B+F(A,B) WRITE(*,'(F3.1)')B END 程序运营成果是( ) A) .1 B) .7 C) 2.1 D) 1.7 14、阅读下列程序 A=3.5 CALL SUBA(A,A,A) WRITE(*,'(F4.1)')A END SUBROUTINE SUBA(X,Y,Z) Y
31、Y-2.0 Z=Z+X END 程序运营成果是( ) A) 7.0 B) 5.0 C) 3.5 D) 1.5 15、阅读下列程序 CHARACTER A*4,B*5,C*4 DATA A,B,C/'BIG’,'MIDDLE','SMALL'/ WRITE(*,20)A,B,C 20 FORMAT(1X,A2,A3,A4) END 程序运营成果是( ) A) BIGMIDDLE B) ********* C) BIGMIDSMA D) BIMIDSMAL 16、阅读下列程序 N=0 DO 10 K=1,3 N =N
32、1 M=K*N 10 CONTINUE WRITE(*,'(1X,2I3)')M,K END 程序运营成果是( ) A) 9 4 B) 9 3 C) 12 4 D) 12 3(#^) 17、阅读下列程序 FUN(c,d)=a*c+b/d DATA 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.O 18、阅读下列程序 LOGICAL L1,L2,L3,L4,L5 DATA L1
33、L2,L3/3*.TRUE./ L4=.NOT.L1.AND..NOT.L2.AND.L3 L5=.NOT.L1.OR..NOT.L2.OR.L3 WRITE(*,*)L4,L5 END 程序运营成果是( ) A) T T B) T F C) F F D) F T 19、阅读下列程序 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
34、 6 9 C) 4 5 6 D) 7 8 9 20、阅读下列程序 INTEGER A(100),G READ(*,*)N,(A(I),I=1,N) DO 10 I=1,N-1 G=I DO 20 J=I+1,N IF(A(J).LT.A(G))THEN G=J ENDIF 20 CONTINUE K=A(I) A(I)=A(G) A(G)=K 10 CONTINUE WRITE(*,'(1X,10I2)')(A(I),I=1,N) END 程序运营时输入初始值是3,6,9,8,则运营成果是( ) A) 6 9 8 B)
35、 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.0 DATA XL,XR,N/1.O,5.0,0/ 10 CONTINUE 【1】 X=(XL+XR)/2.0 【2】 IF(ABS(FX).LT.1E-6 .OR.N.GE.1000)THEN WRITE(*,'(1X,A2,F12.7,A5,14
36、)')'X=',X,'N=',N ELSE IF(FUN(【3】)*FX.GE.0.0)THEN XR=X ELSE XL=X ENDIF GOTO 10 ENDIF END 2、阅读下列程序.其功能是计算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(*,'(1X,A5,6F5.1)')'a(k)=',A WRITE(*,'(1
37、X,A2,F5.1,A6,F8.2)')'X=',X,';Y=',Y END FUNCTION POLY(B,M,V) DIMENSION B(M) POLY=B(1) FV=1.0 DO 10K=2,M FV=FV*V 10 【6】=POLY+B(K)*FV END 3、函数子程序DTOH可以将一种十进制正整数DEC转换为一种表达十六进制数字符字符串,其长度不超过8。例如127转换为'7F'。算法是:将DEC除16取余,将所得商再除16取余,如此重复,直到商和零为止,最后按照逆序输出所得各个余数。请在其中____处填入恰当内容。 CHARACTER*8 FUNCTIO
38、N DTOH(DEC) INTEGER DEC,R,POS POS=9 DTOH='' 111 CONTINUE 【7】 IF(POS.GE.1)THEN R=MOD(DEC,16) IF(R.LT.1O)THEN 【8】=CHAR(ICHAR('0')+R ) ELSE DTOH(POS:POS)=CHAR(ICHAR('A')+R-10) ELSE DTOH='**********' GOTO999 ENDIF DEC=DEC/16 IF(【9】)GOTO 111 999 CONTINUE END PROGRAM DECHEX CHARACTER*
39、8 DTOH WRETE(*,*) DTOH(127) END 4、有一种十进制四位数ABCD与一种十进制三位数CDC差等于十进制三位数ABC.下列程序按"ABCD=9876"样式打印出ABCD这个数。请在其中____外填入恰当内容. INTEGER A,B,C,D DO 10 A=1,9 DO 10 B=0,9 DO 10 C=1,9 【10】 L=1000*A+100*B+10*C+D M=100*C+10*D+C N=100*B+C IF(【11】)WRITE(*,'(【12】)')'XABCD=',A,B,C,D 10 CONTINUE END 5、阅读下
40、列程序,其功能是使用筛法选出N以内所有素数并显示算法在N以内自然数列中先筛除2倍数;在2之后筛乘下第一种数是3,于是再筛除3倍数;在3之后筛剩余第一种数是5,于是再筛除5倍数;如此重复下去,直到碰见筛剩余第一种数是最接近N平方根那个数为止。请在其中____处填入恰当内容。 PROGRAM PRINES PARAMETER (N=100) INTEGER A(N),P(N) DO 10 K=1,N 10 A(K)=K DO 20 K=3,N 20 IF(【13】.EQ.0)A(K)=0 ISR=SQRT(REAL(N)) DO 30M=3,ISR,2 DO 30K=M+2,N
41、 30 IF(A(K).NE.0.AND.MOD(A(K),M).EQ.0)A(K)=0 M=1 DO 40K=2.N IF(A(K).NE.0)THEN 【14】 M=M+1 ENDIF 40 CONTINUE WRITE(*,'(1X,1018)')(P(K),【15】) END 三、编写程序题 1、以循环来计算等差数列 1+3+5+7+……+99 值。 2、运用选取排序法编制程序,将数组A中所有数值(5,3,6,4,8,7,1,9,2,10)从大到小排列。 3、编制函数GCD(A,B)计算输入两个整数A,B最大公因
42、子。 参照答案 一、选取题 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) 【6】 POLY 【7】POS=POS-1
43、 【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 st
44、op end program 2、排序程序: program main 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 !a(i)跟a(j)互换 t=a(i) a(i)=a(j) a(j)=t end
45、if end do end do write(*,"(10I4)") a stop end 3、解题程序: program main implicit none integer,external ::gcd write(*,*) gcd(18,12) end program integer 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 return end function






