FORTRAN90模拟测验Word文档下载推荐.docx
《FORTRAN90模拟测验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《FORTRAN90模拟测验Word文档下载推荐.docx(83页珍藏版)》请在冰点文库上搜索。
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)
PRINT*,S1;
PRINT*,S2;
PRINT*,S3
ENDPROGRAMMAIN
执行以上程序后,输出的第一行是AB,第二行是BC,第三行是BD。
3.阅读以下程序:
MODULEaa
J=2
ENDMODULEaa
SUBROUTINEp()
USEaa
DOI=1,3
J=J+1
PRINT'
(I3\)'
J
PRINT*
DOI=0,2
CALLp()
PRINT*,I
执行以上程序后,输出的第一行是345,第二行是678,第三行是91011。
4.阅读以下程序:
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
A(K-3+I,4-I)=N
ENDIF
DOK=1,3
DOI=1,3
PRINT'
A(K,I);
PRINT*
执行以上程序后,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)
WRITE(*,100)A
(1),A
(2)
100FORMAT(1X,2F3.1)
END
REALFUNCTIONIP(N)
M=0
DOK=1,N
M=M+K
IP=M
执行以上程序后,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
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
IF(min.NE.I)THEN
it=num(I)
num(I)=num(min)
(24)num(min)=it
PRINT*,(num(I),I=1,N)
9.以下程序是通过超载赋值(=)运算符,实现将字符的ASCII码赋给整型变量的功能.
SUBROUTINECTOI(I,C)
INTEGER,INTENT(OUT):
I
CHARACTER,INTENT(IN):
C
I=(25)ICHAR(C)
INTERFACEASSIGNMENT(=)
SUBROUTINE(26)CTOI(I,C)
INTEGER,INTENT(OUT):
CHARACTER,INTENT(IN):
ENDSUBROUTINE
(27)ENDINTERFACE
INTEGERI
CHARACTER:
C='
A'
I=C
PRINT*,C,I
10.求N!
。
InputN?
'
READ*,N
M=1
(28)nfac=1
DO
nfac=nfac*M
IF((29)M>
=N)THEN
N!
='
nfac
(30)STOP
M=M+1
FORTRAN90模拟试题四(笔试部分)
一、选择题(从4个可选答案中选择一个正确答案添入空白处)
1.下面是5个准备用作子程序(辅程序)的形参,四组选择中其形参均正确的是D。
①常数符号名②变量名③数组元素名④形式过程⑤数组名
A.①③⑤B.②③④C.①③④D.②④⑤
2.语句OPEN(3,FILE=‘ABC’,ACCESS=‘DIRECT’,RECL=40)打开的是C文件。
(教材335)
A.有格式顺序存取B.无格式顺序存取
C.有格式直接存取D.无格式直接存取
3.辅程序引用时,某实参可为常数、函数引用及表达式时,其相应形参是A。
A.变量名B.数组名C.过程名D.*
4.并非所有的标准函数名均可作为过程形实结合的实参,例如C就不能。
(教材277)
A.ABSB.SINC.REALD.LOG
5.以下程序片段中其值均为9的元素是D。
(教材206)
INTEGER:
:
N(-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
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)<
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
(1X,3F5.1)'
X,Y,X
CALLsub(X,Y,X)
SUBROUTINEsub(X,Y,Z)
REALX,Y,Z
X=X+1.0;
Y=Y+2.0;
Z=Z+3.0
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)
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)
DOI=3,6
M(I)=M(I-1)+M(I-2)
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
DOK=1,I-1
T=A(I,5)
DOM=4,1,-1
A(I,M+1)=A(I,M)
A(I,1)=T
A(1,4),A(5,3)
4.下列程序运行后输出结果:
M=(7)4,X=(8)4.5。
OPEN(1,FILE='
A.DAT'
)
WRITE(1,'
(2I1/F3.1)'
)2,3,4.5
CALLABC
SUBROUTINEABC
REALX
INTEGERM
BACKSPACE
(1)
READ(1,"
(F3.1)"
)X
M=X
WRITE(*,"
(1X,'
M='
I2,'
X='
F3.1)"
)M,X
5.下列程序运行时,输入3,5,F时,输出结果中B(5,3)=(9);
13
输入3,5,T时,输出结果中B(5,3)=(10);
25
MODULEAA
X,Y,A(5,5)=(/(I,I=1,25)/)
ENDMODULE
USEAA,B=>
A
LOGICALL
INTEGERI,J
READ*,X,Y,L
IF(L)THEN
CALLone
(1X,5I4)'
((B(I,J),J=1,5),I=1,5)
ELSE
CALLtwo
ENDIF
SUBROUTINEone
USEAA,C=>
INTEGERI,IT
IT=C(I,X)
C(I,X)=C(I,Y)
C(I,Y)=IT
SUBROUTINEtwo
USEAA,X2=>
X,Y2=>
Y,D=>
IT=D(X2,I)
D(X2,I)=D(Y2,I)
D(Y2,I)=IT
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
CALLSS(A(10),C,B(20),A(10),F)
(1X,"
C="
I4/1X,"
F="
F6.1)'
C,F
SUBROUTINESS(A,B,C,D,E)
INTEGERA(50),C(50),B,D
REALE
E=B+D
A(20)="
C(21)="
I4)'
A(20),C(21)
7.下列程序运行后的输出结果,第二行为:
(15)X=5.0Z=7.0。
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)
F4.1,1X,'
Z='
F4.1)"
)X,Z
SUBROUTINESS(A,B,X,W)
REALA,B,X,Y,W
A=A+1
B=B+1
W='
W
X=W+Y
8.下面程序的功能是统计输入英文句子中每个单词所包含的字母个数。
程序中数组ICOUNT用于存放统计结果。
假设英文句子由字母、空格和句点组成,单词个数不超过10,每个单词不超过10个字母,单词之间有一个空格,句子以句点(.)结尾,句子长度不超过72个字符。
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
(19)NUM=NUM+1
(1X,72A1)'
(ICHR(I),I=1,72)
(1X,10I5)'
(ICOUNT(I),(20)I=1,NUM)
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
(1X,F5.2,I3,F12.7)'
X,N-1,Y
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)
CALLinver(A,B)
C=A+B
(1X,I5,"
="
I4,"
+"
C,A,B
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
B=0
DOJ=1,4
K=NN(J)*10**(4-J)
B=B+K
(26)N=B
11.下面的程序建立一个链表,子程序fmax()的功能是:
求出链表所有结点中数据成员值最大的结点的位置,并由参数s返回给主函数。
该函数的第一个参数是链表的首指针。
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;
(29)P=>
P.NEXT
SUBROUTINEPRINTL(H)
H,P
H
PRINT*,P.DATA
P.NEXT
ENDMODULEAA
(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=>
P1.NEXT=>
CALLPRINTL(H)
CALLFMAX(H,P,I)
DDD'
IF(ASSOCIATED(P))PRINT*,P.DATA,I
FORTRAN90模拟测验五(笔试部分)
一.选择题(从4个可选答案中选择一个正确答案添入空白处)
1.一个完整的FORTRAN90源程序的组成不应该D。
(教材59)
A.只有一个主程序没有外部子程