程序设计java样卷解析

一、选择题(共15题,每题3分,共45分)

1.在Java中下列说法正确的是( )

A、一个子类可以有多个父类,一个父类也可以有多个子类

B、一个子类可以有多个父类,但一个父类只可以有一个子类

C、 一个子类可以有一个父类,但一个父类可以有多个子类

D、上述说法都不对

解析:C     java的类是单继承,只能继承一个父类,但是可以有多个子类

2.关于Java垃圾回收机制描述不正确的是( )

A、垃圾回收机制不须通过程序调用相应方法,也能自动启动。

B、Java程序用System.gc()方法一定能进行垃圾回收;

C、垃圾回收机制属于jvm自动操作,java程序可以不进行垃圾回收操作。

D、垃圾回收机制并不是由操作系统自动执行。

解析:B     对于java,程序只能控制一个对象何时不再被任何引用变量引用,但是不能控制何时被回收.    强制系统进行垃圾回收——只是通知系统进行垃圾回收.      强制垃圾回收有两种方式:System.gc()  和RunTime.getRunTime().gc()

3.面向对象技术领域内占主导地位的标准建模语言是( )

A、C++ B、Java C、C# D、UML

解析:D 统一建模语言(Unified Modeling Language)

**4.在Java语言中,以下( )不属于基本数据类型. **

A、 int B、boolean C、 String D、 double

解析:C

基本类型 大小 最小值 最大值 包装器类型
boolean - - - Boolean
char 16-bit Unicode 0 Unicode 2^16-1 Character
byte 8 bits -128 +127 Byte
short 16 bits -2^15 +2^15-1 Short
int 32 bits -2^31 +2^31-1 Integer
long 64 bits -2^63 +2^63-1 Long
float 32 bits IEEE754 IEEE754 Float
double 64 bits IEEE754 IEEE754 Double
void - - - Void

5. Java语言类间的继承关系是( )

A、单继承 B、多重继承 C、不能继承 D、不一定

解析:A 解如题1

6. 以下关于构造方法的描述不正确的是( )

A、构造方法的返回类型只能是void型。

B、构造方法是类的一种特殊函数,它的方法名必须与类名相同。

C、构造方法的主要作用是完成对类的对象的初始化工作。

D、一般在创建新对象时,系统会自动调用构造方法。

