一、选择题1、下列关于"SUBROUTINE MAP(X,Y)"语句行的叙述中,不正确的是( )A) 这是子程序的第一个语句B) 字符串"MAP"是子程序名C) 变量X是子程序的形参D) 子程序执行后,MAP将返回整型数据2、FORTRAN表达式"2/4+"的值是( )A) B) 1 C) D) 03、阅读下列FORTRAN程序:PI=3.WRITE(*,' ')PIEND程序运行后输出结果是( )A) B) 3.1415 C) D)4、圆的直径存放在整型变量K之中,下列计算圆面积的表达式中正确的是( )A) *K*K/4 B) *(K*K/4)C) *(K/2)**2 D) *(K/2)*(K/2)5、要判断"月收入M在2000元以上(含2000元)且5000元以下)不含5000元)"的职工,应该使用的逻辑表达式是( )A) M .GE. 2000 .AND. M .LE. 5000 B) M .GE. 2000 .OR. M .LE. 5000C) M .GE. 2000 .AND. M .LT. 5000 D) M .GE. 2000 .OR. M .LT. 50006、设FORTRAN子程序如下:SUBROUTINE SUB(I,X)B=I+1X=X+BEND若主程序中的变量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) , B) +00 C) 2/3 D) 'Very good!'8、阅读下列FORTRAN程序:F=DO 20 K=3, 7, 3DO 20 L=K-1, K20 WRTTE(*,'(I3, 'K, F*KEND程序运行结果的最后一行是( )A) 3 B) 6 6.0 C) 6 D) 79、在FORTRAN中,下列运算符的优先顺序是( )A) 逻辑运算,关系运算,算术运算B) 关系运算,逻辑运算,算术运算C) 算术运算,关系运算,逻辑运算D) 关系运算,算术运算,逻辑运算10、使用FORTRAN内部函数时,所给的自变量( )A) 只能是常量B) 只能是变量C) 只能是常量或者变量D) 可以是常量、变量或者表达式11、设X=, Y=, Z=, L=.TRUE.,则下列FORTRAN表达式中值为.TRUE.的是( )A) X+ B) .NOT.C) . D) Y+12、下列输出语句行中正确的是( )A) WRITE(*,*)(A(K,L),K=1,3,L=1,3)B) WRITE(*,*)A(K,L),K=1,3,L=1,3C) WRITE(*,*)((A(K,L),K=1,3),L=1,3)D) WRITE(*,*)(A(K,L),K=1,3),L=1,313、给定下列FORTRAN子程序如下:SUBROUTINE SUB(K,A)A=SQRT(K*K+END下列调用语句中正确的是( )A) CALL SUB(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))ENDSUBROUTINE 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 23 6 2 6 2 5 3 415、阅读下列FORTRAN程序:INTEGER A(3,3)DO 10 K=1,3DO 10 L=1,310 A(K,L)=K*10+LWRITE(*,'(1X,3I3)')AEND程序运行结果是: ( )A) 11 21 31 B) 11 12 13 C) 31 32 33 D) 33 32 3112 22 32 21 22 23 21 22 23 32 22 2113 23 33 31 32 33 11 12 13 31 21 1116、阅读下列FORTRAN程序:WRITE(*,10)'YEAR:', 199610 FORMAT(/3X,A,I4)END程序运行结果是(^代表空格,下同) ( )A) ^^^^^YEAR:1996 B) ^^YEAR:1996C) 空白行D) 空白行^^^^^YEAR:1996 ^^YEAR:199617、某函数子程序中使用了IMPLICIT、READ、COMPLEX和FUNCTION四种语句,其中属于可执行语句的是: ( )A)FUNCTION B) READ C) COMPLEX D) IMPLICIT18、阅读下列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,4WRITE (*,100)(M(I,J),J=1,I)10 CONTINUE100 FORMAT(1X,4I2)END程序运行的结果是( )A) 1 2 3 4 B) 1 5 9 3 C) 1 D) 16 7 8 6 0 4 2 6 2 6 61 2 1 5 3 7 1 9 3 7 1 16 6 4 8 2 6 3 4 4 8 2 6 619、阅读下列FORTRAN程序:CHARACTER*10 A, B*6DO 10 I=1,10A(I:I)=' '10 COUNTINUEA(1:5)='ABCDE'B='FGHIJK'A(4:9)=BWRITE(*,100) A100 FORMAT(1X,A)END程序运行结果是:( )A) ABCDEFGHIJ B) ABCDEGHIJK C) ABCFGHIJK D) BCDEFGHIJK20、阅读下列FORTRAN程序:INTRINSIC SIN,COSWRITE(*,*)FUN(SIN,/FUN(COS,ENDFUNCTION FUN(F,X)X=X*180FUN=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=SUMX2=DO 10 K=1,N【2】SUMX=SUMX+XSUMX2=SUMX2+X*X10 CONTINUEAV=SUMX/NAV2=SUMX2/NS2=AV2-AV*AVSIGMA=【3】END2、下列FORTRAN程序的功能是将30个学生的考试成绩读入数组A,然后统计并且输出最高的分数以及小于60分、60~80分与大于80分的三个分数段的学生数。
请在程序中的下划线处填入合适的内容。
【4】A(30), B, C(3)DATA C/3*0/READ(*,*)A【5】DO 10 K=2,30IF(A(K). B=A(K)10 CONTINUEDO 30 K=1,30IF (A(K).C(1)=C(1)+1IF (A(K).C(3)=C(3)+1IF(A(K). 【6】A(K).C(2)=C(2)+130 CONTINUEWRITE(*,*) B,CEND3、下列FORTRAN程序的功能是用对分法求出方程在区间(1,5)中的一个实数根,要求输出根的近似值和对分次数。
请在程序中的下划线处填入合适的内容。
【7】=*X***DATA XL,XR,N/,,0/10 N=N+1X=(XL+XR)/FX=FUN(X)IF (ABS(FX).WRITE(*,'(1X,A2,,A5,I4)')'X=',X,'N=', NELSEIF(FUN(XR)* THENXR=X【8】XL=XENDIF【9】END4、下列FORTRAN程序的功能是计算多项式y=2+++ 在x=时的值。
主程序调用了函数子程序POLY。
请在程序中的下划线处填入合适的内容。
PROGRAM PVALUEREAL A(6)DATA A/【10】/DATA N,X/6,Y=POLY(A,N,X)WRITE(*,'(1X,A5,6F')'a(k)=',AWRITE(*,'(1X,A2,,A6,')'X=',X,'; Y=',YENDFUNCTION POLY(B,M,V)【11】POLY=B(1)FV=DO 10 K=2, MFV=FV*V10 POLY=POLY+【12】END5、下列FORTRAN程序的功能是使用筛法筛选出N以内的所有素数并输出。
其算法如下:在N 以内的自然数列中先筛除2的倍数(不包括2);在2之后未筛去的第一个数是3,于是再筛除3的倍数;在3之后未筛去的第一个数是5,于是再筛除5的倍数;如此重复下去,直到遇见筛剩下的第一个数是最接近N的平方根的那个数为止。
请在程序中下划线处填入合适的内容。
PARAMETER (N=100)【13】A(N),P(N)A(1)=0DO 10 K=2,N10 A(K)=KDO 20 K=3,N20 IF(MOD(A(K),2).A(K)=0ISR=SQRT(FLOAT(N))DO 30 M=3,ISR,2DO 30 K=M+2, N30 IF(A(K).【14】M=1DO 40 K=1,NIF(A(K).THENP(M)=【15】ENDIF40 CONTINUEWRITE(*,'(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)从小到大排列。