1、编程笔试测试试题及参考的答案2008年4月笔试试卷及参考答案 一、选择题 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。 (1)程序流程图中带有箭头的线段表示的是 A) 图元关系 B) 数据流 C) 控制流 D) 调用关系 (2)结构化程序设计的基本原则不包括 A) 多态性 B) 自顶向下 C) 模块化 D) 逐步求精 (3)软件设计中模块划分应遵循的准则是 A) 低内聚低耦合 B) 高内聚低耦合 C) 低内聚高耦合 D) 高内聚高耦合 (4)在软件开发中,需求分析阶段产生的主要文档是 A) 可行性分析报告 B) 软件需求规格说明书 C) 概要设计说明书 D) 集成测试计划
2、(5)算法的有穷性是指 A) 算法程序的运行时间是有限的 B) 算法程序所处理的数据量是有限的 C) 算法程序的长度是有限的 D) 算法只能被有限的用户使用 (6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是 A) 快速排序 B) 冒泡排序 C) 直接插入排序 D) 堆排序 (7)下列关于栈的叙述正确的是 A) 栈按“先进先出”组织数据 B) 栈按“先进后出”组织数据 C) 只能在栈底插入数据 D) 不能删除数据 (8)在数据库设计中,将E-R图转换成关系数据模型的过程属于 A) 需求分析阶段 B) 概念设计阶段 C) 逻辑设计阶段 D) 物理设计阶段 (9)
3、有三个关系R、S和T,如下: 由关系R和S通过运算得到关系T,则所使用的运算为 A) 并 B) 自然连接 C) 笛卡尔积 D) 交 (10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为 A) 课号,成绩 B) 学号,成绩 C) 学号,课号 D) 学号,姓名,成绩 (11)下列对Java特性的叙述中,错误的是 A) 在编写Java子类时可以自由地增加新方法和属性 B) Java的Applet要求编程首先创建JFrame窗口 C) Java语言用解释器执行字节码 D) Java中的类一般都有自
4、己的属性和方法 (12)下列对Java源程序结构的叙述中,错误的是 A) import语句必须在所有类定义之前 B) 接口定义允许0或多个 C) Java Application中的public class类定义允许0或多个 D) package语句允许0或1个 (13)下列变量定义中,正确的是 A) long 1=123L B) long 1=3.14156f C) int i=k D) double d=1.55989E2f (14)下列Java表达式 19/3 (int)71.7-2*3 7% 3 (double)1/8+3 计算结果是 A) 6.3 B) 6 C) 6.4 D) 6 6
5、4 63 67 65 2 1 2 1 2.5 3.125 2.5 3.125 (15)switch语句中表达式(expression)的值不允许用的类型是 A) byte B) int C) boolean D) char (16)下列语句能给数组赋值而不使用for循环的是 A) myArray1=One;2=Two;3=Three; B) String s5=new StringZero, One, Two, There, Four; C) String s=new StringZero, One, Two, There, Four; D) String s=new String=|Zero
6、, One, Two, There, Four; (17)Swing与AWT相比新增的布局管理器是 A) CardLayout B) CardLayout C) CardBagLayout D) BoxLayout (18)下列语句中正确的是 A) System. out. println(1+1); B) int i=2+2; C) Sting s=on+ong; D) byte b=257; (19)下列关键字中可以表示常量的是 A) final B) default C) private D) transient (20)在Java语言中,被称为内存分配的运算符是 A) new B) i
7、nstance of C) D) () (21)阅读下面程序 pubic class Cycle public static void main(String args) System. out. println(args0); 在命令行中输入java Cycle one two,该程序输出结果是 A) Cycle B) one C) two D) 上述A、B、C、均不对 (22)阅读下面程序 public class My Val public static void main(String args) My Val m=new My Val(); m. amethod(); public
8、void amethod() boolean b=new Boolean5; 程序编译或运行结果是 A) 1 B) null C) D) 编译不能过 (23)阅读下面求质数的程序 import java. lang. Math. * ; public class MorePrimesTest public static void main(Stringargs) longprimes=new long20; primes02L; primes13L; long number=5L; outer: for(int count=2; countprimes. length; number+ =2L
9、) long limit=(long)Math. ceil(Math. sqrt(double)number); for(int i=1; icount & primesilimit; i+ +) if(number_primesi=0L) cotinue outer; for(int j=0; jprimes. length; j +) long n=primesj; System. out. println(n); 在程序下画线处填入的正确选项是 A) & B) * C) / D) % (24)接口中,除了抽象方法之外,还可以含有 A) 变量 B) 常量 C) 成员方法 D) 构造方法 (
10、25)StringBuffer类字符串对象的长度是 A) 固定 B) 必须小于16个字符 C) 可变 D) 必须大于16个字符 (26)阅读下面写文件的程序 import java. io. *; public class WriteFile public static void main(StringA) intmyArray=10,20,30,40; try FileOutputStream f=new FlieOutStream(ints. dat); DataOutputStream_=new DataOutputStream(f); for(int i=0; imyArray. le
11、ngth; i +) dos. writeInt(myArrayi); dos. close(); System. out. prinfln(Have written binary file ints. dat); catch(IOException ioe) System. out. println(IO Exception); 在程序下画线处填入的正确选项是 A) myArray B) dos C) ioe D) ints (27)阅读下面程序 public class Test2_ public static void main(String args) Thread t=new Tes
12、t2(); t. start(); public void run() System. out. priatln(How are you. ); 在程序下画线处填入的正确的选项是 A) implements Thread B) extends Runnable C) implements Runnable D) extends Thread (28)阅读下面程序 public class Test implements Runnable public static void main(Stringargs) _; t. start(); public void mR() System. out
13、. println(Hello!); 在程序下画线处填入正确选项是 A) Test t=flew Test() B) Thread t=new Thread(); C) Thread t=new Thread(new Test(); D) Test t=new Thread(); (29)下列关于Applet中加载图像的说法,错误的是 A) 可以使用Applet类的getImage()方法获得图像对象 B) 程序员必须自行定义获得图像及显示图像的类和方法 C) 图像由一个java. Image类的对象来表示 D) 可以使用Graphics类的drawImage()方法显示图像 (30)下列带下
14、画线的标识符符合Java命名约定的是 A) package com.Bi.hr B) public class xyz C) intI D) void setCustomerName() (31)RandomAccessFile是java. io包中的一个兼有输入输出功能的类。由于它是随机访问,所以文件读写一个记录的位置是 A) 起始 B) 终止 C) 任意 D) 固定 (32)阅读下面Applet程序 import javax. swing. *; import java. awt. *; public class SwintgApplet extends JApplet JLabel 1=
15、new JLabel(This is a Swing Applet.); public void init() _ 在程序下画线处填入正确的选项是 A) Container contentPane=getContenPane(); cotentPane. add(1); B) JPanel comtenPane=new Jpane(); contentPane. add(1); C) contentPane. add(1); D) add(1); (33)在Java中,“目录”被看作是 A) 文件 B) 流 C) 数据 D) 接口 (34)阅读下面实现堆栈类并发控制的部分代码 public c
16、lass DataStack private int idx=0; private intdata=new int8; public void push(int i) . _ dataidx=i; idx + +; 在程序下画线处填入正确选项是 A) synchronized B) synchronized(this) C) synchronized() D) synchronized(idx) (35)下列关于对象串行化的说法错误的是 A) Java中,默认所有类的对象都可串行化 B) 在对象串行化时,不保存对象所属类的构造方法 C) 在实现Serializeble接口的类中,用transi
17、ent关键字可使某些数据不被串行化 D) ObjectInputStream和ObjectOutputStream类都支持对象的读和写 二、填空题 注意:以命令关键字填空的必须拼写完整。 (1)测试用例包括输入值集和 【1】 值集。 (2)深度为5的满二叉树有 【2】 个叶子结点。 (3)设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有 【3】 个元素。 (4)在关系数据库中,用来表示实体之间联系的是 【4】 。 (5)在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中, 【5】 负责数据的模式定义
18、与数据的物理存取构建。 (6)按照Java中的命名约定,方法名的起始字母一般都是小写,但是 【6】 方法例外。 (7)Swing中的按钮类是 【7】 。 (8)Java中的三元运算符是 【8】 。 (9)Java输入/输出流中包括字节流、 【9】 、文件流、对象流及管道流。 (10)在Java中,对象流以 【10】 方式传送和存储。 (11)请将下面程序补充完整。 public class PowerCalc public static void main(Stringargs) double x=5.0; System. out. println(x+to the power 4 is+po
19、wer(x, 4); System. out. println(7. 5 to the power 5 is+power(7.5, 5); System. out. println(7.5 to the power 0 is+power(7.5, 0); System. out. println(10 to the power -2 is+power(10, -2); static double 【11】 (double x, int n) if(n1) return x * power(x, n-1); else if(n0) return 1.0/power(x, -n); else re
20、turn n=0 ? 1.0:x; (12)请将下面的Applet程序补充完整。 import java. awt. *; import java. applet. *; public class Hi 【12】 public void paint(Graphics g) g. drawString(Hi!, 25, 25); (13)Swing中的组件往往采用MVC结构,MVC指的是Model、View和 【13】 。 (14)Java中,可以通过建立java. lang. 【14】 类或其子类的实例创建和控制线程。 (15)如果一个线程调用 【15】 ()方法,将使该线程进入休眠状态。参考
21、答案及解析 一、选择题 (1)答案 C) 解析 程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流。带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及含义:或表示控制流;表示加工步骤;表示逻辑条件。 (2)答案 A) 解析 结构化程序设计的原则包括:“自顶而下,逐步求精”的设计思想,“独立功能,单出、入口”的模块化设计等。多态性是面向对象程序语言的特征。
22、 (3)答案 B) 解析 模块划分应遵循的准则包括模块之间的耦合和内聚。一般来说,要求模块之间的耦合尽可能地低,即模块尽可能独立,要求模块的内聚程度尽可能地高,即高内聚、低耦合的原则。 (4)答案 B) 解析 需求分析阶段的工作主要包括需求获取、需求分析、编写需求规格说明书和需求评审等4方面。产生的主要文档为软件需求规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。 (5)答案 A) 解析 算法具有5个特性:有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是
23、有限的。确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。输出:一个算法有一个或多个输出。 (6)答案 D) 解析 在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都是n(n-1)/2,堆排序需要比较的次数为nlog2n。 (7)答案 B) 解析 在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而
24、也是最后才能被删除的元素。即栈是按照“先进后出”或“后进先出”的原则组织数据的。 (8)答案 C) 解析 数据库的逻辑设计分为:将概念模型转换成一般的数据模型;将一般的数据模型转换为特定的数据库管理系统所支持的数据模型。把概念模型转换成关系数据模型就是把E-R图转换成一组关系模式。 (9)答案 D) 解析 在关系运算中,交的定义如下:设R1和R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则R1R2为交运算,结果仍为度等于n的关系,其中,交运算的结果既属于R1又属于R2。 (10)答案 C) 解析 “选课SC”表是“学生S”表和“课程C”表的映射表,主键是两个表主键
25、的组合。 (11)答案 B) 解析 编写自己的Applel时不需要创建JFrame窗口,但需要继承Applet类,并嵌入html网页中运行。 (12)答案 C) 解析 Java application中的public class定义只能是0个或1个,不能为多个,而且如果是1个的话,文件名要与public class修饰的类名相同。 (13)答案 A) 解析 根据Java向下转型的特点,B)需要强制类型转换,C)字符串类型不能赋给整型,D)可以自动类型转换,但不推荐使用。 (14)答案 D) 解析 “/”表示整除,“int”将71.7强制转化为整数71后再做减法运算,“%”是取余运算,“doub
26、le”将1/8转化成double类型后做加法运算。 (15)答案 C) 解析 switch语句用于多重选择,其参数可以是字节型、整型或字符型;而布尔型只有两个值(True、False),一般用于if语句。 (16)答案 C) 解析 A)、D)语法不正确,B)中s5的形式只能通过for循环的格式进行赋值,而不能直接赋值。C)中表达式左侧的“”说明现在定义一个数组,不需要指明数组长度,而表达式右侧“”在后面直接紧跟初始内容时也是不需要指定数组大小的,数组大小直接由初值长度决定。 (17)答案 D) 解析 AWT的布局管理器有FlowLayout、GridLayout、BorderLayout、Ca
27、rdLayout和GridBagLayout。Swing的布局管理器有CenterLavout、BoxLayout、OverlayLayout和SpringLayout。 (18)答案 A) 解析 B)整型不能与字符串类型直接相加,D)中“+”表示两个字符串的拼接,“one”是非法字符串常量声明,D)中赋值类型不匹配。 (19)答案 A) 解析 final关键字声明的变量不能再修改,即为常量。default关键字用于在switch分支里作默认分支项;private关键字则用于声明私有变量和方法类;transient关键字用于修饰变量以表明此变量易变,不需要串行化处理。 (20)答案 A) 解析
28、 在Java中对内存进行动态分配的只有通过使用关键字new。instance of用于测试某个对象是否为某个类的实例;、()是与数组、函数声明或运算相关的符号,不涉及内存分配。 (21)答案 B) 解析 main方法中的参数args是String类型的数组,所以当在命令行中输入参数one、two时,args数组中有两个元素:arg0=one,arg1=two。所以打印输出arg0为one。 (22)答案 C) 解析 编译能通过,但不在控制台输出任何信息。程序只是实例化了一个布尔类型的数组,且由于此数组为局部变量,不会自动初始化,故其中值都为null。 (23)答案 D) 解析 数组primes
29、用于保存已经判断出来的质数,内层循环用来判断number是否为质数,判断的方法是用number去除数组中已判断的质数,看余数是否为0。若为0则不是质数,跳到外层循环。所以下画线处应是取余操作。 (24)答案 B) 解析 接口只提供抽象方法,但并不提供对其的实现,并且方法默认都是公有的,而提供实例字段和方法实现是继承接口类的任务,所以接口中没有成员方法和构造方法。接口中还可以定义常量,但不能定义变量。 (25)答案 C) 解析 StringBuffer是动态构造字符串的类,它能根据字符串长度动态分配内存,且它的实现是同步的。与之对应的是StringBuilder,此类并不保证同步,但占用资源更少且执行速度更快,是JDK1.5新增的类。 (26)答案 B) 解析 要求填写的是一个DataOuputStream类的对象名称,根据程序下文中出现的dos. writeInt可知,对象名称为dos。 (27)答案 D) 解析 Thread类是多线程基类,多线程启动类必须继承此类。而实现Runnable接口的类能作为多线程的一个执行
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1