Fortran模拟试卷1-8 联系客服

发布时间 : 星期一 文章Fortran模拟试卷1-8更新完毕开始阅读689aef09844769eae009ed4a

FORTRAN90模拟测验一(笔试部分)

一. 选择题(从4个可选答案中选择一个正确答案添入空白处)

1.FORTRAN 90规定程序中名称的长度不能超过 个字符。 A.8 B.15 C.31 D.63

2.关于FORTRAN 90程序单元,以下四种说法中正确的是 。

A. 一个FORTRAN 90程序由多个程序单元组成,其中有一个且只能有一个主程序单元 B. 一个FORTRAN 90程序由多个程序单元组成,其中有一个且只能有一个模块单元 C. 一个FORTRAN 90程序允许有多个程序单元,但每类程序单元只能有一个

D. 一个FORTRAN 90程序允许有多个程序单元,但主程序单元和模块单元只能有一个 3.FORTRAN 90程序中允许使用的三个通用标志符是 。

A.!% & B.@ , ; C.! ; & D.; & *

4. 下列 中,所指的FORTRAN 90表达式都是正确的。 ① ∣A*x+B*y+C*z∣ ② b*b+4*a*c

③ .NOT. .TRUE. .AND. .FALSE. ④ ?A?<= ch <= ?Z? ⑤ X>100 = = .TRUE. ⑥ SQRT(A2+B2)

⑦ π*R**2 ⑧ ?HAPPY ?+?NEW ?+?YEAR.? A. ①②⑤ B.②③④⑧ C.②③⑤ D.②⑤⑥⑦

5. FORTRAN 90规定,变量类型声明从高到低的优先顺序是 。

A. 隐含约定(I-N规则)、IMPLICIT声明、类型声明 B. 类型声明、隐含约定(I-N规则)、IMPLICIT声明 C. 类型声明、IMPLICIT声明、隐含约定(I-N规则) D. IMPLICIT声明、类型声明、隐含约定(I-N规则)

6.数组声明语句为:INTEGER,DIMENSION(-5:-1,-3:3,11:15) ::num 数组元素num(-2,1,13)是存储结构中第 个元素。 A.70 B.85 C.90 D.94

7.类型声明语句为:INTEGER(2) I 数据输出语句为:PRINT *,I

变量I中数据输出域宽是 字符。

A.4 B.6 C.9 D.11

8.类型声明语句为:CHARACTER*4 string CHARACTER*14,PARAMETER :: line=?happy new year? 下列语句中不正确的是 。

A. string=line(11:14) B. string=?year?

C.string=?happy birthday? D. line=line//?.?

9. 数组声明语句为:INTEGER num(9)=(/1,2,3,4,5,6,7,8,9/),mm(5) 下列语句中不正确的是 。

A. mm=num(5:9) B. mm=num(5:) C.mm=num(:5) D. mm=num(:)

10.下列关于子程序的有关说法中,不正确的是 。

A. 对于无参函数子程序,调用时函数名后括号可取消

B. 对于无参子例行程序,调用时子例行程序名后的括号可取消 C. 对于有参子程序,形式参数可以是子程序名 D. 对于有参子程序,形式参数可以是星号“*”

11.下列关于接口块的说法中,正确的是 。

1

A. 在程序单元中,如果要使用外部子程序,则必须用接口块进行声明 B. 在程序单元中,如果要使用模块子程序,则必须用接口块进行声明

C. 在程序单元中,对于形式参数为普通变量的外部子例行程序不必用接口块进行声明 D. 在程序单元中,对于形式参数为数组片段的外部子例行程序不必用接口块进行声明 12.下列关于外部子程序的说法中,正确的是 。

A. 外部子程序允许单独放在一个源程序文件中,并与主程序分别编译 B. 外部子程序允许单独放在一个源程序文件中,并与主程序单元一起编译

C. 外部子程序可与主程序单元放在一个源程序文件中,但必须放在PROGRAM语句之前 D. 外部子程序可与主程序单元放在一个源程序文件中,但必须放在END语句之后 13.下列关于模块的说法中,正确的是 。

A. 模块内声明的私有变量,不允许主程序单元存取,但允许外部子程序单元存取 B. 模块内声明的私有变量,允许主程序单元存取,但不允许外部子程序单元存取 C. 模块内声明的公有变量,允许除模块单元以外的其它任何程序单元存取 D. 模块内声明的公有变量,允许所有程序单元存取 14.指针声明语句为:INTEGER,POINTER ::P1,P2

目标变量声明语句为:INTEGER,TARGET ::I=20,J=30 下列语句执行后,I、J的值分别为 。 P1=>I; P2=>J; P1=>P2; P2=>P1

A. 20、20 B. 20、30 C. 30、20 D. 30、30

15.下列语句函数声明中,正确的是 。 A.FUN1(I,I)=5*I-10*I**2 B. FUN2(MAT(5),A)=5*A+MAT(5)

C. FUN3(X,Y,5.0)=X**2+Y**2+5.0**2 D. FUN4(X,Y)=SQRT(X**2+Y**2+5.0**2) 二. 填空题(在空白处添入正确内容)

