FORTRAN90模拟测验.docx

上传人:b****2 文档编号:16913860 上传时间:2023-04-24 格式:DOCX 页数:83 大小:49.18KB
下载 相关 举报
FORTRAN90模拟测验.docx_第1页
第1页 / 共83页
FORTRAN90模拟测验.docx_第2页
第2页 / 共83页
FORTRAN90模拟测验.docx_第3页
第3页 / 共83页
FORTRAN90模拟测验.docx_第4页
第4页 / 共83页
FORTRAN90模拟测验.docx_第5页
第5页 / 共83页
点击查看更多>>
下载资源
资源描述

FORTRAN90模拟测验.docx

《FORTRAN90模拟测验.docx》由会员分享,可在线阅读,更多相关《FORTRAN90模拟测验.docx(83页珍藏版)》请在冰豆网上搜索。

FORTRAN90模拟测验.docx

FORTRAN90模拟测验

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

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

1.下列字符串中可用作FORTRAN90变量名的是A。

(教材78)

A.ABCB.A-BCDC.2ABCD.AB.C

2.下列数据中不符合FORTRAN90常数表示的为D。

(教材70)

A.21.50B.+0.0D0C..TRUE.D.$1000

3.执行WRITE(8,'(1X,2I4)')(I,I=1,3)后生成B个记录。

(教材146)

A.1B.2C.3D.12

4.数学表达式的FORTRAN表达式为B。

(教材103)

A.SQRT(X)**3)*LOG(X**2+Y**2)/XB.SQRT(X**3)*LOG((X**2+Y**2)/X)

C.(SQRT(X))**3*LN((X**2+Y**2)/X)D.SQRT(X**3)*LN(((X**2)+Y**2)/X)

5.表达式:

-B+SQRT(B*B-4.0*A*C).LE.3E-5值的类型是A。

(教材84)

A.逻辑型B.整型C.实型D.字符型

6.下面格式输入语句(教材119)

READ(*,‘(3F3.1)’)X

如果输入1234.567

则X的值为B。

A.123.0B.12.3C.1234.D.1234.567

7.FORTRAN90语言中变量名长度为C个字符。

(教材58)

A.1-8B.8C.1-31D.31

8.按隐含约定,设X=2.5,Y=1.0,Z=3.0(教材93)

执行赋值语句I=X+Y/Z后I的值为B。

A.2.0B.2C.3D.3.0

9.下列语句中那个语句是错误的是C。

(教材98)

A.READ(*,*)XB.READ*,XC.PRINT(*,*)XD.PRINT*,X

10.说明语句REALA(1:

2,-1:

10)说明数组A的元素个数为D。

(教材200)

A.11B.12C.22D.24

11.M能被N整除的FORTRAN表达式为D。

(教材88)

A.(M/M)=0B.(MMODN).EQ.0C.(M/N).EQ.0D.MOD(M,N).EQ.0

12.以下关于接口块的说法中,不正确的是C。

(教材365)

A.通知编译程序主调程序调用过程时所需要的接口信息。

B.可用于重载赋值

C.接口块中可以包含可执行语句D.可用于自定义运算符

13.以下关于FORTRAN90中有关哑元(形参)、实元(实参)说法中,不正确的是A。

(教材265)

A.实元和哑元个数一定要相等B.实元和哑元个数可以不相等

C.哑元可以用可调数组D.哑元可以用假定形状数组

14.下列关键字中不能用于说明变量属性的是C。

(教材182)

A.SAVEB.OPTIONALC.CYCLED.INTENT

15.以下关于派生类型的说法中,不正确的是C。

(教材294)

A.派生类型说明中,不能有任何可执行语句

B.可将一个派生类型变量的值整体赋给另一个派生类型变量

C.派生类型成员为字符型时,长度可以不确定

D.派生类型成员可以是自身同类型的指针

二、填空题(在空白处添入正确内容)

1.阅读以下程序:

FUNCTIONfac(A)RESULT(rfac)

INTEGERA,rfac

INTEGER,SAVE:

:

C=3

B=1

C=C+1

rfac=A+B+C

ENDFUNCTION

PROGRAMmain

INTEGER:

