资源描述
考试题型
分为四种:
1、单选题 每小题2分,20个小题共40分
2、判断题 每小题1分,10个小题共10分
3、阅读程序写结果 每小题5分,4小题共20分
4、编程题 3个小题,9分,10分,11分,共30分
提醒各位同学注意,考试采用标准答题卡,单选题和判断题的答案将填涂在答题卡上,考试时记得带2B铅笔和橡皮擦。
考试内容分布:
1、出题范围从第1章到第8章,其中第2章2.5.4位运算、条件运算,5.1.6 for…each,5.4.2 StringBuffer,6.7方法的递归调用,8.5内部类,8.6基本数据类型与包装类不在考核范围,其他都有涉及。
2、重点考核在选择结构、循环结构、数组、对象和类、继承与多态等内容上。
3、强调学生重视基础的同时要学会编写程序
华南农业大学期末考试试卷(A卷)
2023-2023学年第 1 学期 考试科目: Java程序设计
考试类型:(闭卷) 考试 考试时间: 120 分钟
学号 姓名 年级专业
一、单项选择题(本大题共 18 小题,每小题 2 分,共 36 分)
1. 下列关于Java语言的说法,不对的的是________:
A. Java是面向对象的高级语言
B. Java是解释型语言,所以执行速度快
C. 一个类被编译成一个.class字节码文献
D. Java程序可以做到“一次编写,随处运营”
2. 下列符合Java程序元素命名习惯的是________。
A. double Radius B. int lengthofarray C. class shape D. final double PI
3. 下列不满足自动类型转换的赋值语句是________。
A.int c = ‘A’; B. long d = 165;
C.float b = 26.3; D. double a = 13;
4. 语句int a = 10, b = 20; b += a++; 执行结束后,a和 b的值分别是________。
A. 10,30 B. 11,30 C. 10,31 D. 11,31
5. 下列程序段的输出结果是________。
int m = 4, n = 9;
System.out.println(“m + n = ” + m + n);
A. m + n = 13 B. m + n = mn C. m + n = m + n D. m + n = 49;
6. 下列关于for和while这两种循环语句的说法,对的的是________
A.两者都是后置检查循环条件 B.循环次数不拟定使用for语句比较好
C.循环条件是布尔型表达式 D.它们之间不能互相嵌套使用
7. 下列程序片段执行后,y的值为________
int x = 4, y = 3; switch(x + 3){case 7: y = 7; case 8: y =8; default: y++;}
A. 4 B. 7 C. 8 D. 9
8. 定义二维数组a,不对的的是________
A. double a [3][3]; B. double a[][]; C. double[] a[]; D. double[][] a;
9. 设int[][] b = {{26,53},{24,18,33},{29,81,51},{27,44,92,13}},则________
A. 数组一共有12个元素 B. b[2].length为4 C. b.length为12 D. b[3][2]等于81
10. 下面一段代码的输出结果是________
class Test{
public static void main(String [] args){
int[] a={36,31,0,11,8,13,24,49,33,16}; swap(a,4,8);System.out.println(a[4]);}
public static void swap(int[] a, int i, int j){int t = a[i]; a[i] = a[j]; a[j] = t;}
}
A. 8 B. 33 C. 11 D. 49
11. 关于字符串,下列语句不对的的是________
A. String s = new String(”Olympic game”);
B. “Welcome to Guangzhou”.indexOf(‘o’);
C. String s = “Great Wall”; s.delete(2,5);
D. StringBuffer buffer = new StringBuffer(); buffer.append(“China”);
12. 关于类和对象,下列说法不对的的是________。
A. 类是对象的模板,对象是类的实例
B. 面向对象有四个基本特性:抽象、封装、继承和多态
C. 对象的引用变量只是存放了对象的地址
D. 静态成员方法可以调用实例成员方法
13. 关于类和成员的访问权限,下列说法对的的是________
A. 类A能继承类B的前提是A和B必须在同一个包中
B. 子类不能继承位于不同包中的父类的protected成员
C. 子类不能继承位于同一包中的父类的private成员
D. 子类可以继承位于不同包中的父类的无修饰成员
14. 下列关于继承的哪项叙述是对的________
A. 在java中允许多继承 B. java的单一继承使代码更可靠
C. 在java中一个类不能同时继承一个类和实现一个接口
D. 在java中一个类只能实现一个接口
15. 下列关于父类和子类构造方法,不对的的是________
A. 子类不能继承父类的构造方法
B. 子类构造方法可以调用父类构造方法
C. 子类构造方法的第一条语句必须通过super显式调用父类构造方法
D. 子类构造方法的第一条语句也可以通过this调用本类的重载构造方法
16. 下列关于方法重载和覆盖的描述,不对的的是________
A. 可通过返回值类型来区分是否为重载方法
B. 方法重载可减少记忆方法名称的难度,使程序清楚易读
C. 方法覆盖只能在有继承关系的父子类间
D. 方法覆盖必须保持父类方法的返回值、方法名和形参均不变
17. 下列不是实现多态必须条件的是________
A. 继承 B. 方法重载 C. 方法覆盖 D. 父类引用变量可引用子类对象
18. Object是Java中所有类的祖先类,其中用来比较两个对象内容是否相等的方法是_____
A. equals B.clone C. compare D. toString
得分
1.5CM
二、判断题(本大题共14小题,每小题1分,共14分,对的选A,错误选B)
19. ( )把java源文献编译成class字节码文献的JDK命令是java。
20. ( )Java程序中可包含多个源文献,但每个源文献中只有一个public类。
21. ( )包含main方法的类叫主类,没有主类程序就无法运营。
22. ( )不带标号的continue语句可实现跳出所在的那层循环。
23. ( )方法调用表达式方式适合于有返回值的方法的调用,在调用时实参与形参在
顺序、类型和数量上要匹配。
24. ( )方法覆盖和方法重载都是规定方法同名,因此没有本质区别。
25. ( )静态成员方法与对象无关,所以不会访问实例数据域。
26. ( )访问权限最大的是public成员,最小的是protected成员。
27. ( )this是当前对象的引用,大多数情况下可隐去,但有时需要显式使用。
28. ( )抽象类不能定义对象引用变量,也不能创建对象。
29. ( )抽象类的子类一定是具体类,但实现接口的类不一定是具体类。
30. ( )包可以解决命名冲突,不同包中可以包含同名的类。
31. ( )在Java源文献中,把自己的类装入某个包中所使用的关键字是import,把库中
的类导入到源文献的关键字是package。
32. ( )this可用来调用本类的重载方法,super可用来调用父类的覆盖方法。
得分
1.5CM
三、程序阅读题(本大题共4小题,每小题5分,共20分)
说明:阅读下面的程序,并写出程序的运营结果。
1. public class Test{
public static void main(String [] args){
int[] a = {36,21,50,78,19,89,74,33,46,68};
int m = a[0], n = 0;
for(int i=1;i<10;i++)
if (m < a[i]){m = a[i]; n = i;}
System.out.printf (“m = %d,n = %d\n”, m, n);
}
}
2. public class Stat{
public static void main(String args[ ]){
int n=0;
String s=”The 30th Olympic games is held in London last summer.”;
for (int i=0;i<s.length();i++)
if (s.charAt(i)==’m’)
n++;
System.out.println(n);
}
}
3. class Person{
public Person() {System.out.println(“Person()”); }
}
class Teacher extends Person{
public Teacher(){this(“Teacher(String)”); System.out.println(“Teacher()”);}
public Teacher(String s){System.out.println(s);}
}
public class Faculty extends Teacher{
public Faculty(){System.out.println("Faculty()");}
public static void main(String[] args) {Faculty fa = new Faculty();}
}
4.
public abstract class Animal {
public abstract void sound();
}
class Dog extends Animal{
public void sound(){System.out.println(“Woof woof”);}
}
class Cat extends Animal{
public void sound(){System.out.println(“Miiaooww”);}
}
class PetCat extends Cat{
public void sound(){System.out.println(“Miaomiao”);}
}
public class Test {
public static void main(String[] args) {
Animal[] a = {new Dog(),new Cat(),new PetCat()};
for(int i=0;i<a.length;i++){a[i].sound();}
}
}
得分
1.5CM
四、编写程序题(本大题共3小题,共30分)
1. 编写程序. 求出2~200间所有素数之和并输出。(9分)
2. 编写程序. 如下给定一个3行4列的三位整数数表(即每个元素为int型三位十进制整数),找出这12个三位数中,数字之和最大的那个数及其所在的行和列并输出(数字之和的含义:如第0行第0列的259这个数,其数字之和就是2+5+9=16)。(10分)
259 132 799 113
332 262 209 863
807 301 684 343
3. 定义一个类来描述公司雇员,类命名为Employee,具体规定如下:(11分)
(1)数据域:
id表达工号,类型为int;name表达姓名,类型为String;salary表达工资,类型为double。
(2)构造方法:
默认构造一个Emplyee对象时,id/name/salary默认值分别为0/””/0.0;也可以在构
造Employee对象时通过参数指定数据域初始值。
(3)定义各数据域相应的访问器和修改器。
(4)对象描述器,设对象的输出形式为:工号:XXX,姓名:XXX,工资:XXX。
(5)定义一个按雇员工资定级别的方法:int level(),返回值为级别数,具体规定为:
salary <5000, 3级
5000≤salary<8000, 2级
salary≥8000, 1级
华南农业大学期末考试参考答案(A卷)
一、单项选择题(本大题共 18 小题,每小题 2 分,共 36 分)
1
2
3
4
5
6
7
8
9
B
D
C
B
D
C
D
A
A
10
11
12
13
14
15
16
17
18
B
C
D
C
B
C
A
B
A
1.5CM
二、判断题(本大题共14小题,每小题1分,共14分,对的选A,错误选B)
19
20
21
22
23
24
25
B
A
A
B
A
B
A
26
27
28
29
30
31
32
B
A
B
B
A
B
A
三、程序阅读题(本大题共4小题,每小题5分,共20分)
评分细则:1-2题错误没有分,3-4题每答错一行扣一分
1.
m=89,n=5
2.
4
3.
Person()
Teacher(String)
Teacher()
Faculty()
4.
Woof woof
Miaomiao
Miiaooww
1.5CM
三、编写程序题(本大题共3小题,共30分)
1. (9分)
public class Test { +1
public static void main(String[] args) { +1
int s = 0;
for(int i=2;i<=10;i++){
if(isPrime(i))
s+=i;
} +3
System.out.println("2~200间所有素数之和为:"+s); +1
}
static boolean isPrime(int a){
boolean b = true;
for(int i=2;i<a;i++)
if(a%i == 0){b = false; break;}
return b;
} +3
}
2. (10分)
public class Test { +1
public static void main(String[] args) {
int[][] a = {{259,132,799,113},{332,262,209,863},{227,301,684,343}}; +1
int max = 0,r=0,c=0; +1
for(int i=0;i<3;i++)
for(int j=0;j<4;j++){
int t = dsum(a[i][j]); if(max<t){max = t;r = i;c = j;}
} +3
System.out.printf("数字和最大的数是:%d,位于数表的第%d行第%d列\n",a[r][c],r,c);
} +1
static int dsum(int m){
int s = 0;
while(m!=0){s+=m%10; m=m/10;
}
return s;
} +3
}
3. (11分)
class Employee { +0.5
private int id;
private String name;
private double salary; +1.5
Employee(){
id = 0; name = ""; salary = 0.0;
} +1
Employee(int id,String name,double salary){
this.id = id; this.name = name; this.salary = salary;
} +1
public double getId(){return id;}
public String getName(){return name;}
public double getSalary(){return salary;} +1.5
public void setId(int id){this.id = id;}
public void setName(String name){this.name = name;}
public void setSalary(double salary){this.salary = salary;} +1.5
public String toString(){
return "工号:" + id + ",姓名:" + name +",工资:" + salary;} +1
public int level(){
int l;
if(salary<5000.0) l = 3;
else if(salary>=5000.0 && salary<8000.0) l = 2;
else l = 1;
return l;
} +3
}
华南农业大学期末考试试卷(A卷)
2023-2023学年第 1 学期 考试科目: Java程序设计
考试类型:(闭卷)考试 考试时间: 120 分钟
学号 姓名 年级专业
题号
一
二
三
总分
得分
评阅人
考试说明:所有答案必须填写在答卷上,考试结束时答卷和试卷都上交。
得分
一、单项选择题(本大题共 25 小题,每小题 2 分,共 50 分)
1. 下列有关Java程序的说法中对的的是________:
A. 由于Java程序是解释执行的,所以执行前不需要进行编译
B. 一个.java源程序编译后将产生一个.class的字节码文献
C. 安装了JDK后,安装程序会自动配置系统的环境变量path和classpath
D. 面向对象的解释型高级编程语言
2. 下列为合法变量名的是________。
A. false B. 0xabc C. iStudent D. cow’s
3. 对于构造方法,下列叙述不对的的是________。
A. 构造方法是类的一种特殊函数,它的方法名必须与类名相同
B. 构造方法没有返回值类型
C. 子类不仅可以继承父类的无参构造函数,也可以继承父类的有参构造函数。
D. 子类在创建构造方法是必须把调用父类构造方法放在第一条语句
4. 下列关于接口的说明对的的是________。
A. 接口和抽象类是同一回事 B. 一个类不可以实现多个接口
C. 接口间不能有继承关系 D. 实现一个接口必须实现接口的所有方法
5. Java为移动设备提供的平台是________。
A.J2ME B.J2SE C.J2EE D.JDK5.0
6. 下列语句中,属于多分支语句的是________。
A.if语句 B.switch语句 C.do while语句 D.for语句
7. 在Java中,存放字符串常量的对象属于________类对象。
A. Character B. String C. StringBuffer D. Char
8. 下列关于继承的哪项叙述是对的________。
A. 在java中允许多继承 B. 在java中一个类只能实现一个接口
C. 在java中一个类不能同时继承一个类和实现一个接口
D. java的单一继承使代码更可靠
9. 给出如下代码:
class Test{
private int m;
public static void fun() { // some code... }
}
如何使成员变量m 被函数fun()直接访问?
A. 将private int m 改为protected int m B. 将private int m 改为 public int m
C. 将private int m 改为 static int m D. 将private int m 改为 int m
10. System和Math类在哪个包中________。
A. java.io B. java.lang C. java.awt D. java.util
11. 能从循环语句的循环体中跳出的语句是________。
A. for 语句 B. break 语句 C. while 语句 D. continue语句
12. 若类中某方法进行重载,可以区分这重载方法的手段是 ________。
A. 它们的返回值类型的不同 B. 它们的名称的不同
C. 它们的参数表的不同 D. 它们的修饰符不同
13. 下列关于接口的说法哪个是对的________。
A. 接口和抽象类是同一回事; B. 一个类不可以实现多个接口;
C. 接口间不能有继承关系; D. 实现一个接口必须实现接口的所有方法。
14. 下列关于main()方法说法对的的是________。
A. public修饰类中可以没有main()方法; B. main()方法中重要完毕所有对象的创建;
C. public修饰的类有多个时,main()方法就有多个;
D. main()方法头的定义可以根据情况随意修改。
15. 以下数据类型定义对的的是________。
A.boolean b = 0; B. char s = ‘\t’;
C.byte b = -268; D. float f = 2.5e3.
16. 在一个应用程序中有如下定义:int a[]={1,2,3,4,5,6,7,8,9,10}; 为了打印输出数组a的最后一个元素,下面对的的代码是________。
A. System.out.println(a[10]); B. System.out.println(a[9]);
C. System.out.println(a[a.length]); D. System.out.println(a(9));
17. 定义二维数组a,不对的的是________。
A. int[][] a; B. int a[][]; C. int[] a[]; D. int[3][3] a;
18. 下列关于抽象类的说法哪个对的________。
A. 绝对不能用抽象类去创建对象;
B. 某个抽象类的父类是抽象类,则这个子类必须重载父类的所有抽象方法;
C. 抽象类中不可以有常量;
D. 可以用private修饰抽象类。
19. 下列关于方法覆盖不对的的是________。
A. 方法覆盖和方法重载都是定义相同方法名的方法,本质上是一致的;
B. 方法覆盖只能发生在子类对父类的继承中;
C. 方法覆盖充足体现了Java语言的多态性;
D. 方法返回值类型不同时也能实现方法覆盖。
20. 关于Java的包叙述不对的的是________。
A. 不同包中的类不允许有相同的名称
B. 同一包中的类不允许有相同的名称
C. 包是用于组织类与接口的机制
D. 可以通过import语句将包中的类加载到程序中
21. Java中所有类的父类是________。
A. Father; B.Object; C. Lang; D. ClassFather;
22. 下列程序段的输出结果是________。
int data = 0;
char k = ‘a’, p = ‘f’;
data = p – k;
System.out.println(data);
A. 0; B. a; C. f; D. 5;
23. 在使用interface声明一个接口时,只可以使用________修饰符修饰该接口。
A.
private
B.
protected
C.
private protected
D.
public
24. 下面________方法是public void example(){...}的重载方法?
A. public void example(){...} B. public int example(){...}
C. public void example2(){...} D. public int example(int m, float f){...}
25. 下列叙述中,对的的是________。
A. Java语言的标记符是区分大小写的 B. 源文献名与public类名可以不相同
C. 源文献名其扩展名为.jar D. 源文献中public类的数目不限
得分
1.5CM
二、程序阅读题(本大题共4小题,每小题5分,共20分)
说明:阅读下面的程序,并写出程序的运营结果。
1. public class StringTest{
public static void main(String [] args){
String s = new String ("Hello");
modify(s);
System.out.println(s);
}
public static void modify (String s){
s += "world!";
}
}
2. import java.io.* ;
public class ABC
{
public static void main(String args[ ])
{ int i ;
int a[] = { 11,22,33,44,55,66,77,88,99 };
for ( i = 0 ; i <= a.length / 2 ; i ++ )
System.out.print( a[i] +a[a.length-i-1]+" ");
System.out.println();
}
}
3. class Person{
public Person() { System.out.println(“Person()”); }
}
class Employee extends Person{
public Employee(){
this(“call Employee(String)”);
System.out.println(“Employee()”);
}
public Employee(String s)
{ System.out.println(s); }
}
class Faculty extends Employee{
public Faculty(){ System.out.println(“Faculty()”); }
}
4.
class ICCard extends Card{
public void show(){ System.out.println(“this is ICCard!”);
public void show(s){ super.show();
this.show();
System.out.println(s); }
}
class Card {
public void show(){ System.out.println(“this is Card!”); }
}
class Test {
public static void main(String[] args) {
ICCard ic = new ICCard();
ic.show(“Test ICCard!”);
}
}
得分
1.5CM
三、编写程序题(本大题共3小题,每小题10分,共30分)
1. 编写程序输入两个整数,并输出这两个数的所有公约数。(10分)
2. 编写程序读入10个单精度浮点型值,按照从小到大的顺序输出来。(10分)
3. 考虑二维坐标系的点,定义一个描述点的类,命名为Point。(10分)
具体规定如下:
(1)每个点由双精度类型的横坐标x和纵坐标y描述;规定对该类的数据域进行合理的封装。
(2)默认构造一个Point对象时,横、纵坐标均为0;也可以在构造一个Point对象时通过参数指定横、纵坐标。
(3)定义一个求两点间距离的方法,方法头为:
public double distance(Point otherPoint)
(4)设定对象的输出形式为:(x, y)。
华南农业大学期末考试试卷(A卷)
2023-2023学年第 1 学期 考试科目: Java程序设计
考试类型:(闭卷)考试 考试时间: 120 分钟
学号 姓名 年级专业
题号
一
二
三
四
总分
得分
评阅
展开阅读全文