计算机技术基础Fortran试题库.docx
《计算机技术基础Fortran试题库.docx》由会员分享,可在线阅读,更多相关《计算机技术基础Fortran试题库.docx(13页珍藏版)》请在冰点文库上搜索。
![计算机技术基础Fortran试题库.docx](https://file1.bingdoc.com/fileroot1/2023-7/4/2edccf3b-d996-4458-bce8-9e7322b636d8/2edccf3b-d996-4458-bce8-9e7322b636d81.gif)
计算机技术基础Fortran试题库
一、选择题
1、下列关于"SUBROUTINEMAP(X,Y)"语句行的叙述中,不正确的是()A)这是子程序的第一个语句B)字符串"MAP"是子程序名C)变量X是子程序的形参D)子程序执行后,MAP将返回整型数据
2、FORTRAN表达式"2/4+"的值是()A)B)1C)D)0
3、阅读下列FORTRAN程序:
PI=3.WRITE(*,'')PIEND程序运行后输出结果是()A)B)3.1415C)D)
4、圆的直径存放在整型变量K之中,下列计算圆面积的表达式中正确的是()A)*K*K/4B)*(K*K/4)C)*(K/2)**2D)*(K/2)*(K/2)
5、要判断"月收入M在2000元以上(含2000元)且5000元以下)不含5000元)"的职工,应该使用的逻辑表达式是()A)M.GE.2000.AND.M.LE.5000B)M.GE.2000.OR.M.LE.5000C)M.GE.2000.AND.M.LT.5000D)M.GE.2000.OR.M.LT.5000
6、设FORTRAN子程序如下:
SUBROUTINESUB(I,X)B=I+1X=X+BEND若主程序中的变量M,B已按I-N规则赋值,则调用上述子程序的语句中正确的是()A)CALLSUB(M,M)B)CALLSUB(M+4,B)C)CALLSUB(B,B)D)CALLSUB(M,B+4)
7、下列不是FORTRAN常量的是()A),B)+00C)2/3D)'Verygood!
'
8、阅读下列FORTRAN程序:
F=DO20K=3,7,3DO20L=K-1,K20WRTTE(*,'(I3,'K,F*KEND程序运行结果的最后一行是()A)3B)66.0C)6D)7
9、在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,3
13、给定下列FORTRAN子程序如下:
SUBROUTINESUB(K,A)A=SQRT(K*K+END下列调用语句中正确的是()A)CALLSUB(N,N)B)CALLSUB(X,X)C)CALLSUB(N,X*X)D)CALLSUB(11,X)
14、阅读下列FORTRAN程序:
INTEGERAA(2,3)DATAAA/1,2,3,4,5,6/CALLS2D19(AA)CALLS2D19(AA(1,2))ENDSUBROUTINES2D19(BB)INTEGERBB(2,2)WRITE(*,'(1X,2I3)')BB(1,1),BB(2,2)END程序运行结果是()A)14B)15C)14D)1236262534
15、阅读下列FORTRAN程序:
INTEGERA(3,3)DO10K=1,3DO10L=1,310A(K,L)=K*10+LWRITE(*,'(1X,3I3)')AEND程序运行结果是:
()A)112131B)111213C)313233D)333231122232212223212223322221132333313233111213312111
16、阅读下列FORTRAN程序:
WRITE(*,10)'YEAR:
',199610FORMAT(/3X,A,I4)END程序运行结果是(^代表空格,下同)()A)^^^^^YEAR:
1996B)^^YEAR:
1996C)空白行D)空白行^^^^^YEAR:
1996^^YEAR:
1996
17、某函数子程序中使用了IMPLICIT、READ、COMPLEX和FUNCTION四种语句,其中属于可执行语句的是:
()A)FUNCTIONB)READC)COMPLEXD)IMPLICIT
18、阅读下列FORTRAN程序:
DIMENSIONM(4,4)DATAM/1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6/DO10I=1,4WRITE(*,100)(M(I,J),J=1,I)10CONTINUE100FORMAT(1X,4I2)END程序运行的结果是()A)1234B)1593C)1D)1678604262661215371937116648263448266
19、阅读下列FORTRAN程序:
CHARACTER*10A,B*6DO10I=1,10A(I:
I)=''10COUNTINUEA(1:
5)='ABCDE'B='FGHIJK'A(4:
9)=BWRITE(*,100)A100FORMAT(1X,A)END程序运行结果是:
()A)ABCDEFGHIJB)ABCDEGHIJKC)ABCFGHIJKD)BCDEFGHIJK
20、阅读下列FORTRAN程序:
INTRINSICSIN,COSWRITE(*,*)FUN(SIN,/FUN(COS,ENDFUNCTIONFUN(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)REALZ(N)SUMX=SUMX2=DO10K=1,N【2】SUMX=SUMX+XSUMX2=SUMX2+X*X10CONTINUEAV=SUMX/NAV2=SUMX2/NS2=AV2-AV*AVSIGMA=【3】END
2、下列FORTRAN程序的功能是将30个学生的考试成绩读入数组A,然后统计并且输出最高的分数以及小于60分、60~80分与大于80分的三个分数段的学生数。
请在程序中的下划线处填入合适的内容。
【4】A(30),B,C(3)DATAC/3*0/READ(*,*)A【5】DO10K=2,30IF(A(K).B=A(K)10CONTINUEDO30K=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)+130CONTINUEWRITE(*,*)B,CEND
3、下列FORTRAN程序的功能是用对分法求出方程在区间(1,5)中的一个实数根,要求输出根的近似值和对分次数。
请在程序中的下划线处填入合适的内容。
【7】=*X***DATAXL,XR,N/,,0/10N=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】ENDIFEND
4、下列FORTRAN程序的功能是计算多项式y=2+++在x=时的值。
主程序调用了函数子程序POLY。
请在程序中的下划线处填入合适的内容。
PROGRAMPVALUEREALA(6)DATAA/【10】/DATAN,X/6,Y=POLY(A,N,X)WRITE(*,'(1X,A5,6F')'a(k)=',AWRITE(*,'(1X,A2,,A6,')'X=',X,';Y=',YENDFUNCTIONPOLY(B,M,V)【11】POLY=B
(1)FV=DO10K=2,MFV=FV*V10POLY=POLY+【12】END
5、下列FORTRAN程序的功能是使用筛法筛选出N以内的所有素数并输出。
其算法如下:
在N以内的自然数列中先筛除2的倍数(不包括2);在2之后未筛去的第一个数是3,于是再筛除3的倍数;在3之后未筛去的第一个数是5,于是再筛除5的倍数;如此重复下去,直到遇见筛剩下的第一个数是最接近N的平方根的那个数为止。
请在程序中下划线处填入合适的内容。
PARAMETER(N=100)【13】A(N),P(N)A
(1)=0DO10K=2,N10A(K)=KDO20K=3,N20IF(MOD(A(K),2).A(K)=0ISR=SQRT(FLOAT(N))DO30M=3,ISR,2DO30K=M+2,N30IF(A(K).【14】M=1DO40K=1,NIF(A(K).THENP(M)=【15】M=M+1ENDIF40CONTINUEWRITE(*,'(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)从小到大排列。
参考答案及评分标准
一、选择题
1、D2、A3、D4、A5、C6、B7、C8、B
9、C10、D11、B12、C13、D14、A15、A16、D
17、B18、C19、C20、C二、填空题
【1】FUNCTION【2】X=Z(K)【3】SQRT(S2)【4】INTEGER或者REAL【5】B=A
(1)【6】.AND.【7】FUN(X)【8】ELSE【9】GOTO10【10】,,,,(注:
顺序不可颠倒,小数点前后的0可以省略其中的一个。
)【11】DIMENSIONB(M)或者REALB(M)【12】B(K)*FV或者FV*B(K)【13】INTEGER【14】A(K)=0或者A(K)=【15】A(K)
三、编写程序题
1、解题程序:
programmain
implicitnone
integer,parameter:
:
max=10
integeri
realitem
realans
ans=
item=
doi=2,max
item=item/real(i)
ans=ans+item
enddo
write(*,*)ans
stop
endprogram
2、解题程序:
programmain
implicitnone
realradius,area
write(*,*)"请输入半径长"
read(*,*)radius
callCircleArea(radius,area)
write(*,"('面积='")area
stop
endprogram
subroutineCircleArea(radius,area)
implicitnone
real,parameter:
:
PI=
realradius,area
area=radius*radius*PI
endsubroutine
3、解题程序:
programmain
implicitnone
integer,parameter:
:
size=10
integer:
:
a(size)=(/5,3,6,4,8,7,1,9,2,10/)
integer:
:
i,j
integer:
:
t
doi=1,size-1
doj=i+1,size
if(a(i)>a(j))then!
a(i)跟a(j)交换
t=a(i)
a(i)=a(j)
a(j)=t
endif
enddo
enddo
write(*,"(10I4)")a
stop
end
一、选择题
1、下列关于FORTRAN源程序编辑规则的叙述之中,正确的是()A)IMPLICIT语句可以放在REAL语句行之后B)DATA语句可以在放在紧靠END语句行之前C)注释行不可以放在END语句行之后D)FORMAT语句可以放在PROGRAM语句行之前
2、下列FORTRAN源程序的变量名之中,不符合规则的是()A)WB)W3C)-3D)W3W
3、若FORTRAN中一个INTEGER型数据占用2个字节,那么该类型的数据值范围是()A)-4847B)-3276832767
C)095D)065535
4、阅读下列程序X=WRITE(*,'')XEND程序运行后显示结果是()A).6180B)-01C.0618E+01D).6180E+00
5、梯形的上底为A,下底为B,高为H,计算其面积的FORTRAN表达式中错误的是()A)1/2*(AB)*HB)(A+B)*H/2C)(A+B)/2*HD)*(A+B)*H
6、要选拔身高T>1.7米且体重W<公斤的人,FORTRAN的逻辑表达式是()A)B)62.5
D)、在FORTRAN的变量类型说明语句中没有()A)REAl语句B)CHAR语句C)INTEGER语句D)LOGICAL语句
8、一次成功的FORTRAN源程序编译操作,不能()A)同时编译一个主程序和一个子程序B)同时编译几个子程序C)同时编译一个主程序和几个子程序D)同时编译几个主程序
9、阅读下列程序F=DO20,J=3,7,2DO20,K=J-1,J20F=F*KWRITE(*,'(13,')J,FEND程序运行结果是A)3B)5120.0C)9D)
10、阅读下列程序CHARACTER*10WDOK=1,10READ*,WIF(W(1:
2).EQ.'AB'.(1:
2).EQ.'ab')WRITE(*,*)'',WENDDOEND程序的功能是()A)首字符是A或B的字符串被输出显示B)第一、二个字符是AB或ab的字符串被输出显示C)首字符是a或b的字符串将被输出显示D)第一、二个字符是Aa或Bb的字符串将被输出显示
11、阅读下列程序LOGICALLREAD(*,*)A,BL=IF(L)THENX=B+2*AELSEX=BENDIFWRITE(*,*)XEND使用键盘为上述程序输入两个初值4和3,其输出的X值是()A)B)3.0C)D)
12、阅读下列程序READ(*,*)KWRITE(*,100)K100FORMAT(I5)END程序运行时输入初始值12345,那么显示结果是A)2345B)12345C)****D)*****
13、阅读下列程序INTEGERFF(X,Y)=X+YA=B=B=B+F(A,B)WRITE(*,'')BEND程序运行的结果是()A).1B).7C)D)
14、阅读下列程序A=CALLSUBA(A,A,A)WRITE(*,'')AENDSUBROUTINESUBA(X,Y,Z)Y=Z=Z+XEND程序运行的结果是()A)B)5.0C)D)
15、阅读下列程序CHARACTERA*4,B*5,C*4DATAA,B,C/'BIG’,'MIDDLE','SMALL'/WRITE(*,20)A,B,C20FORMAT(1X,A2,A3,A4)END程序运行结果是()A)BIGMIDDLEB)*********C)BIGMIDSMAD)BIMIDSMAL
16、阅读下列程序N=0DO10K=1,3N=N+1
M=K*N10CONTINUEWRITE(*,'(1X,2I3)')M,KEND程序运行结果是()A)94B)93C)124D)123(#^)
17、阅读下列程序FUN(c,d)=a*c+b/dDATAa,b/,WRITE(*,'')FUN(a,b)-FUN(b,a)END程序运行结果是()A)B)4.0C)D)
18、阅读下列程序LOGICALL1,L2,L3,L4,L5DATAL1,L2,L3/3*.TRUE./L4=.3
WRITE(*,*)L4,L5END程序运行结果是()A)TTB)TFC)FFD)FT
19、阅读下列程序DIMENSIONM(3,3)DATAM/1,2,3,4,5,6,7,8,9/WRITE(*,100)(M(3,J),J=1,3)100FORMAT(1X,3I2)END程序运行结果是()A)258B)369C)456D)789
20、阅读下列程序INTEGERA(100),GREAD(*,*)N,(A(I),I=1,N)DO10I=1,N-1
G=IDO20J=I+1,NIF(A(J).(G))THENG=JENDIF20CONTINUEK=A(I)A(I)=A(G)A(G)=K10CONTINUEWRITE(*,'(1X,10I2)')(A(I),I=1,N)END程序运行时输入的初始值是3,6,9,8,则运行结果是()A)698B)896C)689D)986
二、填空题
1、阅读下列程序,其功能是求出方程2X3-3X2+4X-11=0在区间(1,5)中的一个实数根,运行结果是显示根值和对分次数,使用的是二分算法。
请在其中_____处填入适当的内容。
FUN(X)=*X***X**2+*DATAXL,XR,N/,,0/10CONTINUE【1】X=(XL+XR)/【2】IF(ABS(FX)..WRITE(*,'(1X,A2,,A5,14)')'X=',X,'N=',NELSEIF(FUN(【3】)*XR=XELSEXL=XENDIFGOTO10ENDIFEND
2、阅读下列程序.其功能是计算Y=1+++++当X=时的值。
主程序调用了函数子程序。
请在其中____处填入适当的内容。
PROGRAMPVALUE【4】DATAA/,,,,,,N,X/6,【5】WRITE(*,'(1X,A5,6F')'a(k)=',AWRITE(*,'(1X,A2,,A6,')'X=',X,';Y=',YENDFUNCTIONPOLY(B,M,V)DIMENSIONB(M)POLY=B
(1)FV=DO10K=2,MFV=FV*V10【6】=POLY+B(K)*FVEND
3、函数子程序DTOH能够将一个十进制正整数DEC转换为一个表示十六进制数的字符字符串,其长度不超过8。
例如127转换为'7F'。
算法是:
将DEC除16取余,将所得的商再除16取余,如此反复,直到商和零为止,最后按照逆序输出所得的各个余数。
请在其中____处填入适当的内容。
CHARACTER*8FUNCTIONDTOH(DEC)INTEGERDEC,R,POSPOS=9DTOH=''111CONTINUE【7】IFR=MOD(DEC,16)IF【8】=CHAR(ICHAR('0')+R)ELSEDTOH(POS:
POS)=CHAR(ICHAR('A')+R-10)ELSEDTOH='**********'GOTO999ENDIFDEC=DEC/16IF(【9】)GOTO111999CONTINUEENDPROGRAMDECHEXCHARACTER*8DTOHWRETE(*,*)DTOH(127)END
4、有一个十进制的四位数ABCD与一个十进制的三位数CDC的差等于十进制的三位数ABC.下列程序按"ABCD=9876"的样式打印出ABCD这个数。
请在其中____外填入适当的内容.INTEGERA,B,C,DDO10A=1,9DO10B=0,9DO10C=1,9【10】L=1000*A+100*B+10*C+DM=100*C+10*D+CN=100*B+CIF(【11】)WRITE(*,'(【12】)')'XABCD=',A,B,C,D10CONTINUEEND
5、阅读下列程序,其功能是使用筛法选出N以内的所有素数并显示算法在N以内的自然数列中先筛除2的倍数;在2之后筛乘下的第一个数是3,于是再筛除3的倍数;在3之后筛剩下的第一个数是5,于是再筛除5的倍数;如此重复下去,直到遇见筛剩下的第一个数是最接近N的平方根的那个数为止。
请在其中____处填入适当的内容。
PROGRAMPRINESPARAMETER(N=100)INTEGERA(N),P(N)DO10K=1,N10A(K)=KDO20K=3,N20IF(【13】.A(K)=0ISR=SQRT(REAL(N))DO30M=3,ISR,2DO30K=M+2,N30IF(A(K).0
DO40K=IF(A(K).THEN【14】M=M+1ENDIF40CONTINUEWRITE(*,'(1X,1018)')(P(K),【15】)END
三、编写程序题
1、以循环来计算等差数列1+3+5+7+……+99的值。
2、利用选择排序法编制程序,将数组A中所有的数值(5,3,6,4,8,7,1,9,2,10)从大到小排列。
3、编制函数G