:

A=3,J,fac

DOJ=0,2

PRINT*,fac(J)

ENDDO

ENDPROGRAMmain

执行以上程序后,输出的第一行是5,第三行是9。

2.阅读以下程序:

SUBROUTINEswap(S1,S2)

CHARACTER(*)S1,S2

CHARACTER(3)T

T=S1;S1=S2;S2=T

ENDSUBROUTINE

PROGRAMMAIN

CHARACTER(3):

:

S1='BD',S2='BC',S3='AB'

IF(S1>S2)CALLswap(S1,S2)

IF(S2>S3)CALLswap(S2,S3)

IF(S1>S2)CALLswap(S1,S2)

PRINT*,S1;PRINT*,S2;PRINT*,S3

ENDPROGRAMMAIN

执行以上程序后,输出的第一行是AB,第二行是BC,第三行是BD。

3.阅读以下程序:

MODULEaa

INTEGER:

:

J=2

ENDMODULEaa

SUBROUTINEp()

USEaa

DOI=1,3

J=J+1

PRINT'(I3\)',J

ENDDO

PRINT*

ENDSUBROUTINE

PROGRAMMAIN

USEaa

DOI=0,2

CALLp()

ENDDO

PRINT*,I

ENDPROGRAMMAIN

执行以上程序后,输出的第一行是345,第二行是678,第三行是91011。

4.阅读以下程序:

PROGRAMMAIN

INTEGER:

:

A(3,3),I,J,K,N

DOK=1,5

IF(K<=3)THEN

DOI=1,K

N=N+1

A(I,K-I+1)=N

ENDDO

ELSE

DOI=1,6-K

N=N+1

A(K-3+I,4-I)=N

ENDDO

ENDIF

ENDDO

DOK=1,3

DOI=1,3

PRINT'(I3\)',A(K,I);

ENDDO

PRINT*

ENDDO

ENDPROGRAMMAIN

执行以上程序后,A(1,3)的值是4,A(2,2)的值是5,A(3,1)的值是6。

5.阅读以下程序:

sum=1.0;ID=1.0;K=1

10K=(-1.0)*K

ID=ID*2.0

sum+K/ID

IF(ID.LE.7)GOTO10

WRITE(*,*)sum

WRITE(*,*)ID

END

执行以上程序后,输出的第一行是1.0,第二行是8

6.阅读以下程序:

REALA(10),IP

DOK=1,10

A(K)=IP(K*2)/IP(K)

ENDDO

WRITE(*,100)A

(1),A

(2)

100FORMAT(1X,2F3.1)

END

REALFUNCTIONIP(N)

M=0

DOK=1,N

M=M+K

ENDDO

IP=M

END

执行以上程序后,A

(1)的值是3.0,A

(2)的值是3.3。

7.求多项式a0+a1x1+…+an-1xn-1+anxn之和的外部函数

数组A表示多项式系数,变量T表示xn,S表示多项式之和。

FUNCTIONp(A,N,x)RESULT(r_p)

(16)REALA(0:

N),x,r-p

S=(17)A(0)

T=1.0

DOI=1,N

T=(18)*X

S=S+A(I)*T

(19)ENDDO

PRINT*,'S=',S

(20)r-p=s

END

8.用选择法,将N个整数按从小到大排列。

PARAMETER(numl=500)

INTEGERnum(numl)

READ*,N,(num(I),(21)I=1,N)

DOI=1,N-1

min=I

DOJ=(22)I+1,N

IF(num(min).GT.num(J))(23)min=J

ENDDO

IF(min.NE.I)THEN

it=num(I)

num(I)=num(min)

(24)num(min)=it

ENDIF

ENDDO

PRINT*,(num(I),I=1,N)

END

9.以下程序是通过超载赋值(=)运算符,实现将字符的ASCII码赋给整型变量的功能.

SUBROUTINECTOI(I,C)

INTEGER,INTENT(OUT):

:

I

CHARACTER,INTENT(IN):

:

C

I=(25)ICHAR(C)

ENDSUBROUTINE

PROGRAMMAIN

INTERFACEASSIGNMENT(=)

SUBROUTINE(26)CTOI(I,C)

