1、FORTRAN 90笔试试卷(二三年五月)一、选择题1、关于FORTRAN90的CASE语句,下列说法中正确的是 ( 1 ) 。 CA、在一个CASE结构中,CASE DEFAULT语句可出现多次B、对于给定的CASE结构,CASE值范围可以有重叠C、每个CASE 的值必须与表达式的类型相同D、如果表达式为字符型,CASE 的值可以是任意长度和类型的字符2、关于数据对象的INTENT属性,下列说法中不正确的是 ( 2 ) 。 BA、INTENE属性只能用于子程序中,说明虚元的意图属性B、INTENT属性也可用于具有指针类型的虚元C、INTENT属性只能是IN、OUT和INOUT三种之一D、IN
2、TENT属性可用来说明多个虚元,虚元之间用逗号分开3、关于FORTRAN90的续行符,以下说法不正确的是 ( 3 ) 。 DA、一条语句最多有39个续行B、在非注释行上,续行符可以出现在行尾,也可以出现在行首C、当续行符出现在注释语句中,则失去了续行的功能D、续行符后可以是空行4、关于CYCLE语句,以下说法正确的是 ( 4 ) 。 AA、CYCLE语句只能用于循环结构中B、CYCLE语句可用于任何语句结构中C、CYCLE语句提供了循环的出口语句D、CYCLE语句提供了循环的入口语句5、关于数据对象的OPTIONAL属性,以下说法不正确的是 ( 5 ) 。 BA、OPTIONAL属性只能用于子
3、程序或接口块中B、OPTIONAL可以用于任何程序单元中C、可以用PRESENT函数 说明为OPTIONAL的虚元是 可用D、说明为OPTIONAL属性的虚元可以 有 元对 6 、 出语句 PRINT * , 的 出结果是 ( 6 ) 。AA、 B、 C、 D、语法 7、 有数 定 INTEGER(1) A,B DIMENSION A(5),B(4,7)则在 行下列语句后,A(4)的值为 ( 7 ) 。 CA=8B=5A=A-B(2,1 5)A、8 B、5 C、3 D、语法 8、关于USE语句,以下说法正确的是 ( 8 ) 。 BA、USE语句可以出现在程序单元的任何 B、一个程序 可以 多个
4、USE语句C、 ONLY选 的USE语句可以 块中的 D、用USE语句 的 不能重 9、关于FORTRAN90的 类型,以下说法 的是 ( 9 ) 。 CA、 类型是TYPE语句定 的B、 类型的 字不能与任何 在类型 或 类型 相同C、 类型的分不可以是 类型D、 类型的分用可以用符号%10、MERGE函数可以currency12个同类型同“的数 ,语法式为MERGE(数 1,数 2,MASK),以下说法中 的是 ( 10 ) 。 DA、MASK 当是与数 1和数 2同“的数 B、函数fi据MASK中fl元 的值定数 1或数 2中对 元 的值C、函数值是与数 1和数 2同“同类型的数 D、函
5、数值是与数 1或数 2同类型的一个值11、FORTRAN90中的数 (数 的一 分),可用下三元 式表。 有数说明为B(10,6,4),则数 B(8 11 2,5,2 3)的结果是 ( 11 ) 。AA、“为(2,2)的数 B、“为(2,2,2)的数 C、一”数 D、语法 12、关于FORTRAN 90的指针,以下说法不正确的是 ( 12 ) 。 CA、指针不能具有INTENT属性和PARAMETER属性B、指针在 行指针值或ALLOCATE语句之 ,不据 空间C、指针可以指任何D、指针可以用DEALLOCATE语句释据的 空间13、以下关于 块 的说法中,不正确的是 ( 13 ) 。 BA、
6、 块 是 的,以不能和任何程序单元同 B、 块 可以用任何字符C、 块 长度最多不能31个字符D、 块 中可以 下14、以下 属于法的 型数的一 是 ( 14 ) 。32,767 7#65 +8.57 #2F A7#2D 47_2 36_3 2#101111 D A、 B、 C、 D、 15、以下 属于法的 型数的一 是 ( 14 ) 。32.7_4 5.0E3 8.57 2E-3_4 1,234.5 4.8E48 3.6_6 $2.4 A A、 B、 C、 D、 二、 空题1、下列程序 出的 一行为 ( 1 ) , 三行为 ( 2 ) 。 8 8REAL, ALLOCATABLE : A(:
7、,:,:)LOGICAL, ALLOCATABLE : MASK(:,:,:)INTEGER B(3), C(3)INTEGER IALLOCATE (A(5, 4, 3)ALLOCATE (MASK(3, 4, 5)IF(ALLOCATED(A) .AND. ALLOCATED(MASK) THENB = SHAPE(A); C = SHAPE(MASK)DO I=1,3PRINT*, B(I)+C(I)ENDDOEND2、下列程序 行后,ARRAY(4,1)= ( 3 ) ,ARRAY(1,3)= ( 4 ) ,ARRAY(2,3)= ( 5 ) 。 4,11,16IMPLICIT NON
8、EINTEGER(1),DIMENSION(1:4,1:4):ARRAY=0INTEGER(1):I=1,J=1,N1=1,NC=4,KDO K=1,16ARRAY(I,J)=KIF(IN1 .AND. J=NC)THEN I=I-1ELSEIF(I=N1 .AND. JN1+1)THENJ=J-1IF(I=N1 .AND. J=N1+1)THENNC=NC-1; N1=N1+1ENDIFENDIFENDDOPRINT (4X,4I3),(ARRAY(I,J),J=1,4),I=1,4)END 3、下列程序运行后,AR1(1,1)= ( 6 ) , AR1(1,3)= ( 7 ) ,AR1(2
9、,3)= ( 8 ) 。INTEGER TSOURCE(2, 3), FSOURCE(2, 3), AR1 (2, 3) 答案: 1, 3, -2LOGICAL MASK(2, 3)TSOURCE = RESHAPE(/1, 4, 2, 5, 3, 6/),(/2, 3/)FSOURCE = RESHAPE(/7, 0, 8, -1, 9, -2/), (/2, 3/)MASK =RESHAPE(/.TRUE.,.FALSE.,.FALSE.,.TRUE.,.TRUE.,.FALSE./),(/2,3/)AR1 = MERGE(TSOURCE, FSOURCE, MASK) PRINT*,AR
10、1END4、下列程序 行后, 出结果为 ( 9 ) 。 5.0 5.0 5.0 5.0 REAL A(3, 3), B(4)INTEGER K(4)K = (/3, 1, 1, 2/)A = 5.0B = A(3, K)PRINT*,BEND5、下列程序 出的 一行为 ( 10 ) , 二行为 ( 11 ) , 三行为 ( 12 )INTEGER, POINTER : arrow (:)INTEGER, ALLOCATABLE, TARGET : bullseye (:,:) 5 5 5 5ALLOCATE (arrow (1:4) 8 1 8 1 8arrow = 5 1 8 1 8WRIT
11、E (*,(1x,4I4) arrowALLOCATE (bullseye (1:5,3)bullseye = 1bullseye (1:5:2,2) = 8WRITE (*,(1x,5I4) bullseye(:,2)arrow = bullseye (2:5,2)WRITE (*,(1x,4I4) arrowDEALLOCATE (arrow, bullseye)END6、下列程序 出的 一行为 ( 13 ) , 三行为 ( 14 ) , 五行为 ( 15 ) 。PROGRAM TEST6IMPLICIT NONECHARACTER*3,DIMENSION(8):letter abcdle
12、tter=(/abc,def,ghi,jkl,mno,pqr,stu,vwx/) ijklCALL test(letter) qrstENDSUBROUTINE TEST(SUB_LETTER)IMPLICIT NONECHARACTER*4,DIMENSION(5):SUB_LETTERINTEGER(1):iDO i=1,5WRITE(*,100)i,sub_letter(i)ENDDO100 FORMAT(1X,sub_letter(,I1,)=,A4)END SUBROUTINE test7、 入 序(在 入程中 序)。以任意次序 入20个数, currency1 一个数入数A的 一个
13、元 中,以后 入的数 与 入数 中的数 行 ,确定在 的 列中 的 。currency1 后的元 后一个 , 入的数据 入空出的 中, 在数 A中的数 是 列的。20个数据 后 出数 A。以下程序 功能。PROGRAM mainIMPLICIT NONEINTEGER,PARAMETER:n=20REAL(4),DIMENSION(n):aREAL(4):xINTEGER(1):i,numnum= ( 16 ) (16) 0DO i=1,nREAD(*,*)xCALL insert(x,a,num)ENDDOWRITE(*,100)(a(i),i=1,n)100 FORMAT(1x,5F7.2
14、)CONTAINSSUBROUTINE insert(x, a, num)IMPLICIT NONEREAL(4), DIMENSION(*):aREAL(4):XINTEGER(1):num, i, posLOGICAL:searchpos=1search=.TRUE.下列循环 出 数在数 中 的 DO WHILE ( ( 17 ) .AND. poss1(middle:middle) THENleft= ( 22 ) (22) middle+1ELSECYCLE ( 23 ) (23) D1 ENDIFENDDO D2 IF(chs1(middle:middle) middle=middl
15、e+1D3: DO j= ( 24 ) (24) n, middle, -1s1(j+1:j+1)=s1(j:j)ENDDO D3s1(middle:middle)=ch( 25 ) (25) n=n+1ENDDO D1WRITE(*,*)sWRITE(*,*)(s1(i:i),i=1,n) END9、用 长辛卜 求积法计算定积分,法为 (1)首 用梯公式计算 Tn=hf(a)+f(b)/2 中 n=1, h=b-a(2)然后用 长梯法计算 (3)最后用辛卜 求积公式计算 S2n=(4T2n-Tn)/3(4) |S2n-Sn|n,h/2-h,重复(2)与(3)。以下程序用辛卜 求积公式计算:
16、SUBROUTINE SIMP(a,b,f,eps,t)IMPLICIT NONEREAL(4):a, b, f, t, h, t1, s1, x, t2, s2, eps, pINTEGER(2):n=1, kh=b-at1= ( 26 ) (26) h*(f(a)+f(b)/2.0s1=t110 p=0.0DO k= ( 27 ) (27) 0, n-1x=a+(k+0.5)*hp=p+f(x)ENDDOt2=(t1+h*p)/2.0s2=(4*t2-t1)/3.0IF( ( 28 ) ) THEN (28) ABS(s2-s1)=epst1=t2n=n+nh=h/2.0s1=s2GOTO 10ENDIFt=s2ENDPROGRAM MAINIMPLICIT NONE( 29 ) (29) EXTERNAL fREAL(4):f,a,b,s,epsa=0.0b=1.0eps=0.000001CALL simp( ( 30 ) ) (30) a,b,f,eps,sWRITE(*,FMT=(“S=“,F12.7)SEND PROGRAM mainFUNCTION f(x) RESULT(F_RESULT)IMPLICIT NONEREAL(4):X,F_RESULTF_result=LOG(1+x)/(1+x*x)END