1.下列程序执行后,num(1,3)= (1) ,num(2,3)= (2) ,num(3,1)= (3) 。 INTEGER(1),DIMENSION(1:3,1:3)::num=0 INTEGER(1)::i=1,j=2,k num(i,j)= 1 DO k= 2,9

i= i-1 ; j= j-1 IF(I<1.AND.j<1)THEN i=i+2; j=j+1

ELSEIF(i<1.AND.j>=1)THEN i=3

ELSEIF(i>=1.AND.j<1)THEN j=3

ELSEIF(i<=3.AND.j<=3)THEN IF(num(i,j )/= 0)THEN i=i+2; j=j+1 ENDIF ENDIF

num(i,j)=k ENDDO

PRINT '(6X,3I3)',((num(i,j),j= 1,3),i= 1,3)

2

END

2. 下列程序执行后,输出的第一行是 (4) ,第二行是 (5) 。 PROGRAM main INTERFACE

RECURSIVE FUNCTION gcd(m,n) RESULT(g_result) INTEGER::m,n,g_result END FUNCTION gcd END INTERFACE

WRITE(* ,FMT=?(1X,”VALUE=”,I4)?) gcd(14,21),gcd(21,18) END PROGRAM main

RECURSIVE FUNCTION gcd(m,n) RESULT(g_result) INTEGER::m,n,g_result IF (n==0) THEN g_result=m ELSE

g_result=gcd(n,mod(m,n)) ENDIF

END FUNCTION gcd

3. 下列程序执行后,输出的第一行是 (6) ,第二行是 (7) 。 PROGRAM main

INTEGER(2),DIMENSION(:),ALLOCATABLE::a,b INTEGER(2),DIMENSION(:,:),ALLOCATABLE::x,y,z LOGICAL,DIMENSION(:),ALLOCATABLE::log INTEGER(4)::c,i,j

ALLOCATE(a(1:9),b(1:9),log(1:9))

a=(/1,2,3,4,5,4,5,6,7,8,9/); b= (/7,30,20,11,25,16,9,12,5/) log=(/.TRUE.,.FALSE.,.TRUE.,.TRUE.,(.FALSE.,i=5,9)/) c=SUM(a,1,log)*MAXVAL(b) WRITE(* ,FMT='(I5)') c

ALLOCATE(x(1:3,1:2),y(1:2,1:3),z(1:3,1:3))

x=RESHAPE((/1,2,1,1,2,1/),(/3,2/)); y=RESHAPE((/2,1,2,2,1,2/),(/2,3/)) z= MATMUL(x,TRANSPOSE(y))

WRITE(* ,FMT='(3I4)')((z(i,j ),j =1,3),i=1,3) END

4. 下列程序执行后,输出的第一行是 (8) ,第二行是 (9) 。 PROGRAM main

COMPLEX(4)::a(2)=(/(3.0,2.0),(4.0,1.0)/),z z=f(a(1),a(2)); z=f(a(2),a(1))

WRITE(* ,FMT='(1X,\ CONTAINS

FUNCTION F(x,y) RESULT(f_result) COMPLEX(4)::x,y,f_result

x=x+2*a(1); y=y-2*a(2); f_result=x-y END FUNCTION F

END PROGRAM main

3

5. 下列程序执行后,输出的第一行是 (10) ,第二行是 (11) 。 PROGRAM main

INTEGER(2),POINTER::p1,p2 INTEGER(2),TARGET::a=4,b=5,c p1=>a; p2=>b ;c=2*p1+3*p2 WRITE(* ,FMT='(I4)') c CALL sp(p1,p2)

c=2*p1+3*p2; WRITE(* ,FMT='(I4)') c END PROGRAM main

SUBROUTINE sp(p1,p2)

INTEGER(2),POINTER::p1,p2,p3 p3=>p1; p1=>p2; p2=>p3 END SUBROUTINE sp

6. 下列程序执行后,输出的第一行是 (12) ,第二行是 (13) 。 FUNCTION s_sum(str1,str2) RESULT(s_result) CHARACTER(len=* ),INTENT(in)::str1,str2 INTEGER ::s_result,i1,j1,i2,j2 i1=1 ; j1=len(str1)

DO WHILE (str1(i1:i1)==' ') i1=i1+1 ENDDO

DO WHILE (str1(j1:j1)==' ') j1=j1-1 ENDDO

i2=1; j2=len(str2)

DO WHILE (str2(i2:i2)==' ') i2=i2+1 ENDDO

DO WHILE (str2(j2:j2)==' ') j2=j2-1 ENDDO

s_result=j1-i1+1+j2-i2+1 END FUNCTION s_sum PROGRAM Main

INTERFACE OPERATOR(+)

FUNCTION s_sum(str1,str2) RESULT(s_result) CHARACTER(len=*),INTENT(in)::str1,str2 INTEGER ::s_result END FUNCTION s_sum END INTERFACE

CHARACTER(len=80)::string1,string2 INTEGER::m=20,mresult,sresult

string1=' I am a teacher. '; string2='He is a student. ' sresult=string1+string2; mresult= sresult+m print*,sresult; print*,mresult

4