INTEGER,INTENT(OUT):

:

I

CHARACTER,INTENT(IN):

:

C

ENDSUBROUTINE

(27)ENDINTERFACE

INTEGERI

CHARACTER:

:

C='A'

I=C

PRINT*,C,I

ENDPROGRAMMAIN

10.求N!

PRINT*,'InputN?

'

READ*,N

M=1

(28)nfac=1

DO

nfac=nfac*M

IF((29)M>=N)THEN

PRINT*,'N!

=',nfac

(30)STOP

ENDIF

M=M+1

ENDDO

END

FORTRAN90模拟试题四(笔试部分)

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

1.下面是5个准备用作子程序(辅程序)的形参,四组选择中其形参均正确的是D。

(教材265)

①常数符号名②变量名③数组元素名④形式过程⑤数组名

A.①③⑤B.②③④C.①③④D.②④⑤

2.语句OPEN(3,FILE=‘ABC’,ACCESS=‘DIRECT’,RECL=40)打开的是C文件。

(教材335)

A.有格式顺序存取B.无格式顺序存取

C.有格式直接存取D.无格式直接存取

3.辅程序引用时,某实参可为常数、函数引用及表达式时,其相应形参是A。

(教材265)

A.变量名B.数组名C.过程名D.*

4.并非所有的标准函数名均可作为过程形实结合的实参,例如C就不能。

(教材277)

A.ABSB.SINC.REALD.LOG

5.以下程序片段中其值均为9的元素是D。

(教材206)

INTEGER:

N(-1:

1,-1:

1,-1:

1)

N=RESHAPE((/1,2,3,4,5,6,7,8,9,10,11,12,13,14,13,12,11,10,9,8,7,6,5,4,3,2,1/),(/3,3,3/))

A.N(1,1,-1)与N(-1,-1,0)B.N(1,1,0)与N(-1,-1,0)

C.N(1,1,1)与N(1,-1,-1)D.N(1,1,-1)与N(-1,-1,1)

6.下列数据中,不符合FORTRAN90常量表示的是D。

(教材77)

A.-25.6B.3.2344D0C.’BOOT’’=’D.TRUE

7.运行下列程序时输入数据5E2后,其输出结果是A。

(教材121)

READ‘(E5.2)’,X

WRITE(*,‘(1X,F6.2)’)X

END

A.5.00B.500.00C.0.05D.******

8.圆心在原点的两个同心圆,半径分别为2和4。

描述点(X,Y)在小圆外,大圆内(包括在两圆周上)的表达式是C。

(教材89)

A.ABS(X)<=4.0.AND.ABS(Y)>=2.0B.2.0>=SQRT(X*X+Y*Y)<=4.0

C.X*X+Y*Y<=16.0.AND.X*X+Y*Y>=4.0D.(X.OR.Y)>=2.0.AND.(X.OR.Y)<=4.0

9.以下关于指针说法不正确的是B。

(教材309)

A.指针变量可以指向任何变量B.一个指针变量可以同时指向多个变量

C.多个指针变量可以同时指同向一个变量D.指针变量的内容是地址或变量名称

10.以下关于接口块说法不正确的A。

(教材366)

A.当外部过程名作为实参时,一定要用接口块B.重载运算符时,一定要用接口块

C.调用子程序时,实参和形参的次序及个数不同时,一定要用接口块

D.外部函数的返回值为数组时,一定要用接口块

二、填空题(在空白处添入正确内容)

1.以下程序运行后,输出的第一行为

(1)5.05.05.0;第二行为9.07.09.0

(2)

REAL:

:

X=5.0,Y=5.0

PRINT'(1X,3F5.1)',X,Y,X

CALLsub(X,Y,X)

PRINT'(1X,3F5.1)',X,Y,X

END

SUBROUTINEsub(X,Y,Z)

REALX,Y,Z

X=X+1.0;Y=Y+2.0;Z=Z+3.0

ENDSUBROUTINE

2.下列程序运行后,K(3)=(3)5,M(1,3)=(4)6。

读入的第一个记录为1,-1,2,-2,第二个记录为3,-3,4,-4,5,-5。