解析:A  java中类的构造方法负责该类的实例化对象的初始化工作,并不需要向谁返回一个值,它也无法返回值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//一个简单Java类:
public class Cat {
private String name;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
//============================构造方法==================================
public Cat(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
@Override
public String toString() {
return "Cat [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}

}

7. 下列关于java的运行环境说法错误的是 ( )

A、CLASSPATH为Java加载类(class or lib)路径。

B、Java.exe是用来解释执行Java类文件。

C、 JAVA_HOME的作用是指明JDK的安装路径,例如可以设置成C:\Program Files\Java\jdk1.6.0_01。

D、 Java 语言编写的程序是与平台无关,所以不须要配置java的运行环境。

解析:D  java语言具有跨平台的特性,是说java在一个平台编译的.class字节码文件在另一个平台仍然可以运行,java的虚拟机屏蔽了操作系统(平台)的差异。.class文件不是针对特定操作系统生成的而是针对java虚拟机生成的。但是如果没有JDK,没有虚拟机,是无法达到跨平台的目的的,根本就无法运行,所以要配置运行环境

8.下面的选项中,哪些项不属于“汽车类”的属性( )

A、品牌 B、刹车 C、价格 D、速度

解析:B   刹车是汽车的一个动作,是方法

9. 下列两个物品之间的关系不属于继承关系的是( )

A、卡和银行卡 B、汽车和轮胎 C、人和学生 D、动物和狗

解析:B  继承关系是 “is a” ,  聚合关系是“has a”,  组合关系是“like a”;银行卡是卡,学生是人,狗是动物,可以继承;汽车有几个轮胎;like a,更像是统一了一种规范,java开发中可以使用  接口  来表示这种关系

10. 下列两个名词之间的关系符合类和对象关系的是( )

A、交通工具和电动小汽车 B、警犬和牧羊犬

C、楼房和房间 D、图书馆和图书

解析:B  牧羊犬是警犬类的实例,牧羊犬是警犬

11.关于字符串,下列代码书写不正确的是( )
A、 String str = new String();

B、 String str = “Hello”+“ACCP”;
C、 String str = “123”+“Hello World!”;
D、 StringBuffer strBuf = new StringBuffer(“Hello World!”);
String str = strBuf;

解析:D   String、StringBuffer都是final类,都不能被继承。StringBuffer不可能继承自String, 把StringBuffer对象赋值给String,向上转型不可能成功,所以错误!

12. 下列选项中关于Java中super关键字的说法错误的是( )

A、super关键字是在子类对象内部指代其父类对象的引用

B、super关键字不仅可以指代子类的直接父类,还可以指代父类的父类

C、子类可以通过super关键字调用父类的方法

D、子类可以通过super关键字调用父类的属性

解析:B   不可以指代父类的父类

13.下列Java代码写法错误的是( )

1
2
3
4
5
6
7
8
9
class Pet{      }

class Dog extends Pet{}

class Test{

public static void t(Pet p){}

}

​ A、Pet p = new Pet(); Test.t(p); B、Pet p = new Dog(); Test.t(p);

​ C、Dog p = new Dog(); Test.t(p); D、Dog p = new Pet(); Test.t(p);

解析:D  父类变量可以接收子类对象和本类对象,是因为子类内容较父类更丰富,可以满足父类,是谓向上转型;子类变量无法接收父类的对象,异于父类的内容子类无法根据父类指定,就无法实现,这不是向下转型;向下转型是已经向上转型过的子类对象可以向下转型回来,通常,向上转型是为了统一参数,精简代码,而重新向下转型是为了使用子类对象更加丰富的属性和方法

14. 关于下列代码说法正确的是( )

1
2
3
4
5
6
7
8
9
public class Test{

public void a(){}

public void a(int i){}

public int a(){}

}

​ A、上述三个a方法是方法重载

​ B、上述三个a方法是方法重写

​ C、上面代码编译通不过

​ D、上述三个方法是第一个和第二个a方法是方法的重写,第三个a方法编译会有问题。

解析:C  重写(Override),重载(Overload);不同参数列表(参数类型,顺序和个数有区别)的同名函数可以构成重载,而返回值的不同是不会构成重载的;子类可以重写父类的方法,约束是(方法的名称、参数列表必须一致。在JAVA 5之后,方法的返回类型可以是不同的。权限,是否静态,抛出异常也有相应约束);如上有两个a(),构不成重载,程序是不允许出现的,编译不通过

15. 如果一个类的文件名为Student.java,类的代码为:

1
2
3
4
5
6
7
public class  Student {

public static void main(String[] args) {

System.out.println(4<<2);

}}

下列说法正确的是:( )

A、程序运行结果为1; B、程序运行结果为2;

C、程序运行结果为16; D、程序编译错误,不能运行;

解析:C 4左移两位,权值由4变为了16,1*16=16

二、程序设计题(5道题,共55分)

1.(10分) 统计1到N以内质数的个数,并输出这个数目。

输入说明:一个整数N;

输出说明:质数的数量

输入样例:12

输出样例:5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
System.out.println(getResult(n));
input.close();
}
private static int getResult(int n) {
int cot = 0;
for (int i = 2; i <= n; i++) {
if (isPrime(i)) {
cot++;
}
}
return cot;
}
private static boolean isPrime(int n) {
boolean is_prime=true;
for (int i = 2; i*i <= n; i++) {
if(n%i==0) {
is_prime=false;
}
}
return is_prime;
}
}

