Uploaded by ChenXu Wang

2020B

advertisement
姓名
学号
级
专业
学院
软件学院
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
密
…
…
…
…
…
…
…
…
…
…
…
…
封
…
…
…
…
…
…
…
…
…
…
…
…
线
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
山东大学 2020-2021 学年 一 学期 高级程序设计语言 课程试卷 B
题号
一
二
三
四
五
六
七
八
九
十
总分
阅卷人
得分
得分
阅卷人
单项选择题(15 题,共 30 分)
请注意:将答案写在如下的列表中,写在其他位置无效
一、
1
2
3
4
5
11
12
13
14
15
6
7
8
9
10
1. 以下说法哪个是正确的( )
A. 程序执行结束后,应该输出 200,实际输出 100,该程序错误的类型是运行时错误。
B. Java 是大小写敏感的,Java 程序开发过程中需要区分大小写字母。
C. Java 的集成开发环境(IDE),如 Eclipse,是开发 Java 语言必需的软件工具。
D. Java 语言编写的程序源代码可以不需要编译直接在硬件上运行。
2. 下列可以作为 java 语言标识符的是( )
A. &sdu
B. #sdu
C. $sdu
D. 2sdu
3. 编译 Java 源程序文件产生的字节码文件的扩展名为( )
A. java
B. class C. html
D. exe
4. 下面语句在编译时会出现语法错误的是( )
A. float f=4.67; B. Double d=3.0; C. Boolean b=null; D. String s = new String("java");
5. 以下语句的输出结果是( )
System.out.println(3 + 6 + "" + 3 + 6);
A. 3636
B. 936 C. 369 D. 99
6. 下列程序片段输出结果是( )
int a = 6, b = -6, c = 20;
if ((c < 30) || (b-- < -6) && (a++ < 6));
System.out.println(“a=”+ a +“ b=”+ b );
a=6 b=-6
B. a=7 b=-7
C. a=6 b=-7 D. a=7 b=-6
7. 下面关于变量及其范围的陈述哪个是正确的( )
A. 使用 static 关键字定义的成员变量独立于该类的任何对象,被类的所有实例共享。
B. 实例变量用关键字 static 声明。
C. 静态变量在类实例化对象时候创建,在对象销毁的时候销毁。
D. 局部变量具有默认初始值,使用前可以不用初始化。
8. 下面哪个语句的语法是正确的:
( )
A. int stu[3][2] = {{1,2},{3,4},{5,6}} ;
B. int stu[][]=new int[3][];
C. int[][] stu=new int[][3];
D. int[][] stu=new int[][];
9. 下列关于 break、continue 和 return 的说法中,错误的是( )
A. 在循环中执行 return 语句,将跳出所有循环。
B. 在循环语句中,continue 语句和 break 语句作用相同。
C. 在循环语句中,break 语句会立刻跳出循环体,执行循环结构后面的语句。
D. 在循环语句中,continue 语句跳出本次循环的后续执行,从循环的开始重新迭代。
10. 下列有关抽象类的说法错误的是( )
A. 抽象类中可以没有抽象方法
B. 只要有抽象方法的类,必须用 abstract 声明为抽象类
C. 抽象类中可以有具体的实现方法
D. 抽象类中不能有 final 修饰的方法
11. 将以下哪种方法插入行 3 是不合法的( )
1. public class Test1{
2.
public void m(double a, double b) {}
3.
4. }
A. public void m(double a, double b, double c){}
B. public float m(double c, double d) {return 0;}
C. public void m(int a, int b){}
D. public void m(int a, int b, int c){}
12. 以下有关构造方法描述错误的是( )
A. 构造方法的返回值类型只能是 void 类型
B. 构造方法是类的一种特殊函数,它的方法名必须与类同名
C. 一般在创建新对象时,系统会自动调用构造方法
D. 定义类时未定义构造方法,Java 会补充缺省构造方法
13.下列有关多态描述正确的是( )
A. 在 Java 中允许定义一个子类的引用,指向父类的对象。
B. 在 Java 中允许定义一个父类的引用,指向子类的对象。
C. 如果使用父类的引用指向子类的对象,那么可以直接使用该引用调用子类的所有方法。
D. 如果使用子类的引用指向父类的对象,那么可以直接使用该引用调用父类的所有方法。
14. 关于 Java 中的接口和继承,下面说法正确的是( )
A. 在 Java 中允许继承多个类,在 extends 关键字之后分别列出。
B. 接口中的方法默认都是静态的.
C. 在 Java 中一个类不能同时继承一个类和实现一个接口。
D. 如果接口 A 继承接口 B,那么用 extends 关键字标明,如“Interface A extends B”。
15. 下列关于 Object 类的说法,正确的是 ( )
A. Java 中所有的类都直接或间接继承自 Object,无论是否明确的指明,无论其是否是抽象类。
B. 利用“==”比较两个对象时,Java 调用继承自 Object 的 equals 方法,判断是否相等。
C. 如果一个类是从 Object 类派生出来的,那么必须重写 toString()和 equals()方法。
D. 如果一个类显示地继承了其他类,则该类不再继承 Object 类。
第 1 页 共 5 页
姓名
学号
级
专业
学院
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
密
…
…
…
…
…
…
…
…
…
…
…
…
封
…
…
…
…
…
…
…
…
…
…
…
…
线
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
山东大学 2020-2021 学年 一 学期 高级程序设计语言 课程试卷 B
得分
阅卷人
System.out.println("没有代码可供解析了");
break;
} catch (Exception e) {
二.2 答题区
二. 阅读程序,在指定的答题区写出代码的执行结果,注意输出格式(40
分,每题 10 分)
System.out.println("未知异常");
}
System.out.println("----------");
1. public class T21B {
public static void main(String[] args){
int[] a = {1024,520,502};
printList(a);
printList(m(a,a[0],a[1]));
printList(a);
}
public static void printList(int[] a){
for (int i:a) System.out.print(i + " ");
System.out.print("\n");
二.1 答题区
}
public static int f(int x){
int y = 0;
while (x != 0){
int l = x % 100;
y = y * 100 + l;
x = x / 100;
}
return y;
}
public static int[] m(int[] a,int ...b){
for (int i = 0;i<a.length && i<b.length;i++){
a[i]=f(a[i]);
b[i]=f(b[i]);
}
return b;
}
}
2. public class T22B {
public static void main(String[] args) {
String[] codes = { "SD2020", null, "SD1015","SD202a" };
for (int i = 0; i <= 4; i++) {
try {
System.out.println("解析编码"+ i+ "。。。" + codes[i]);
analyseCode(codes[i]);
} catch (IndexOutOfBoundsException e) {
}
System.out.println("全部解析完毕 ");
}
public static void analyseCode(String code)
throws Exception {
int syear=0;
try {
syear = Integer.parseInt(
code.substring(2, 6));
if (syear > 2100 || syear < 1901)
throw new Exception();
System.out.println("该编码正确");
} catch (NullPointerException e) {
System.out.println("编码为空" );
} catch (NumberFormatException e) {
System.out.println("年份格式解析错误 ");
} finally {
System.out.println("解析完毕。。
。"+code);
}
}
}
3.
public class T23B {//汉诺塔
static String[] s = {null, "S disk","M disk","L disk"};
public static void main(String[] args) {
h(3, 'a', 'b', 'c', 3);
}
static void m(int diskN, char src, char dst) {
if (diskN == s.length-1) System.out.println("****");
System.out.println(s[diskN] + " from " + src + " to " + dst);
}
static void h(int n, char s, char t, char d, int diskN) {
if (n == 1) m(diskN, s, d);
else {
h(n - 1, s, d, t, diskN - 1);
第
2页 共
5 页
姓名
学号
级
专业
学院
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
密
…
…
…
…
…
…
…
…
…
…
…
…
封
…
…
…
…
…
…
…
…
…
…
…
…
线
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
山东大学 2020-2021 学年 一 学期 高级程序设计语言 课程试卷 B
m(diskN, s, d);
h(n - 1, t, s, d, diskN - 1);
}
public class E24B {
}
}
}
public static void main(String[] args){
FClass obj1=new SubClass(1);
二.3 答题区
System.out.println("******");
((SubClass)obj1).m2(4);
obj1.m2(2);
((SubClass)obj1).m1(3);
obj1.m1(1);
}
}
4. class FClass{
public FClass(){
System.out.println("基类构造方法");
m1(1);
得分
二.4 答题区
阅卷人
三.写程序(30 分)
1. 写一个完整的程序,要求输入一个字符串,提取一个字符串中的所有数字
字符('0'……'9'),将其转换为一个整数输出。
(保证输出不超过长整型范
围)。如输入为 abc1d23r4!,输出为 1234。
(6 分)
}
public void m1(double d){
System.out.println("基类 m1(double)"+d);
m2(d);
}
public void m2(int i){
System.out.println("基类 m2(int)" + i);
}
public void m2(double d){
System.out.println("基类 m2(double)" + d);
}
}
class SubClass extends FClass {
public SubClass(int i){
System.out.println("子类构造方法");
m1(i);
}
public void m1(int i){
System.out.println("子类 m1(int)" + i);
m2(i);
}
public void m2(double d){
System.out.println("子类 m2(double)" + d);
}
第 3 页 共 5 页
姓名
学号
级
专业
学院
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
密
…
…
…
…
…
…
…
…
…
…
…
…
封
…
…
…
…
…
…
…
…
…
…
…
…
线
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
山东大学 2020-2021 学年 一 学期 高级程序设计语言 课程试卷 B
2. 请在给定的位置书写合适的代码,完成此程序。程序填写完整后运行结果如下(12分):
program: 新闻联播
type: News
start:1900; end:1930
program: 焦点访谈
type: News
start:1940; end:2000
title: 开国大典
type: StoryFilm
start:2020; end:2215
public News(String start,String end,String program) {
}
// 5)根据题初给出的运行结果完成程序,需要利用TVProgram的toString()方法
public String toString() {
}
abstract class TVProgram{
protected String type,start,end;
//1)请在此处完成构造器设计,进行类中相关属性的初始化
public TVProgram(String type,String start,String end) {
}
public class Three {
//6)完成下列方法代码,完成对tv按节目结束时间从早到晚排序。start,end 格式为"小时分钟
",// end晚于start,而且都在同一天内。
// 不允许直接使用现成的排序方法
public static void sortByEnd(TVProgram[] tv) {
}
public String toString() {
return "type: "+type+"\nstart:"+start+"; end:"+end;
}
}
class StoryFilm extends TVProgram{
private String title;
//2)请在此书写代码,将继承自父类的type属性赋值为“StoryFilm”
public StoryFilm(String start,String end,String title) {
}
// 3)根据题初给出的运行结果完成程序,需要利用TVProgram的toString()方法
public String toString() {
}
public static void main(String[] args) {
TVProgram[] tv=new TVProgram[3];
tv[0]=new StoryFilm1("2020","2215","开国大典");
tv[1]=new News("1900","1930", "新闻联播");
tv[2]=new News("1940","2000", "焦点访谈");
sortByEnd(tv);
for (TVProgram o:tv)
System.out.println(o);
}
}
class News extends TVProgram{
private String program;
}
//4)请在此完成方法体代码,将继承自父类的type属性赋值为“News”
第
4 页 共 5 页
姓名
学号
级
专业
学院
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
密
…
…
…
…
…
…
…
…
…
…
…
…
封
…
…
…
…
…
…
…
…
…
…
…
…
线
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
…
山东大学 2020-2021 学年 一 学期 高级程序设计语言 课程试卷 B
3. 请根据整数链表节点(ListNode)的定义,完成下列链表(List)程序(12 分)。
public class ListNode{
public int data; //为考试简便,定义属性为 public,不是好的定义方式
public ListNode link;
public ListNode(int newData,ListNode newLink){
data=newData;
link=newLink;
}}
public class List{
private ListNode head;
//(1)插入一个节点到链表尾部。
public void insertToEnd(int newData){
//(3) 反转链表,额外空间要求不超过一个节点的大小。如原链表为 1->2->3->null,反转之后链表为
3->2->1->null。
public void reverseList( ){
}
//(2)删除链表中的倒数第 K 个节点,如果不存在倒数第 K 个节点,原链表不变。
public void removeLastKthNode( int lastKth){
}
}
}
第 5 页 共 5 页
Download