(备考2023年)湖南省邵阳市全国计算机等级考试Java语言程序设计真题二卷(含答案).docx
(备考2023年)湖南省邵阳市全国计算机等级考试Java语言程序设计真题二卷(含答案)学校:班级:姓名:考号:一、单选题(10题)1.设有栈S和队列Q,其状态为空,元素al,a2,a3,a4,a5,a6依次入栈,出栈的元素则进入队列Q,若6个元素出列的顺序是a2,a3,a4,a6,a5,al,则栈的容量至少是。A.6B.4C.3D.22 .如果进栈序列为el,e2,e3,e4l则可能的出栈序列是0A.e3,el,e4,e2B.e2,e4,e3,elC.e3,e4,el,AD.任意顺序3 .如果希望网格布局中的组件可以占据多个单元,应使用布局管理器()oA.Grid1.ayoutB.GridBag1.ayoutC.Box1.ayoutD.三者都不是,这种目标无法实现4 .在多线程并发程序设计中,能够给对象X加锁的语句是()。A.x.wait()B.synchronized(x)C.x.notify()D.x.synchronized()5 .下列代码将对象写入的设备是ByteArrayOutputStreambout=newByteArrayOutputStreamO;ObjectOutputStreamut=newObjectoutputStream(bout);out.writebject(this);out.close();A.内存B.硬盘C.屏幕D.网络6 .下列可以获得构件前景色的方法是()oA.getsize()B.getForeground()C.getBackground()D.paint()7 .下列关于Java语言特点的叙述中,错误的是()oAJava是面向过程的编程语言BJava支持分布式计算CJava是跨平台的编程语言DJava支持多线程8 .设数组data0m作为循环队列Sq的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为()。A.Sq.front:=sq.front+1;B.Sq.front:=(Sq.front+1)%maxsize;C.Sq.rear:=(Sq.rear+l)%maxsize;D.Sq.front:=(sq.front+l)%(maxsize+1);9 .在JaVa中,下列代码运行后的输出结果是()intx=5*3;inty=x+5x+3;System.out.println(y);A.18B.21C.19D.410 .编译Javaapplet源程序文件产生的字节码文件的扩展名为()AjavaB.classC.htmlD.exe二、2.填空题(10题)11 .下面程序执行的结果应是【】。classTest2publicstaticvoidmain(Stringargs)inti=2,j=l;bytek=(byte)(i+j);System.out.println(k);)12 .布尔逻辑运算符包括:!、&&和o13 .基本的线程控制包括终止线程、测试线程状态、【】。14 .Java语言的循环语句包括for语句、do-while语句和语句。15 .源程序文档化要求程序应加注释。注释一般分为序言性注释和【】注释。16 .下面程序段是创建一个Date类的对象并把它串行化保存到文件中,该对象表示的是运行时刻的日期及时间,请将程序补充完整。imporyava.util.*;importjava.io.*;PublicclassSerializeDateDated;SefializeDateOd=newDate();tryFileOutputStreamf=newFileOutputStream(',date.ser11);bjectOutputStreams=newObjectOutputStream(0;f.clse();)Catch(IOExceptiOne)e.printStackTrace();)publicstaticVOidmain(StringargS)SerializeDateb=newSerializeDate();System.out.println(,ThesaveddateiS:+b.d.toString();)17 .在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,负责设计的模式定义与数据的物理存取构建。1.1 1以下程序计算l+l3+l5+.+l(2N+l),直至1(2N+1)小于0.00001,请在横线处将程序补充完整。publicclassSunpublicstaticvoidmain(Stringargs)intn=l;doubleterm,sum=0;don=;term=On;sum=sum+term;while(term>=0.00001);System.out.pfintln(n);System.out.println(sum);19 .在一个类的内部嵌套定义的类称为【】。20 .若按功能划分,软件测试的方法通常分为白盒测试方法和测试方法。三、1.选择题(10题)21 .一个向量第1个元素的存储地址是1001每个元素的长度为2,则第5个元素的地址是()。A.110B.108C.100D.12022 .具有3个结点的二叉树有()A.2种形态B.4种形态C.7种形态D.5种形态23 .下面内容不属于使用软件开发工具好处的是()。A.减少编程工作量B.保证软件开发的质量和进度C.节约软件开发人员的时间和精力D.使软件开发人员将时间和精力花费在程序的编制和调试上24 .若要求尽可能快地对实数数组进行稳定的排序,则应选()。A.快速排序B.堆排序C.归并排序D.基数排序25 .下列语句序列执行后,k的值是()intj=8,k=15;for(inti=2;i!=j;i+)j-=2;k+;)A.18B.15C.16D.1726 .下列哪个标识符不是合法的标识符?()A.7abcB.$TRYC._syV$D.$_PP27 .下列关于Java多线程并发控制机制的叙述中,错误的是AJava中对共享数据操作的并发控制是采用加锁技术B.线程之间的交互,提倡采用SUSPend()resume()方法C.共享数据的访问权限都必须定义为privateDJava中没有提供检测与避免死锁的专门机制,但应用程序员可以采用某些策略防止死锁的发生28 .下列能正确计算45。的余弦值的是()oA.doubled=Math.cos(45);B.doubled=Math.cosine(45);C.doubled=Math.cos(Math.toRadians(45);D.doubled=Math.cos(Math.toDegress(45);29 .下面程序段的输出结果为publicclassTestpublicstaticvoidmain(Stringargs)booleana,b,c;a=(3<5);b=(a=true);System.out.printin(11a="+a+"b=,+b);c-(b=false);System.out.println(b="+b+"e="+c);A.a=trueb=falseb=truec=falseB.a=trueb=falseb=truec=trueC.a=trueb=trueb=truec=falseD.a=falseb=falseb=truec=false30 .下面程序段:booleana=false;booleanb=true;booleanc=(a|b)&&(b);booleanresult=(a|b)&(b);执行完后,正确的结果是A.c=false;result=falseB.c=true,result=trueC.c=true;result=falseD.c=false;result=true四、综合应用题(2题)31 .注意:下面出现的“考生文件夹”均为USER%在考生文件夹中存有文件名为Java_3.java的文件,该程序是不完整的,请在注释行“*Found*”下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。本题的要求是:编写程序完成类JaVa_3的完整功能,该类定义了几何点对象的操作。该程序运行结果如下:x=5y=51.ocationis(5,5)x=8y=91.ocationis(8,9)给定源程序:publicclassJava_3点的坐标i11tx,y;publicJava_3()*Found*publicJava_3(intx,inty)*Found*publicJava_3(Java_3p)以对象的形式返回当前点的位置publicJava_3get1.ocation()*Found*Java_3p=;实例化一个Java_3对象p,其坐标是(,y)*Found*;返回对象P)返回点的横坐标publicintgetX()returnx;返回点的纵坐标publicintgetY()returny;把当前点移到新的位置(x,y)±publicvoidmove(intx,inty)this.x=x;this.y=y;以(,y)的格式返回点的位置publicStringtoString()return,("+x+,7,+y+11)")在原有坐标上分别增加X和ypublicvoidtranslate(intx,inty)this.x+=x;this.y+=y;publicstaticvoidmain(Stringargs)*Found*Java_3p=;生成一个对象(5,5)System.out.println(,'x=11+p.x+"y="+p.y);System.out.println("1.ocationis11+p.toString();以(x,y)的方式打印坐标的位置*Found*;在原有位置上增加(3,4)System.out.println(',x=11+p.x+ny=11+p.y);打印横坐标和纵坐标的值System.out.println("1.ocationis"+p.toString();以(x,y)的方式打印坐标的位置32 .注意:下面出现的“考生文件夹”均为USER%在考生文件夹中存有文件名为Java_3.java的文件,该程序是不完整的,请在注释行“*FOUnd*“下一行语句的下划线地方填入正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。本题的要求是:阅读Java_3.java程序,该程序的功能是按照命令行给定的文件名和文件长度建立一个新的文件NeWFile.doc。完成程序并运行结果,在程序相同目录下创建了新的文件NewFile.doc.给定源程序:程序的功能是按照命令行给定的文件名和文件长度建立一个新的文件NewFile.docoimportjava.io.*;publicclassJava_3publicstaticvoidmain(Stringargs)StringsizeStr;StringfileName;if(args.length>1)sizeStr=argsl;elsesizeStr="300011;if(args.length>0)fileName=args0;elsefileName="NewFile.doc"longsize=0;try(size=1.ong.parse1.ong(sizeStr);catch(NumberFormatExceptione)try*Found*raf=newRandomAccessFile(Jrw");/*jpound*raf.set1.ength();raf.close();catch(IOExceptione)五、单选题(0题)33 .下列关于JaVa语言中线程的叙述中,正确的是()。A.线程由代码、数据、内核状态和一组寄存器组成B.线程间的数据是不共享的C.用户只能通过创建Thread类的实例或者定义和创建Thread子类的实例,建立和控制自己的线程D.因多线程并发执行而引起的执行顺序的不确定性可能造成执行结果的不确定六、单选题(0题)34 .要表示表格的数据,需要继承类()。AAbstractTableModelB.TableModelCJTableD.TableModelable参考答案1.C2.B解析:由栈“后进先出”的特点可知:A中el不可能比e2先出,C中e3不可能比e4先出,且el不可能比e2先出,D中栈是先进后出的,所以不可能是任意顺序。所以B是正确的。它执行的顺序是:el进栈e2进栈e2出栈e3进栈一e4进栈>e4出栈e3出栈el出栈,所以只看出栈序列应为e2,e4,e3,elo3.B解析:Grid1.ayout布局管理器使容器中各个构件呈网格状布局,平均占据容器的空间,GridBag1.ayout布局管理器是Gfid1.ayout布局管理器的扩展。GridBag1.ayout与Grid1.ayout的区别在于以下几个方面:组件在网格中可以占据多个单元。不同行和列的比例不必相等。在网格单元内的组件可以用不同的方式进行摆放。因此,B是正确选项。Box1.ayout布局管理器按照自上而下(Y轴)或者从左到右(X轴)的顺序布局依次加入构件。4.B解析:JaVa平台将每个由SynChroniZed(ObjeCt)语句指定的对象设置一个锁,称为对象锁。JaVa中的对象锁是一种独占的排他锁。ObjectOutputStream类的构造方法是ObjeCtoUtPUtStream(OUtPUtStreamout)oJaVa中的二进制流全都写入到内存中。6.BB。【解析】A是获得控件大小,B是获得构件的前景色,C是获得构件的背景色,D是继承Applet的子类需要实现的方法。7.A解析Java语言是一种面向对象的语言,与其他面向对象语言相比,Java利用面向对象技术更彻底,它把所有的Java应用和Applet都看作对象。JaVa语言具有如下特点:简单易学,利用面向对象技术,分布式计算,健壮性,安全性,跨平台性,可移植性,解释执行,高性能,多线程,动态性。8.Bn循环队列采用的方法是:假设向量Sq.datamaxsize是一个首尾相接的圆环,即SqT.dataO接在Sq.datamaxsize-1之后,我们将这种意义下的向量称循环向量,并将循环向量中的队列称为循环队列。若当前尾指针等于向量的上界,则再做入队列操作时,令尾指针等于向量的下界,这样就利用到已被删除的元素空间,克服假上溢现象。因此入队操作时,在循环意义下的尾指针加1操作可描述为:if(Sqf.rear>=maxsize)sq.near:=O;elsesq.rear+;如果利用“模运算",上述循环意义下的尾指针加1操作,可以更简洁地描述为:SqT.rear=(sq.rear+l)%maxsizeo同样,出队操作时,在循环意义下的头指针加1操作,也可利用“模运算”来实现:sq.front:=(sq.front+l)%max-sizeon10.B解析:该题考查对Applet运行中所需要的几种文件的理解。Applet源程序与任何JaVa源程序一样,其文件扩展名都为java,编译之后生成的目标文件的扩展名为CIaSS,但要执行该小程序,必须有相应的html文件;而.exe文件根本就与JavaApplet不沾边。I1.【】3【】3解析:将较长的数据类型转换成较短的数据类型,只能用强制类型转换,通常都用赋值语句来实现,在要求强制转换的变量名前面用。括上所要强制转换的类型符。强制转换会使精度降低,如题目中k的精度明显降为8位bit。12.11II解析:布尔逻辑运算符共有3种,即逻辑与(&&)、逻辑或(三)和逻辑非(!)。13 .线程的暂停和恢复线程的暂停和恢复解析:基本的线程控制包括终止线程、测试线程状态、线程的暂停和恢复。终止线程线程终止后,其生命周期结束了,即进入死亡态,终止后的线程不能再被调度执行,以下几种情况,线程进入终止状态,线程执行完其run()方法后,会自然终止;通过调用线程的实例方法stop。来终止线程。测试线程状态可以通过Thread中的isAlive()方法来获取线程是否处于活动状态;线程由Start()方法启动后,直到其被终止之间的任何时刻,都处于AliVe状态。线程的暂停和恢复有几种方法可以暂停一个线程的执行,在适当的时候再恢复其执行。join()方法,当前线程等待调用该方法的线程结束后,再恢复执行。14 .whilewhile解析:本题考查Java语言的循环结构。Java语言的循环结构包括While循环,又称为“当型”循环:do-while循环,又称为“直到循环”;for循环,需要首先知道循环会执行多少次。循环结构是Java流程控制中非常重要的结构,务必掌握,不仅要知道其概念,更要灵活运用。15 .功能性功能性解析:注释分序言性注释和功能性注释,语句结构清晰第一、效率第二。1 6.s.write0bject(d);s.writebject(d);解析:本题考查把一个对象写到一个流中。这个操作比较简单,是通过调用ObiectOutputStream类的Writee)bject()方法实现的。ObjeCtOUtPUtStream类是一种过滤流类,因此,对象流必须在其他流的基础上进行构造,题目程序中SefiaIiZeDate类的构造方法SefiaIiZeDate()中,刑象流S是在一个文件输出流上构造的,通过S将一个Date类的对象串行化到一个名为date.ser中,具体是通过调用ObjeCtOUtPUtStream类的方法WriteObjeCt()将该对象写到对象输出流S中,而对象最终是保存在外存date。ser文件中的。17 .数据定义语言数据定义语言解析:数据定义语言负责数据的模式定义与数据的物理存取构建;数据操纵语言负责数据的操纵,如查询与增加、删除、修改等;数据控制语言负责数据完整性、安全性的定义与检查,以及并发控制、故障恢复等。182*n+l19 .内部类内部类解析:内部类是嵌套在一个类的内部使用的,与普通类一样,内部类也具有自己的成员变量和成员方法。20 .黑盒或黑箱黑盒或黑箱解析:软件测试的方法分为白箱测试方法和黑箱测试方法。白箱测试是根据对程序内部逻辑结构的分析来选取测试用例,白箱测试用例的设计准则有:语句覆盖、分支覆盖、条件覆盖和组合条件覆盖;黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法。21.B解析:数据元素的存储位置均取决于第1个数据元素的存储位置,即1.OC(ai)=1.OC(al)+(i-l)Cf基地址T一个数据元素所占字节数所以第5个元素的地址为100+2*(5/)=108。22 .D解析:因为二叉树有左、右子树之分,所以有3个结点的二叉树具有5种不同的形态。23 .D解析:软件开发工具的好处在于减少编程工作量、保证了软件开发的质量和进度、节约软件开发人员花在程序编制和调试上的时间和精力,可以花更多的时间考虑软件的需求和设计。24.C解析:这里要用到的知识几乎都是要记忆的。此类题目可以采用排除法,首先,稳定的排序这里有两个选项C和D,其饮,选项D不适用于实数的排序,因此只可用C。25.D26.A27.B解析:本题考查多线程的并发控制机制。Java中对共享数据操作的并发控制采用传统的封锁技术,也就是给对象加锁,选项A说法正确。线程之间的交互,提倡采用wait。和notify。方法,这两个方法是java.lang.ObjeCt类的方法,是实现线程通信的两个方法,不提倡使用SUSPend()和resume。方法,它们容易造成死锁,所以选项B说法错误。共享数据的访问权限都必须定义为private,不能为public或其他,选项C说法正确。JaVa中没有提供检测与避免死锁的专门机制,因此完全由程序进行控制,应用程序员可以采用某些策略防止死锁的发生,选项D说法正确。28 .C解析:PUbliCStatiCdOUbIeCoS(doublea)是Math类中返回以弧度a为单位的cos值的,应先用toRadians()方法将45度转换为弧度值。29 .C解析:本题考查关系运算符<和题目中a=(3<5);比较3和5的大小,因为3<5,返回true给a:b=(a=true);判断a是否为真,因为a确实为真,返回true给b;c=(b=false);判断b是否为假,因为b不为假,返回false给c。最后结果a=true,b=true,b=true,c=falsej选项C正确。30.B解析:本题考查Java中的运算符。考试重点内容,历次考试都有题目涉及。首先要清楚,是逻辑与运算符;是按位与运算符;“'是逻辑或运算符;T是按位或运算符。“a|b”的结果为true,所以“true&&true”结果为trueo而"a|b”的结果也为true,故result=(a|b)&(b)i§句的结果也为true,选项B正确。31.this.x=x;this.y=y;x=p.x;y=p.y;newJava_3(x,y);retump;newJava_3(5,5);p.translate(3,4)第1处:点的坐标,需填入this.x=x;this.y=y;第2处:点的坐标,需填入x=p.x;y=p.y;第3处:实例化一个JaVa_3对象p,其坐标是(x,y),需填入newJava_3(x,y)第4处:返回对象,需填入returnp第5处:实例化一个JaVa_3对象p,其坐标是(5,5),需填入newJava_3(5,5)第6处:在原有位置上增加(3,4),需填入p.translate(3,4)32.RandomAccessFile;fileName;size第1处:创建随机文件对象,需填入RandomAccessFile第2处:随机文件的文件名,需填入fileName第3处:随机文件的长度,需填入size33.DDo【解析】本题考查线程的基本知识。线程与进程在概念上是相关的,线程是由表示程序运行状态的寄存器、程序计数器、栈指针以及堆栈组成,它不包含进程地址空间中的代码和数据。代码所操作的数据是JaVa线程模型中的一个组成部分,数据与代码是独立的。数据可以被多个线程共享,也可不共享。JaVa语言中提供两种创建线程的方法,一种是通过继承Thread类创建线程,另一种是通过实现RUnnable接口来创建线程。34.A解析:表格是SWing新增加的构件,主要功能是把数据以二维表格的形式显示出来。使用表格,依据M-V-C的思想,最好生成一个MyTableModel类型的对象来表示数据,这个类是从AbstractTableModel类继承来的。