2013秋季Java程序设计期末考试试卷 - A卷 - (2) 下载本文

华南农业大学期末考试试卷(A卷)

2013-2014学年第 1 学期 考试科目: Java程序设计 考试类型:(闭卷) 考试 考试时间: 120 分钟 学号 姓名 年级专业

装题号 得分 评阅人 一 二 三 四 总分 订注意事项: 第一大题选择题和第二大题判断题的答案必须填涂在机读卡上,第三、四大题答案写在答题卷上。考试结束时机读卡、答题卷和试卷都要上交。 得分

线 一、单项选择题(本大题共 18 小题,每小题 2 分,共 36 分)

1. 以下数据类型定义错误的是________。

A. float f = (float)1.5; B. double d = 4; C. char ch = ‘\\\\’; D. byte = ‘a’+127; 2. 下列符合Java程序变量命名习惯的是________。

A. 3Button

B. length* C. null D. numOfMember

3. 下列关于Java程序的说法错误的是________。

A.一个.java的源程序编译后只能产生一个.class的字节码文件; B. Java语言是面向问题的解释型高级编程语言; C.Java程序可以实现一次编译,处处运行;

D.一个Java的源程序可以包含多个类,但只能有一个类是公共类; 4. 下列关于main()方法正确的是________。

A. main()方法是程序运行入口,所以每一.java的源程序都有main()方法; B. 在main()方法中直接调用的方法必须是静态方法; C. main()方法的头部可以根据情况任意修改; D.所有对象的创建都必须放在main()方法中;

5. 下列________是用于移动设备开发的Java开发工具版本。

A. Java EE B. Java ME C. Java SE D. JDK 6. 下列语句中,属于多分支语句的是________。

A.switch是分支语句 B.不带标号的continue可实现跳出所在的那层循环

1

C.while语句适合于有固定循环次数的场合 D.do while和while没有区别 7. 下列程序片段执行后,score的值为________

int score=0; char grade = ‘B’; switch(grade){

case ‘A’ : score = 5; case ‘B’: score =3; case ‘C’: score =1; default: score++;} A. 3 B. 4 C. 1 D. 2

8. 关于数组定义,不正确的是________

A. 数组下标从0开始递增,到数组长度-1结束; B. 数组下标越界时将产生编译错误;

C. 数组创建后将分配内存空间其长度不能改变; D. 声明数组后即可以访问其中任意一个元素;

9. 给出下列代码,则数组初始化中哪项是不正确的________。

byte[] array1,array2[]; byte array3[][]; byte [][] array4,array5;

A. array2 = array1 B. array2=array3 C. array5=array4 D. array3=array4 10. 下面________哪段代码的输出结果是1到4之间的随机值整数。

A.(int)(Math.random()*4) B.(int) Math.random*4 C. (int)(Math.random()*4)+1 D. (int) Math.random*4+1 11. 对于下列代码, 下述哪些方法可以加入类Child?________ public class Parent {

public int addValue( int a, int b) { int s; s = a+b; return s; } }

class Child extends Parent { }

A. int addValue( int a, int b ){...}

B. public void addValue (int a, int b ){/...} C. public int addValue( int a ){...} D. public int addValue( int a, int b ) {...}

12. 下列说法哪个是正确的________

A. 不需定义类,就能创建对象; B. 属性可以简单变量,也可以是一个对象; C. 属性必须是简单变量; D. 对象中必有属性和方法; 13. 已知如下代码,执行结果是________

boolean m = true; if ( m = = false )

