1软件技术基础(FORTRAN)笔试模拟试题2004.6(带答案)一.概念选择题(单选题,将正确的答案填入括号内。每题1分,共15分)1.已知整型变量L=5,M=13,N=4,表达式L*M/N、L/N*M和M/N*L的值分别是(A)。A)161315B)16.2516.2516.25C)16.013.015.0D)1616162.将数学式)||(ln215ex改写为FORTRAN表达式,正确的是(D)。A)1/2*(LOG(ABS(X))+E**(-5))B)1.0/2*(LN(ABS(X))+E**-5)C)1/2.0*(LN(ABS(X))+E-5)D)1.0/2*(LOG(ABS(X))+EXP(-5))3.设A=.TRUE.,B=.FALSE.,C=.FALSE.,逻辑表达式(A.OR.B).AND.C与A.OR..NOT.B的值是(B)。A).T.与.F.B).F.与.T.C).T.与.T.D).F.与.F.4.数组REALA(0:5,-1:5)的元素个数是(D)。A)25B)30C)36D)425.下列数组说明符中错误的是(A)。A)K(3:2,1:2)B)K(-1:1,2)C)K(-2:2,-1:1)D)K(2:2,5)6.关于参数语句PARAMETER及其定义参数的正确说法是(B)。A)PARAMETER是执行语句B)参数的值在执行期间不能改变C)只能用常量定义符号参数D)可用含变量的表达式定义参数7.语句OPEN(9,FILE=‘DATA.TXT’)打开的是(B)文件。A)无格式顺序B)有格式顺序C)无格式直接D)有格式直接8.阅读下列FORTRAN程序,程序运行时执行循环体的次数是(A)。X=0DOL=10,5,1X=X+1.0ENDDOENDA)0B)1C)6D)无穷9.结构化程序设计中有三种基本结构,下列不属于三种基本设计结构的是(D)。A)顺序结构B)选择结构C)循环结构D)嵌套结构10.对链表中的数据元素的插入和删除(B)。A)移动结点,不需要改变结点指针B)不移动结点,需要改变结点指针C)移动结点,并且需要改变结点指针D)不移动结点,不需要改变结点指针11.具有12个记录的序列,采用冒泡排序最多的比较次数是(D)。A)1B)144C)11D)66212.下列形式中,不能作为形参的是(C)。A)函数B)数组C)表达式D)变量13.一个深度为k(k≥0)的满二叉树的结点数应满足(A)。A)2k+1-1B)2k+1C)2k+1D)2k14.栈和队列都是(D)。A)顺序存储线性表B)限制存取点的顺序存储线性表C)链式存储线性表D)限制存取点的线性表15.进行二分法查找,则线性表(D)A)必须以顺序方式存储B)必须以链接方式存储C)必须以链接方式存储,且数据元素已按值排好序D)必须以顺序方式存储,且数据元素已按值排好序二.阅读程序,并写出下列各程序的运行结果。(每题3分,共15分)1.CHARACTERLINE*19,DC*5运行结果是:DC=**********LINE=****#DOK=16,12,-1***##LINE(K-7:K-3)=DC**###PRINT*,LINE*####DC(K-11:K-11)=#LINE=ENDDOEND2.INTEGERFUNCTIONFUN(M)运行结果是:43M=M/2FUN=M*MENDINTEGER::A,X=17,FUNA=FUN(X)/FUN(X)B=FUN(X)-FUN(X)PRINT*,A,BEND3.INTEGERA(4,4)运行结果是:DOI=1,43DOJ=1,457A(I,J)=I*J-15811ENDDO371115ENDDODOI=1,4N=5-I3WRITE(*,30)(A(I,J),J=N,4)ENDDO30FORMAT(1X,4I3)END4.INTEGERA(3,4)运行结果是:6.00DATAA/12*0/DOM=1,3DON=1,4CALLSUB(A,3,4,M,N)ENDDOENDDOWRITE(*,f6.2))F(A,3,4)ENDSUBROUTINESUB(P,M,N,I,J)INTEGERP(M,N)P(I,J)=J-IENDFUNCTIONF(P,M,N)INTEGERP(M,N)F=0.0DOI=1,MDOJ=1,NF=F+P(I,J)ENDDOENDDOEND5.A=3.0;B=5.0;C=4.0运行结果:CALLSUBT(B-A,C)2.05.0WRITE(*,’(1X,2F4.1)’)B-A,CENDSUBROUTINESUBT(X,Y)X=X+2Y=Y+1END三.程序填空题(每空2分,共30分)1.下面程序功能是,从键盘输入60个不超过4位的正整数,并把它们写入一个顺序方式打开的文件NAP中,每10个数为一个记录,然后将这个文件中每个记录的偶数之和进行输出。请在程序的横线处填上适当内容。DIMENSIONK(10)4OPEN(5,FILE=’NAP’___,FORM=’FORMATTED’,ACCESS=’SEQUENTIAL’,&STATUS=’UNKNOW’______)DO10J=1,6READ(*,’(10I4)’)(K(I),I=1,10)10_________WRITE(5,’(10I4)’)__________(K(I),I=1,10)ENDFILE5REWIND5DO25J=1,6_______READ(5,’(10I4)’)(K(I),I=1,10)IS=0DO30N=1,10IF(MOD(K(I),2_______)==0)IS=IS+K(I)30CONTINUEPRINT*,IS25CONTINUECLOSE_______END2.下面程序的功能是:逐一判断读入的数N是否能被7和9整除,若满足条件则输出该数,当读入的数为0(零)时结束。请填空。DOREAD(*,*)NIF(N.EQ.0)THENEXITELSEIF(MOD(N,7).EQ.0.AND.MOD(N,9).EQ.0)THENPRINT*,NENDIFENDIFENDDOEND3.求出1900~2100的闰年,要求把求出的闰年存入数组Y,并统计闰年的数目。以7位宽度输出闰年年号,每行10个。INTEGER::Y(50),K=0DOI=1900,2100IF(MOD(I,400)==0.OR.MOD(I,100)/=0.AND.MOD(I,4)==0)THENK=K+1Y(K)=IENDIFENDDOPRINT'(1X,I2,12HLEAPYEARS:)',K5PRINT'(1X,10I7)',(Y(I),I=1,K)END4.下面的程序输出ACSII码对照表,请填空。INTEGERA(32:126),ASCCHARACTERCH(32:126)PRINT*,ACSII码对照表DOASC=32,126A(ASC)=ASCCH(ASC)=CHAR(ASC)ENDDOPRINT10,(CH(I),A(I),I=32,126)10FORMAT(7(1X,A,=,I4))END四.简答题(共10分)1.已知N×M的二维数组,首元素A[0,0]存储地址是R单元,每个数组元素长L字节,分别写出按行和按列存储数组时,数组元素A[I,J]的存储地址(4分)答案按行:R+(I*M+J)*L按列:R+(J*N+I)*L2.给定树如下,分别写出对该树进行中序和后序遍历的结果(4分)答案:中序遍历结果是GDBEAFC后序遍历结果是GDEBFCA3.已知有序列A、B、C,如果按A、B、C的顺序入栈,请写出它们的各种不同的出栈序列。(2分)答案:A,B,CA,C,BB,C,AB,A,CC,B,A五.编程题(10分)(在下列2题中任选一题,按题目要求编写FORTRAN程序。)A阿AACFBDGE61.编写判断一个整数是否为偶数或奇数的子例行子程序,在主程序中调用它,以便分别求出100个整数中奇数和偶数的个数。SUBROUTINESUB(N,CH)CHARACTER*1CHIF(MOD(N,2)==0)THENCH=’O’ELSECH=’J’ENDIFENDPROGRAMMAINDIMENSIONK(100)CHARACTER*1CHAREAD*,KNA=0NB=0DOI=1,100KN=K(I)CALLSUB(KN,CHA)IF(CHA==’O’)NA=NA+1IF(CHA==’J’)NB=NB+1ENDDOPRINT*,’偶数的个数为:’,NAPRINT*,’奇数的个数为:’,NBEND2.已知一个实型数组由6行5列组成,要求:(1)统计数组内每一行的所有元素和,(2)将这些元素的和进行升序排列,并输出排序结果;(3)按数组原有格式输出已知数组。REALA(6,5),S(6),TREAD*,ADOI=1,6S(I)=0DOJ=1,5S(I)=S(I)+A(I,J)ENDDOENDDODOI=1,57DOJ=I+1,6IF(S(J)S(I))THENT=S(J)S(J)=S(I)S(I)=TENDIFENDDOENDDOPRINT*,(S(I),I=1,6)WRITE(*,10)((A(I,J),J=1,5),I=1,6)10FORMAT(1X,6F8.1)END软件技术基础(FORTRAN)上机考试练习题1.编写程序,首先从文件D:\CJ1.TXT读入以下字符串:IamlearningtheC++ProgrammingLanguage.将其中的单词换成FORTRAN,然后将结果显示在屏幕上。2.编写程序,首先键盘输入以下两个字符串:IamastudentofTianjinUniversity,IamlearningtheFORTRANProgrammingLanguage;分别统计各字符串中字母出现的次数,显示在屏幕上并存入顺序有格式文件D:\ST.TXT中。要求编写统计在字符串中字母出现次数的函数或子程序。3.编写程序实现以下要求:(1)写一个函数或子程序fun,求出1到m(含m)中能被7或11整除的所有整数并存入文件D:\YU711.TXT中。(2)主程序调用fun函数或子程序,并读入和显示文件D:\YU711.TXT的内容。4.编写一个程序,从键盘输入一字符个数不小于50的字符串。再输入任何一个长度小于5的字符串,如果前字符串含有该字符串,则在屏幕上输出该字符串在其中末次出现的开始位置;否则输出“NO!”。