INTEGERK(4),M(2,3)

READ*,K

CALLsub(K,M)

PRINT"(1X,I2)",K(3),M(1,3)

END

SUBROUTINEsub(K,M)

INTEGERK(2,2),M(6),I,J

READ*,M

DOI=1,2

DOJ=1,2

K(I,J)=K(I,J)-M(J)

M(I)=M(I)+K(I,J)

ENDDO

ENDDO

DOI=3,6

M(I)=M(I-1)+M(I-2)

ENDDO

END

3.下列程序运行后,A(1,4)=(5)4,A(5,3)=(6)4。

INTEGERA(5,5),T,I,J,K,M

DOI=1,5

DOJ=1,5

A(I,J)=J

ENDDO

DOK=1,I-1

T=A(I,5)

DOM=4,1,-1

A(I,M+1)=A(I,M)

ENDDO

A(I,1)=T

ENDDO

ENDDO

PRINT"(1X,I2)",A(1,4),A(5,3)

END

4.下列程序运行后输出结果:

M=(7)4,X=(8)4.5。

OPEN(1,FILE='A.DAT')

WRITE(1,'(2I1/F3.1)')2,3,4.5

CALLABC

END

SUBROUTINEABC

REALX

INTEGERM

BACKSPACE

(1)

READ(1,"(F3.1)")X

M=X

WRITE(*,"(1X,'M=',I2,'X=',F3.1)")M,X

END

5.下列程序运行时,输入3,5,F时,输出结果中B(5,3)=(9);13

输入3,5,T时,输出结果中B(5,3)=(10);25

MODULEAA

INTEGER:

:

X,Y,A(5,5)=(/(I,I=1,25)/)

ENDMODULE

PROGRAMMAIN

USEAA,B=>A

LOGICALL

INTEGERI,J

READ*,X,Y,L

IF(L)THEN

CALLone

PRINT'(1X,5I4)',((B(I,J),J=1,5),I=1,5)

ELSE

CALLtwo

PRINT'(1X,5I4)',((B(I,J),J=1,5),I=1,5)

ENDIF

END

SUBROUTINEone

USEAA,C=>A

INTEGERI,IT

DOI=1,5

IT=C(I,X)

C(I,X)=C(I,Y)

C(I,Y)=IT

ENDDO

END

SUBROUTINEtwo

USEAA,X2=>X,Y2=>Y,D=>A

INTEGERI,IT

DOI=1,5

IT=D(X2,I)

D(X2,I)=D(Y2,I)

D(Y2,I)=IT

ENDDO

END

6.以下程序运行后,下列变量的输出结果是:

C=(11)101,F=(12)112.0,A(20)=30(13),C(21)=(14)。

1681

INTEGERA(100),B(100),C,I

REALF

C=1

DOI=1,100

C=C+1;A(I)=C;B(I)=C*C

ENDDO

CALLSS(A(10),C,B(20),A(10),F)

PRINT'(1X,"C=",I4/1X,"F=",F6.1)',C,F

END

SUBROUTINESS(A,B,C,D,E)

INTEGERA(50),C(50),B,D

REALE

E=B+D

PRINT'(1X,"A(20)=",I4/1X,"C(21)=",I4)',A(20),C(21)

END

7.下列程序运行后的输出结果,第二行为:

(15)X=5.0Z=7.0。

REAL:

:

P(5)=(/2.0,3.0,5.0,1.0,3.0/),X,Y,Z

INTEGERK,L,M,N

N(K,L,M)=K+L/M

X=1.0+REAL(N(2,3,2))

Y=2.0

CALLSS(X,P

(1),Z,X)

WRITE(*,"(1X,'X=',F4.1,1X,'Z=',F4.1)")X,Z

END

SUBROUTINESS(A,B,X,W)

REALA,B,X,Y,W

A=A+1

B=B+1

Y=2.0

PRINT"(1X,'W=',F4.1)",W

X=W+Y

END

8.下面程序的功能是统计输入英文句子中每个单词所包含的字母个数。

程序中数组ICOUNT用于存放统计结果。