2.(10分) 某汽车组装厂主要产品为4轮沙滩越野车(3座)和6轮山地越野车(5座),这两类车辆的轮胎是通用的,车内安装的座位也是通用的。这些部件每月初由供货商送到仓库,其它所需部件都有足够多的库存。组装厂依据月初仓库中的合格部件数量决定每类车辆的组装数量。现有某月初仓库中的两类物品数量,请计算本月两类汽车的产量。

输入说明:两种部件的合格品数量;

输出说明:两类汽车的生产数量;

输入样例:20 16

输出样例:2 2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;

public class Main {
/**
* 4x+6y=m;
* 3x+5y=n;
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int m,n,x,y;
m=input.nextInt();
n=input.nextInt();
y=(4*n - 3*m) / 2;
x=(n - 5*y) / 3;
System.out.println(x+" "+y);
input.close();
}
}

3.(10分) 内容检索是计算机的强项,现有一段英文文字和一个英文关键词,请找出这个关键词在这段英文文字中的位置,如果该关键词出现不止一次,请输出该关键词第一次出现的位置。

输入说明:一段英文文字(含有空格和标点符号,以’!’作为结束符)和一个英文关键词;

输出说明:关键词第一次出现的位置,首位置记为1;

输入样例:Today is Oct 9. There are seven cats in the house. They are very happy!

​ are

输出样例:23

1
2
3
4
5
6
7
8
9
10
11
12
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str = reader.readLine();
String sub_str = reader.readLine();
System.out.println(str.indexOf(sub_str)+1);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
//简单
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner i = new Scanner(System.in);
String s1 = i.next();
String sub = i.next();
System.out.println(s1.indexOf(sub)+1);
i.close();
}
}

4.(10分) 统计二维整数数组中,横向或纵向连续3个相邻元素的最大和。

输入说明:数组行数x列数 y, 二维整数数组中元素;

输出说明:此数组中横向或纵向连续3个相邻元素的最大和。

输入样例:4 4

3 6 0 8

1 0 2 4

2 0 1 9

0 1 2 3

输出样例:21

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n, m;
n = in.nextInt();
m = in.nextInt();
int[][] matrix = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
matrix[i][j] = in.nextInt();
}
}
in.close();
int max_sum = Integer.MIN_VALUE;
//横向相邻
for(int i = 0;i<n;i++) {
for(int j = 0;j<m-2;j++) {
int temp = matrix[i][j]+matrix[i][j+1]+matrix[i][j+2];
if(temp>max_sum) {
//打擂台
max_sum = temp;
}
}
}
//纵向相邻
for(int i = 0;i<m;i++) {
for(int j = 0;j<n-2;j++) {
int temp = matrix[j][i]+matrix[j+1][i]+matrix[j+2][i];
if(temp>max_sum) {
//打擂台
max_sum = temp;
}
}
}
System.out.println(max_sum);
}
}

5.(15分) 请对给出的一系列英文单词按首字母进行排序,并输出排序后的结果。

输入说明:数字N,表明单词数,接下来是N个英文单词;

输出说明:按字母序的排序结果。

输入样例:6

Apple banana Zebra Tuesday moon CAN

输出样例:Apple

banana

CAN

moon

Tuesday

Zebra

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

//定义一个类,实现Comparator接口,并重写compare()方法,
class CompareByOrder implements Comparator<String> {

@Override
public int compare(String s1, String s2) {
return s1.compareToIgnoreCase(s2);
}
}
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
String[] str = new String[n];
for (int i = 0; i < n; i++) {
str[i] = input.next();
}
input.close();
Arrays.sort(str, new CompareByOrder());
for(int i=0;i<n;i++) {
System.out.println(str[i]);
}
}
}

程序设计java样卷解析
https://blog.wangxk.cc/2019/11/11/程序设计java样卷解析/
作者
Mike
发布于
2019年11月11日
许可协议