System.out.println(\

2

装订线 1.5CM

else

System.out.println(\

A.False B.True C.None D.编译出错,不能运行 14. 下列关于接口的哪项叙述是错误________

A. 接口是一种与类相似的结构,也包含有数据域和实例方法 B. 接口没有构造方法,不能创建对象

C. 使用接口的目的是统一公共常量,规范公共操作接口

D. 一个类实现接口时要实现接口中的所有抽象方法,除非这个类是抽象类 15. 下列关于构造方法不正确的是________

A. 抽象类不能创建实例对象,所以没有构造方法

B. 子类构造方法第一条语句要么用super显式调用父类构造方法,要么用this调用本类

构造方法

C. 要构造子类对象首先要构造父类对象 D. 子类不能继承父类的构造方法

16. 下列关于方法重载和覆盖的描述,不正确的是________

A. 可通过返回值类型来区分是否为重载方法

B. 方法重载可减少记忆方法名称的难度,使程序清晰易读 C. 方法覆盖只能在有继承关系的父子类间

D. 方法覆盖必须保持父类方法的返回值、方法名和形参均不变

17. 在子父类继承中,子类继承父类的部分方法,保持方法头部不变,修改方法体,这种

现象称为________

A. 继承 B. 方法重载 C. 方法覆盖 D. 多态 18. 关于Java的包叙述正确的是________。

A. 不同包中的类不允许有相同的名称

B. 同一包中的类允许有相同的名称 C. 源文件中没有采用package则其类没有加入到任何一个包中间 D. package语句必须位于源程序中的第一条语句

19. 构造方法何时被调用________。

A. 类定义时 B. 使用对象属性时 C. 使用对象方法时 D. 对象被创建时 20. 关于类成员的访问特性错误的是________。

A. 无范围修饰符具有包范围特性

B. private修饰符不能用于修饰顶层类

C. abstract和final不能同时用于修饰方法 D. static修饰符能同时修饰方法、属性和类

得分

二、判断题(本大题共14小题,每小题1分,共14分,正确选A,错误选B)

21. ( )同一个类的不同对象用不同的内存段,但静态成员共享共同的内存空间。

3

22. ( )方法中的形参名可以和方法所属类的属性同名。 23. ( )Java程序中变量作用域是声明它的一对花括号范围内。

24. ( )声明两个String类对象S1和S2,要比较这两个对象中的字符串内容是否相等可

以采用如下方法 if(S1==S2)

25. ( )方法调用表达式方式适合于有返回值的方法的调用,在调用时实参与形参在

次序、类型和数量上要匹配。

26. ( )引用一个类的属性或调用其方法时,必须以这个类的对象为前提。

27. ( )没有定义访问控制符的类的成员变量和方法可以被同一个包中的其他类和对象

访问。

28. ( )访问权限最大的是public成员,最小的是protected成员。

29. ( )this可用来调用本类的重载方法,super可用来调用父类的覆盖方法。 30. ( )抽象类的子类一定是具体类,但实现接口的类不一定是具体类。

得分

三、程序阅读题(本大题共4小题,每小题5分,共20分) 说明:阅读下面的程序,并写出程序的运行结果。

1. public class Test1

{ public static void main(String args[ ]) { int i , s = 0 ;

int a[ ] = {10 ,20 ,30 ,40 ,50 ,60 ,70 ,80 ,90 }; for ( i = 0 ; i < a.length ; i ++ ) if ( a[i]%3 = = 0 ) s += a[i] ; System.out.println(\ } }

2. 阅读程序,回答以下问题 1: public class Output1 {

2: public static void main(String arge[]) { 3: int i=0;

4: for ( char ch = 97; ch<113; ch++,i++) { 5: if( i % 8 == 0 )

6: System.out.println(\

4

装订线

7: System.out.print(\ 8: } 9: } 10: }

(1)程序第5、6行的if语句的功能是什么?(2分) (2)程序输出的结果有几行?(3分)

3. class ParentClass{

int x=10;

protected void setValue(){

System.out.println(\调用父类setValue()方法,x=\}

public void changeValue(){

x = x+2;

System.out.println(\调用父类changeValue()方法,x= \ }

public void print(){

System.out.println(\调用父类print()方法\ System.out.println(\父类对象的x = \

}

}

class SubClass extends ParentClass{ int x=20;

public void setValue(){

System.out.println(\调用子类setValue()方法,x=\

}

public void changeValue(){

x = x + 10;

System.out.println(\调用子类changeValue()方法,x= \}

}

public class MethOverrrideTest{ public static void main(String args[]) { ParentClass pObj1 = new ParentClass(); ParentClass pObj2 = new SubClass(); pObj1.setValue(); pObj1.print(); pObj2.setValue();

}

}

5

(1)程序实现了面向对象的什么技术?(2分) (2)程序输出的结果如何?(3分)

4. class Top{

public Top(){System.out.println(\}

class Mid extends Top{

public Mid(){System.out.println(\}

class Bot extends Mid{

public Bot(){System.out.println(\}

class Tester{

public static void main(String args[]){ new Bot(); } }

得分

四、编写程序题(本大题共3小题,共30分)

1. 编写程序. 任意输入一个正整数n,输出2到n之间所有的质数。(9分)

2. 编写程序. 随机生成100个0-9之间的整数,统计并输出0-9之间每个数的个数。(10分)

3. 定义一个类来描述公司雇员,类命名为Employee,具体要求如下:(11分)

(1)数据域: id表示工号,类型为int;name表示姓名,类型为String;salary表示工资,类型为double。 (2)构造方法:

默认构造一个Emplyee对象时,id/name/salary默认值分别为0/””/0.0;也可以在构 造Employee对象时通过参数指定数据域初始值。 (3)完成各数据域的封装。

(4)定义工资计算方法getSalary()。 (5)由Employee继承实现三种类型员工 文员(Clerk),工资计算方式是:基本工资+奖金-缺勤天数*5; 销售员(Saleman),工资计算方式是:基本工资+销售业绩*0.05; 临时工(HourlyWorker),工资计算方式是:工作小时数*20。

6