
第一大题:单选题 (30 分)
1. (1分) 下列数组初始化形式正确的是( )。
(A) int t1[][]={{1,2},{3,4},{5,6}};
(B) int t2[][]={1,2,3,4,5,6};
(C) int t3[3][2]={1,2,3,4,5,6};
(D) int t4[][]; t4={1,2,3,4,5,6};
2. (1分) 下列语句序列执行后,x 的值是( )。
int a=3, b=4, x=5;
if( ++a==b ) x=++a*x;
(A) 35 (B) 25 (C) 20 (D) 5
3. (1分) 下列程序执行后,输出结果是( )。
int x = 4;
int y = 3;
System.out.println(x+ y + "k");
(A) 4k (B) 7k (C) 43k (D) 3k
4. (1分) 编译和运行下列代码后,其显示结果是( )。
public class Test{
public static void main(String argv[]){
Test c=new Test();
String s=new String("ello");
c.method(s);
}
public void method(String s){
char c=ˊHˊ;
c+=s;
System.out.println(c);
}
}
(A) Hello (B) ello (C) elloH (D) 编译错误
5. (1分) 在Java语言中,所有类的根类是( )。
(A) java.lang.Object (B) java.lang.Class (C) java.applet.Applet (D) java.awt.Frame
6. (1分) 在Java语言中,类间的继承关系是( )。
(A) 多重的 (B) 单重的 (C) 线程的 (D) 不能继承
7. (1分) 下列程序段执行后,其输出结果是( )。
public class Test{
public static void main(String[] args) throws Exception{
try{
throw new Exception();
}catch(Exception e){
System.out.println("Caught in main()");
}
System.out.println("nothing");
}
}
(A) Caught in main()
(B) Caught in main()
nothing
(C) nothing
(D) 没有任何输出
8. (1分) 阅读下列代码后,下列选项中说法正确的是( )。
public class Test {
String[] s=new String[2];
public static void main(String args[])
{
System.out.println(s[0]);
}
}
(A) 编译时将产生错误 (B) 编译时正确,运行时将产生错误 (C) 可以运行,但什么也没输出 (D) 输出null
9. (1分) Applet小程序 和 Application程序的主要区别是( )。
(A) 小程序内必须有 main() 方法
(B) 程序必须包含 main() 方法,而Applet小程序的父类一定是Applet
(C) 两者都必须有 main() 方法
(D) 小程序必须包含 main() 方法,而程序的父类一定是Applet
10. (1分) 设 String s = "story"; 下列选项中语句书写正确的是( )。
(A) s += "books"; (B) char c = s[1]; (C) int len = s .length; (D) s = s - "books";
11. (1分) 编译和运行下列代码后,其输出的结果是( )。
public class Test{
public static void main(String argv[]){
Test inc = new Test();
int i =0;
inc.fermin(i);
i = i++;
System.out.println(i);
}
void fermin(int i){
i++;
}
}
(A) 编译报错误 (B) 2 (C) 1 (D) 0
12. (1分) 下列关于事件的描述中正确的是( )。
(A) 多个监听者可以被附加到一个组件
(B) 只有一个监听者可以被附加到一个组件上
(C) 一个监听者只能接受一个组件产生的事件
(D) 以上描述都不对
13. (1分) 下列选项中,不属于Java关键字的是( )。
(A) new (B) private (C) sealed (D) transient
14. (1分) Java语言中的一些低级实用工具(如处理时间的Date类,处理变长数组的Vector类等),它们所在的包是( )。
(A) java.lang包 (B) java.io包 (C) java.awt包 (D) java.util包
15. (1分) 在Java语言中,当Set 集合遇到重复的元素时,处理的方式是( )。
(A) 试图添加一个重复的元素时,会抛出一个异常
(B) 试图添加一个重复的元素时,重复元素将不能被加入
(C) 一个Set可以包含重复元素
(D) 编译的时候,重复的元素会导致错误
16. (1分) 下列代码中的“this”指的是( )。
class Bird{
int x,y;
void fly(int x,int y){
this.x=x;
this.y=y;
}
}
(A) Bird (B) fly (C) Bird或fly (D) 不一定
17. (1分) 下列2个文件位于相同目录下,编译运行后会出现的情况是( )。
//File P1.java
package MyPackage;
class P1{
void afancymethod(){
System.out.println("What a fancy method");
}
}
//File P2.java
public class P2 extends P1{
public static void main(String argv[]){
P2 p2 = new P2();
p2.afancymethod();
}
}
(A) 2个文件都可以编译,P2运行输出“What a fancy method”
(B) 2个文件都不能编译
(C) 2个文件都可以编译,P2运行时报错误
(D) P1编译成功,P2编译时报错误
18. (1分) list是一个ArrayList的对象,下列选项中填写到//todo delete处,可以在Iterator遍历的过程中正确并安全的删除一个list中保存对象的是( )。
Iterator it = list.iterator();
int index = 0;
while(it.hasNext()){
Object obj = it.next();
if(needDelete(obj)){ //needDelete返回boolean,决定是否要删除
//todo delete
}
index ++;
}
(A) list.remove(obj); (B) list.remove(index); (C) list.remove(it.next()); (D) it.remove();
19. (1分) 编译和运行下列代码后,其结果是( )。
public class Tux extends Thread{
static String sName = "vandeleur";
public static void main(String argv[]){
Tux t = new Tux();
t.piggy(sName);
System.out.println(sName);
}
public void piggy(String sName){
sName = sName + " wiggy";
start();
}
public void run(){
for(int i=0;i < 4; i++){
sName = sName + " " + i;
}
}
}
(A) 编译错误 (B) vandeleur (C) vandeleur 0 (D) vandeleur wiggy 0 1 2 3
20. (1分) 下列代码行中编译时不会产生警告或错误的是( )。
(A) float f=1.3; (B) char c="a"; (C) int i=10; (D) boolean b=null;
21. (1分) 下列程序执行后的结果是( )。
public class Sandys{
private int court;
public static void main(String argv[]){
Sandys s = new Sandys(99);
System.out.println(s.court);
}
Sandys(int ballcount){
court=ballcount;
}
}
(A) 由于court是私有变量,因此产生一个编译失败错误
(B) 由于System.out方法被调用时,s未初始化,因此产生一个编译失败错误
(C) 0
(D) 99
22. (1分) 创建一个向文件“file.txt”追加内容的输出流对象的语句是( )。
(A) OutputStream out=new FileOutputStream(“file.txt”);
(B) OutputStream out=new FileOutputStream(“file.txt”, “append”);
(C) OutputStream out=new FileOutputStream(new File(“file.txt”),true);
(D) FileOutputStream out=new FileOutputStream(new file(“file.txt”));
23. (1分) 下列选项中需要在编写程序时声明的检查型异常是( )。
(A) NullPointerException (B) ClassCastException (C) FileNotFoundException (D) IndexOutOfBoundsException
24. (1分) 要从文件"file.dat"中读出第10个字节到变量c中,下列选项中适合的方法是( )。
(A) FileInputStream in=new FileInputStream("file.dat"); in.skip(9); int c=in.read();
(B) FileInputStream in=new FileInputStream("file.dat"); in.skip(10); int c=in.read();
(C) FileInputStream in=new FileInputStream("file.dat"); int c=in.read();
(D) RandomAccessFile in=new RandomAccessFile("file.dat"); in.skip(9); int c=in.readByte();
25. (1分) 类Test1、Test2定义如下:
1.public class Test1{
2. public float aMethod(float a,float b) throws IOException { }
3. }
4. public class Test2 extends Test1{
5.
6.}
下列选项中插入行5是不合法的是( )。
(A) float aMethod(float a,float b){ }
(B) public int aMethod(int a,int b)throws Exception{ }
(C) public float aMethod(float p,float q){ }
(D) public int aMethod(int a,int b)throws IOException{ }
26. (1分) 下列选项中,可以一个方法重载的声明语句是( )。
(A) final void methoda() {}
(B) void final methoda() {}
(C) static void methoda() {}
(D) final abstract void methoda() {}
27. (1分) 关于下列程序段的说法中正确的是( )。
1. String s1=”abc”+”def”;
2. String s2=new String(s1);
3. if(s1= =s2)
4. System.out.println(“= = succeeded”);
5. if (s1.equals(s2))
6. System.out.println(“.equals() succeeded”);
(A) 行4与行6都将执行
(B) 行4执行,行6不执行
(C) 行6执行,行4不执行
(D) 行4、行6都不执行
28. (1分) 下列标识符中,不合法的是( )。
(A) const (B) $double (C) hello (D) BigMeaninglessName
29. (1分) 下列选项中关于接口的定义正确的是( )。
(A) interface B
{ void print() { } ;}
(B) abstract interface B
{ void print() ;}
(C) abstract interface B extends A1,A2 //A1、A2为已定义的接口
{ abstract void print(){ };}
(D) interface B
{ void print();}
30. (1分) 关于下列程序的功能,说法正确的是( )。
public class Test extends Thread{
int n;
Test() {
Thread td=new Thread(this);
td.start();
}
public void run() {
for (n=0;n<4;n++) {
try {
System.out.print(n);
Thread.sleep(500);
} catch(InterruptedException e) {
System.out.println("Exception");
}
}
}
public static void main(String args[])
{
new Test();
}
}
(A) 这段程序的功能是:每隔500秒打印0123
(B) 这段程序的功能是:每隔1秒打印0123
(C) 这段程序的功能是:每隔半秒打印0123
(D) 这段程序的功能是:每隔半分钟打印0123
1. (20分) 程序逻辑题 9
2. (25分) 文件读写 10
3. (25分) 面向对象(25分) 12
第二大题:实践题 (70 分)
1. (20分) 程序逻辑题
问题描述:水仙花数是指其个位、十位、百位三个数的立方和等于这个数本身,例如:153是一个"水仙花数",因为。编写一个Java应用程序,求出所有三位水仙花数。
提示:
利用for循环控制遍历100至999之间的数,每个数分解出个位,十位,百位。
程序结构如下:
package test1;
public class Exam1 {
public static void main(String[] args) {
for(int i=100;i<=999;i++){
int a=i/100;
int b=i%100/10;
int c=i%100%10;
int total=a*a*a+b*b*b+c*c*c;
if(i==total){
System.out.println(i+"是水仙花数");
}
}
}
}
(备注:考生按照系统提示目录保存试题文件,每道试题建立一个文件夹,文件夹名为题目编号。文件夹中的文件命名参照提示所给的程序架构。例:第一题的试题文件夹名为“1”,文件名为“Exam1.java”,对应的字节码文件为:Exam1.class。)
2. (25分) 文件读写
问题描述:请将若干个数据写入到文件中,然后将其从文件中按顺序读取出来,并显示在屏幕上。
需要写入的数据如下:
(1)整型数据(int):12
(2)单精度浮点型数据(float):88.6
(3)字符串类型数据(String):you are best!
屏幕显示内容如图1所示。
提示:
使用FileInputStream和FileOutputStream打开文件,使用DataInputStream和DataOutputStream进行读写操作。
程序结构如下:
import java.io.*;
public class Exam2 {
public void writeData() throws Exception
{
//创建文件exam2.txt
FileOutputStream fos = new FileOutputStream("exam2.txt");
DataOutputStream dos = new DataOutputStream(fos);
dos.writeInt(12);
dos.writeFloat(88.6f);
dos.writeUTF("you are best!");
dos.close();
}
public void readData() throws Exception
{
//打开文件exam2.txt
FileInputStream fis = new FileInputStream("exam2.txt");
DataInputStream dis = new DataInputStream(fis);
System.out.println("整型数据:"+dis.readInt());
System.out.println("单精度浮点型数据:"+dis.readFloat());
System.out.println("字符串型数据:"+dis.readUTF());
}
public static void main(String[] args) {
try
{
Exam2 e2 = new Exam2();
e2.writeData();
e2.readData();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
(备注:考生按照系统提示目录保存试题文件,每道试题建立一个文件夹,文件夹名为题目编号。文件夹中的文件命名参照提示所给的程序架构。例:第一题的试题文件夹名为“1”,文件名为“Exam1.java”,对应的字节码文件为:Exam1.class。)
3. (25分) 面向对象(25分)
问题描述:
1、编写一个圆形类Circle,包含:一个protected,double类型的属性(圆形的半径r)
两个构造器方法:
(1)一个带有一个参数的构造器方法,用于将r属性初始化;
(2)一个不带参数的构造器,将圆形半径初始化为10。
两个方法:
(1)求圆形面积的方法area()。(提示圆周率为3.14)
(2)求圆形周长的方法perimeter()
2、通过继承Circle类编写一个具有确定位置的圆形类PlainCircle,其确定位置用圆形的圆心坐标来标识。
包含:添加两个属性(圆形圆心坐标cX和cY)
两个构造器方法:
(1)带3个参数的构造器方法,用于对cX、cY、r属性初始化;
(2)不带参数的构造器方法,将圆形初始化为圆心坐标为(0,0),半径为10的圆形;添加一个方法:判断某个点是否在圆形内部的方法isInside(double x,double y)。如在圆形内,返回true, 否则,返回false。
提示:点在圆形类是指满足条件:
(x-cX)*(x-cX)+(y-cY)*(y-cY)<=r*r
3、编写PlainCircle类的测试程序
(1)创建一个圆心坐标为(10,10),半径为20的圆形对象;
(2)计算并打印输出圆形的面积和周长;
(3)判断点(25.5,13)是否在圆形内,并打印输出相关信息。
程序结构如下:
package test1;
class Circle
{
protected double r;
public Circle(double r)
{
this.r = r;
}
public Circle()
{
this.r = 10;
}
public double area()
{
return 3.14 * r * r;
}
public double perimeter()
{
return 2 * 3.14 * r;
}
}
class PlainCircle extends Circle
{
double cX;
double cY;
public PlainCircle(double cX,double cY,double r)
{
super(r);
this.cX = cX;
this.cY = cY;
}
public PlainCircle()
{
super();
this.cX = 0;
this.cY = 0;
}
public boolean isInside(double x,double y)
{
if((x-cX)*(x-cX)+(y-cY)*(y-cY)<=r*r)
return true;
else
return false;
}
}
public class Exam3
{
public static void main(String[] args)
{
PlainCircle circle = new PlainCircle(10,10,20);
System.out.println("该圆面积为:"+ circle.area());
System.out.println("该圆周长为:"+ circle.perimeter());
if(circle.isInside(25.5,13))
System.out.println("该点在圆内");
else
System.out.println("该点不在圆内");
}
}
(备注:考生按照系统提示目录保存试题文件,每道试题建立一个文件夹,文件夹名为题目编号。文件夹中的文件命名参照提示所给的程序架构。例:第一题的试题文件夹名为“1”,文件名为“Exam1.java”,对应的字节码文件为:Exam1.class。)
计算机程序设技术水平证书(JAVA语言)理论考试试卷
一、选择题(共30小题,每小题1分,共30分)
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| A | B | B | D | A | B | B | A | B | A |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| D | A | C | D | B | A | D | D | B | C |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| D | C | C | D | A | A | C | A | D | C |
1、(20分)
public class Exam1 {
public static void main(String[] args)
{
int a,b,c,result;
for(int i=100;i<1000;i++)
{
//利用for循环控制100-999之间的数
a=i / 100; //分解求出i的百位数
b=i % 100 / 10; //分解求出i的十位数
c=i % 10; //分解求出i的个位数
result=a*a*a+b*b*b+c*c*c; //水仙数的判定条件
if(i==result)
{
System.out.println(i+"是个水仙数");
}
}
}
}
2、(25分)
import java.io.*;
public class Exam2 {
public void writeData() throws Exception
{
//创建文件exam2.txt
FileOutputStream fos = new FileOutputStream("exam2.txt");
DataOutputStream dos = new DataOutputStream(fos);
dos.writeInt(12);
dos.writeFloat(88.6f);
dos.writeUTF("you are best!");
dos.close();
}
public void readData() throws Exception
{
//打开文件exam2.txt
FileInputStream fis = new FileInputStream("exam2.txt");
DataInputStream dis = new DataInputStream(fis);
System.out.println("整型数据:"+dis.readInt());
System.out.println("单精度浮点型数据:"+dis.readFloat());
System.out.println("字符串型数据:"+dis.readUTF());
}
public static void main(String[] args) {
try
{
Exam2 e2 = new Exam2();
e2.writeData();
e2.readData();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
3、(25分)
class Circle
{
protected double r;
public Circle(double r)
{
this.r = r;
}
public Circle()
{
this.r = 10;
}
public double area()
{
return 3.14 * r * r;
}
public double perimeter()
{
return 2 * 3.14 * r;
}
}
class PlainCircle extends Circle
{
double cX;
double cY;
public PlainCircle(double cX,double cY,double r)
{
super(r);
this.cX = cX;
this.cY = cY;
}
public PlainCircle()
{
super();
this.cX = 0;
this.cY = 0;
}
public boolean isInside(double x,double y)
{
if((x-cX)*(x-cX)+(y-cY)*(y-cY)<=r*r)
return true;
else
return false;
}
}
public class Exam3
{
public static void main(String[] args)
{
PlainCircle circle = new PlainCircle(10,10,20);
System.out.println("该圆面积为:"+ circle.area());
System.out.println("该圆周长为:"+ circle.perimeter());
if(circle.isInside(25.5,13))
System.out.println("该点在圆内");
else
System.out.println("该点不在圆内");
}
}