假设英文句子由字母、空格和句点组成,单词个数不超过10,每个单词不超过10个字母,单词之间有一个空格,句子以句点(.)结尾,句子长度不超过72个字符。

INTEGER:

:

ICOUNT(10),I,NUM

CHARACTER*1ICHR(72)

READ'(72A1)',ICHR

NUM=1

DO(16)I=1,72

IF(ICHR(I)=='.')(17)EXIT

IF(ICHR(I)/='')THEN

(18)ICOUNT(NUM)=ICOUNT(NUM)+1

ELSE

(19)NUM=NUM+1

ENDIF

ENDDO

PRINT'(1X,72A1)',(ICHR(I),I=1,72)

PRINT'(1X,10I5)',(ICOUNT(I),(20)I=1,NUM)

END

9.下面程序的功能是计算

的值,直到最后一项的绝对值小于1.0E-5为止。

REALX,Y,A,B,T

INTEGERN

READ*,X

T=(21)X

B=1.0

Y=T

N=2

DOWHILE((22)ABS(T)>1.0E-5)

A=X**(2*N-1)/(2*N-1)

B=(23)B*(2*N-3)/(2*N-2))

T=A*B

Y=Y+T

N=N+1

ENDDO

PRINT'(1X,F5.2,I3,F12.7)',X,N-1,Y

END

10.下面程序的功能是输入十个任意四位整数A,用来检验inver子程序的可靠性。

其中CALLinver(A,B)应能将A中四位数倒过来成为B(如A=1966,可得B=6691)。

最后计算并输出由具体数字构成的算式C=A+B。

INTEGERA,B,C,I

DOI=1,10

READ*,A

DOWHILE(A<1000.OR.A>9999)

READ*,A

ENDDO

CALLinver(A,B)

C=A+B

PRINT'(1X,I5,"=",I4,"+",I4)',C,A,B

ENDDO

END

SUBROUTINEinver(M,N)

IMPLICITNONE

(24)INTEGERA,BI,JK,M,N,MN

A=M

DOI=1,4

NN(I)=MOD(A,10)

(25)A=A/10

ENDDO

B=0

DOJ=1,4

K=NN(J)*10**(4-J)

B=B+K

ENDDO

(26)N=B

END

11.下面的程序建立一个链表,子程序fmax()的功能是:

求出链表所有结点中数据成员值最大的结点的位置,并由参数s返回给主函数。

该函数的第一个参数是链表的首指针。

MODULEAA

TYPENODE

INTEGERDATA

TYPE(NODE),POINTER:

:

NEXT

ENDTYPENODE

CONTAINS

SUBROUTINEFMAX(HEAD,S,I)

27TYPE(NODE),POINTER;;HEAD,S,P

INTEGER:

:

I,J=0

P=>HEAD;S=>P

IF(.NOT.(ASSOCIATED(P)))RETURN

DOWHILE(ASSOCIATED(P))

J=J+1

IF(P.DATA>S.DATA(28))THEN

I=J;S=>P

ENDIF

(29)P=>P.NEXT

ENDDO

ENDSUBROUTINE

SUBROUTINEPRINTL(H)

TYPE(NODE),POINTER:

:

H,P

P=>H

DOWHILE(ASSOCIATED(P))

PRINT*,P.DATA

P=>P.NEXT

ENDDO

ENDSUBROUTINE

ENDMODULEAA

PROGRAMMAIN

(30)USEAA

TYPE(NODE),POINTER:

:

H,P,P1

INTEGERA,I

NULLIFY(P)

PRINT*,'INPUTDATA'

READ*,A

DOWHILE(A/=-1)

ALLOCATE(P)

P.DATA=A

IF(.NOT.(ASSOCIATED(H)))THEN

H=>P;P1=>P

ELSE

P1.NEXT=>P;P1=>P

ENDIF

PRINT*,'INPUTDATA'

READ*,A

ENDDO

NULLIFY(P)

CALLPRINTL(H)

CALLFMAX(H,P,I)

PRINT*,'DDD'

IF(ASSOCIATED(P))PRINT*,P.DATA,I

END

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

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

1.一个完整的FORTRAN90源程序的组成不应该D。

(教材59)

A.只有一个主程序没有外部子程

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1