1、JAVA 语言程序设计题及部分答案一、单选题:(每题 1 分)下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。 1下列语句序列执行后,k 的值是( B )。 int m=3, n=6, k=0; while( (m+) j ) i-; else j-; A) 15 B) 16 C) 7 D) 89下列语句序列执行后,k 的值是( C )。 int i=10, j=18, k=30; switch( j - i ) case 8 : k+; case 9 : k+=2; case 10: k+=3; default : k/=j; A) 3
2、1 B) 32 C) 2 D) 3310下面语句执行后,i 的值是( B )。 for( int i=0, j=1; j y | x z B) x != y C) z ( y + x ) D) x 3 ); A) 16 B) 8 C) 4 D) 213以下由 for 语句构成的循环执行的次数是( B )。 for ( int i = 0; true ; i+) ; A) 有语法错,不能执行 B) 无限次 C) 执行 1 次 D) 一次也不执行14定义类头时能使用的修饰符是(C )。 A) private B) static C) abstract D) protected15设 int 型变量
3、 a、b,float 型变量 x、y,char 型变量 ch 均已正确定义并赋值, 正确的 switch 语句是 D )。 A) switch (x + y) B) switch ( ch + 1 ) C) switch ch D) switch ( a + b ); 16. 下列最终属性 i 的定义中,正确的是( )。 A) static final int i=100; B) final int i=1.2; C) final i=w; D) final char i;17. 下列类定义中,不正确的是(C )。 A) class x B) class x extends y C) stat
4、ic class x implements y1,y2 D) public class x extends Applet 18. 设 x、 y 为已定义的类名,下列声明 x 类的对象 x1 的语句中正确的是( )。 A) static x x1; B) public x x1=new x(int 123); C) y x1; D) x x1=x( );19. 设 i、j、k 为类 x 中定义的 int 型变量名,下列类 x 的构造函数中不正确的是(B )。 A) x( int m) . B) void x( int m) . C) x( int m, int n) . D) x( int h,
5、int m,int n) . 20. 下列方法定义中,正确的是( A )。 A) int x( ) char ch=a; return (int)ch; B) void x( ) .return true; C) int x( ) .return true; D) int x( int a, b) return a+b; 21. 用于定义类成员的访问控制权的一组关键字是( D )。 A) class, float, double, public B) float, boolean, int, long C) char, extends, float, double D) public, pri
6、vate, protected 22. 不能构成循环的语句是( C )。 A) for 语句 B) while 语句 C) switch 语句 D) do_while 语句23. 下列程序段执行后 b3 的结果是( D )。 boolean b1=true, b2, b3; 24= b1 ? b1 : b2; A) 0 B) 1 C) true D) false25 下面数据结构中,属于非线性的是( B )。 A) 线性表 B) 树 C) 队列 D) 堆栈11. 设有定义 int i=123; long j=456; 下面赋值不正确的语句是( D )。A) j=i; B) j=(long)i;
7、 C) i=(int)j; D) i=j;二、填空题:(每空 1 分) 1. 构造函数_没_有返回值。 2. Java 语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为 float 和 _ double _两种具体类型。 3. 创建类对象的运算符是_ new。 4. 当整型变量 n 的值不能被 13 除尽时,其值为 false 的 Java 语言表达式是_n%13=0_ 。 5. 在 Java 语言中,所有的数组都有一个 lenght 属性,这个属性存储了该数组的_元素个数。 6. 定义类就是定义一种抽象的_父类_,它是所有具有一定共性的对象的抽象描述。 7. 在 Java 语言
8、中,使用_平台无关_、_java 虚拟机_等技术,实现软件重用。 8. 表达式 3/6 * 5 的计算结果是_0_ 。 9.下面是一个类的定义: public class _int Myclass_ int x, y; Myclass ( int i, _=0_) / 构造函数 x=i; y=j; 10.下面是一个 Java Application 的主类的定义,其功能是输出所有命令行参数。 import java.io.*; public class MyClass public static void main(String args ) if( args.length !=_0_) fo
9、r(int i=0; i xj+1) w=xj; xj=xj+1; xj+1=w; /* if(i=1|i=2) ShowArray(x); if(i=2) break; */ public static void ShowArray(int b) for(int i=0; iy; System.out.println(“xy=“+flag); flag=zw; System.out.println(“zw=“+flag); 五、程序设计:(每题 11 分,共 33 分) 1、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我
10、ABC“4,应该截为“我 AB“,输入“我 ABC 汉 DEF“,6,应该输出为“我ABC“而不是“我 ABC+汉的半个“。 2、编程求解:所有两位整数能被 3 整除的数的和,以及不能被 3 整除的数的各位数字之和。 3、设计一个程序求解 e 的值。精度达到 1.0e-6, 4、请设计一个对 N 个数进行排序的程序一、选择题(每道题只有一个正确答案,每小题 2 分,共 30 分)15 道题1、关于 Java 语言叙述错误的是:( C )AJava 语言具有跨平台性BJava 是一种面向对象的语言CJava 语言中的类可以多继承DJava 的垃圾收集机制自动回收程序已不再使用的对象2、以下叙述正
11、确的是:( B )的确台 aA构造方法必须是 public 方法Bmain 方法必须是 public 方法CJava 应用程序的文件名可以是任意的D构造方法应该声明为 void 类型3、关于 Java 中数据类型叙述正确的是:( B )A、整型数据在不同平台下长度不同Bboolean 类型数据只有 2 个值,true 和 falseC数组属于简单数据类型DJava 中的指针类型和 C 语言的一样4、设 int x=1,float y=2,则表达式 x / y 的值是:( D )A0B1C2D以上都不是5、以下语句有语法错的是:( A )Aint x=1;y=2;z=3Bfor (int x=1
12、0,y=0;x0;x+);Cwhile (x5);Dfor(; ;);6、关于类和对象的叙述正确的是:( A )AJava 的类分为两大部分:系统定义的类和用户自定义的类B类的静态属性和全局变量的概念完全一样,只是表达形式不同C类的成员至少有一个属性和一个方法D类是对象的实例化7、以下有关构造方法的说法,正确的是:( A )A一个类的构造方法可以有多个B构造方法在类定义时被调用C构造方法只能由对象中的其它方法调用D构造方法可以和类同名,也可以和类名不同8、以下有关类的继承的叙述中,正确的是:( D )A子类能直接继承父类所有的非私有属性,也可通过接口继承父类的私有属性B子类只能继承父类的方法,
13、不能继承父类的属性C子类只能继承父类的非私有属性,不能继承父类的方法D子类不能继承父类的私有属性9、下列属于容器的组件有:( B )AJButtonBJPaneCCanvasDJTextArea10、void 的含义:( C )A方法体为空B定义的方法没有形参C定义的方法没有返回值D方法的返回值不能参加算术运算11、关于 Java 中异常的叙述正确的是:( D )A异常是程序编写过程中代码的语法错误B异常是程序编写过程中代码的逻辑错误C异常出现后程序的运行马上中止D异常是可以捕获和处理的12、所有的异常类皆继承哪一个类?( C )Ajava.io.ExceptionBjava.lang.Thr
14、owableCjava.lang.ExceptionDjava.lang.Error13、下面哪个不是 java 语言中的关键字?( B )AlongBsizeofCinstanceofDconst14、为实现进程之间的通信,需要使用下列那种流才合适?(D)AData streamBFile streamCBuffered streamDPiped stream15、在复选框中移动鼠标,然后单击一选项,要捕获所选项必需实现哪个接口?(D)AActionListenerBMouseListenerCMouseMotionListernDItemListener二、填空题(每空 1 分,共 20
15、分)1、面向对象程序设计所具有的基本特征是:_抽象性_,_封装性_,_继承性_,_多态性_2、数组 x 定义如下int x =new int32 则 xlength 的值为_3_,x0.length 的值为_2_。3、Java 中实现多线程一般使用两种方法,一是_继承 Thread 类_,二是_实现 Runnable 方法_4、Java 的图形用户界面设计中,有很多布局管理器用来摆放组件的位置,一般用到的布局管理器有(列出四种即可)_FlowLayout_,_GridLayout_,_BorderLayout_,_CardLayout_5、Applet 常用的方法是:_init()_、_run
16、()_、_stop()_和destroy()。三、阅读程序,写出程序的输出结果(每题 5 分,共 20 分)1、class Aprivate int privateVar;A(int _privateVar)privateVar=_privateVar;boolean isEqualTo(A anotherA)if(this.privateVar = anotherA.privateVar)return true;elsereturn false;public class Bpublic static void main(String args)A a = new A(1);A b = new
17、 A(2);System.out.println(a.isEqualTo(b);程序的输出结果为:_false_2、class A double f(double x, double y) return x * y;class B extends A double f(double x, double y) return x + y;public class Test public static void main(String args) B obj = new B();System.out.println(“The program output is “ + obj.f(4, 6);程序的
18、输出结果为:_ The program output is 10_3、public class Unchecked public static void main(String args) try method(); catch (Exception e) System.out.println(“A“); finally System.out.println(“B“);static void method() try wrench();System.out.println(“C“); catch (ArithmeticException e) System.out.println(“D“);
19、finally System.out.println(“E“);System.out.println(“F“);static void wrench() throw new NullPointerException();程序的输出结果为:EAB4、public class Test public static void main(String args) int x;int a = 0, 0, 0, 0, 0, 0 ;calculate(a, a5);System.out.println(“the value of a0 is “ + a0);System.out.println(“the v
20、alue is a5 is “ + a5);static int calculate(int x, int y) for (int i = 1; i 10 );public static void main(String arg) int i=10;Test t= new Test();t.printValue(i);输出将是什么? CA. 8B. 9C. 10D. 1129. 类的设计要求它的某个成员变量不能被外部类直接访问。应该使用下面的哪些修饰符获得需要的访问控制? DA. publicB. 不加修饰符C. protectedD. private /面向对象编程 P196 页的表格,pr
21、ivate 一行有错误30. 给出下面的代码片断1 String str = null;2 if (str != null) 4 5 else if (str != null) 【答案】B3.以下是应用程序中定义的静态方法 printBinary,若在其 main 方法中有方法调用语句 printBinary(2),则输出的结果是 ( )。static void printBinary(int i) System.out.print(i + “的 2 进制数表示为:t“);for(int j = 31; j =0; j-)if(1 max)max=xi;System.out.println(m
22、ax);A) 678 B) 122 C) -987 D) 33 【答案】A8.下列语句序列执行后,k 的值是( )。int x=2, y=5, k=0;switch( x%y ) case 0: k=x+y; break;case 1: k=x-y; break;case 2: k=x*y; break;default: k=x/y; break;System.out.println(k);A) 2 B) 5 C) 10 D) 0 【答案】C9. 下面的程序输出的结果是( )public class A implements B public static void main(String a
23、rgs) int i;A c1 = new A();i= c1.k;System.out.println(“i=“+i);interface B int k = 10;A) i=0 B) i=10 C) 程序有编译错误 D) i=true 【答案】B10应用程序的 main 方法中有以下语句,则输出的结果是 ( )。int b=1, 2, 3, 4,5, 6,7;int sum=0;for(int i=0;ib.length;i+) for(int j=0;jbi.length;j+) sum+=bij; System.out.println(“sum=“+sum);A) 28 B)6 C)
24、9 D) 13 【答案】A11. 有整型数组:int x=12,35,8,7,2;,则调用方法Arrays.sort(x)后,数组 x 中的元素值依次是( ).A) 2 7 8 12 35 B) 12 35 8 7 2 C) 35 12 8 7 2 D) 8 7 12 35 2【答案】A12.编译和运行下面的应用程序,并在命令行界面输入 12345,则回车后屏幕输出的结果是( ).public class A public static void main(String args) throws IOExceptionBufferedReader buf=new BufferedReader(
25、new InputStreamReader(System.in);String str=buf.readLine();int x=Integer.parseInt(str);System.out.println(x/100); A) 45 B)5 C) 123 D) 12345 【答案】C13.下面的程序段执行后输出的结果是( )。StringBuffer buf=new StringBuffer(“Beijing2008“);buf.insert(7,“);System.out.println(buf.toString();A) Beijing2008 B) Beijing2008 C) B
26、eijing2008 D) Beijing#2008 【答案】A14. 下面的程序编译运行后输出的结果是( )。public class A implements Runnable public static void main(String argv) A a = new A();Thread t = new Thread(a);t.start();public void run() while(true) tryThread.currentThread().sleep(1000);catch(InterruptedException e)System.out.println(e.toStr
27、ing(); System.out.println(“looping while“);A) 在屏幕上重复输出“looping while“。 B) 在屏幕上输出一次“looping while“。C) 没有结果输出。 D) 以上说法都错误。 【答案】A15.下面的程序段创建了 BufferedReader 类的对象 in,以便读取本机 d盘 my 文件夹下的文件 1.txt。File 构造函数中正确的路径和文件名的表示是( )。File f=new File(填代码处);file=new FileReader(f);in=new BufferedReader(file);A) “1.txt“
28、B) “d:my1“ C) “d:my1.txt“ D) “d: my1.txt“ 【答案】C三、填空题(本大题 10 小题,每小题 1 分,共 10 分)1. 创建类的对象时,使用运算符_给对象分配内存空间。2. 定义类的构造方法不能有返回值类型,其名称与_名相同。3. Java 语言中关键字_表示双精度类型。4. 若有定义:float b=1.1f, 3.5f, 6.8f;,则 b.length()的值是_。5若有类定义:class B extends A 则类 B 是类 A 的_。6接口中的成员只有静态常量和_。7. 在子类中使用关键字_做前缀可调用被子类覆盖的父类中的方法。8. 关键字
29、_用于导入包中的类到程序中,供程序中使用。9. Java 语言中, 通常把可能发生异常的方法调用语句放到 try 块中,并用紧跟其后的_块来捕获和处理异常。10. 程序中实现多线程的方法有两种:继承_类和实现 Runnable 接口。【答案】1.new 2.类 3.double 4. 3 5.子类 6. 抽象方法 7.super 8. import 9. catch 10. Thread四、阅读程序,回答问题(本大题 5 小题,每小题 5 分,共 25 分)1. (5 分)1: public class Output1 2: public static void main(String arg
30、e) 3: int i=0;4: for ( char ch = 97; ch113; ch+,i+) 5: if( i % 8 = 0 )6: System.out.println(“ “);7: System.out.print(“t“ +ch); 8: 9: 10: (1)程序第 5、6 行的 if 语句的功能是什么? (2 分) (2)程序输出的结果有几行?(3 分)【答案】 (1)每打印 8 个字符,则换行。(2)输出的结果有 2 行。2. (5 分)1: import java.util.Arrays;2: 3: public class SortArray 4: public s
31、tatic void main(String args) 5: String str = “size“, “abs“,“length“,“class“;6: Arrays.sort(str);7: for (int i=0; istr.length; i+)8: System.out.print(stri+“ “);9: 10: (1)写出程序运行后的结果。(2 分)(2)方法调用 str0.length()的返回结果是多少?(3 分)【答案】(1) abs class length size (2) 43. (5 分)1: /TestKeyListener.java2: import jav
32、a.applet.Applet;3: import java.awt.*;4: import java.awt.event.*;5: 6: public class TestKeyListener extends Applet 7: 8: Color clr;9: 10: public void init() 11: 12: addKeyListener(13: new KeyAdapter() 14: public void keyTyped( KeyEvent e ) 15: if(e.getKeyChar()=r|e.getKeyChar()=R)16: clr=Color.red;17
33、: else if(e.getKeyChar()=g|e.getKeyChar()=G)18: clr=Color.green;19: else if(e.getKeyChar()=b|e.getKeyChar()=B)20: clr=Color.blue;21: else22: clr=Color.black; 23: setBackground(clr);24: 25: ); 26: 27: (1)程序第 15、16 行实现的功能是什么?(2 分)(2)编译该程序,并编写嵌入该程序字节码文件的网页后,通过支持java 的浏览器打开网页。如果敲击键盘的b键,有什么结果?(3 分)【答案】(1
34、) 如果敲击键盘的r键,则将颜色对象的值赋为红色。(2) 小程序的背景颜色变为兰色。4.定义类 A 和类 B 如下. (5 分)class Aint a=1;double d=2.0;void show( )System.out.println(“Class A: a=“+a +“td=“+d);class B extends Afloat a=3.0f; String d=“Java program.“; void show( ) super.show( ); System.out.println(“Class B: a=“+a +“td=“+d);(1) 若在应用程序的 main 方法中有
35、以下语句:A a=new A();a.show();则输出的结果如何?(2 分)(2) 若在应用程序的 main 方法中定义类 B 的对象 b:A b=new B();b.show();则输出的结果如何?(3 分)【答案】(1) Class A: a=1 d=2.0(2) Class A: a=1 d=2.0Class B: a=3.0 d=Java program.5. (5 分)import java.util.*;public class W static String s=“甲“,“乙“,“丙“,“丁“;public static void main(String args) Stac
36、k stk=new Stack(); for(int i=0;is.length;i+) stk.push(si+“ “);int k=0;while(k3) System.out.print(stk.pop();k+; (1)堆栈的操作规则如何?(2 分) (2)写出程序运行后的结果。(3 分)【答案】 (1) 先进后出 (2) 丁 丙 乙五、根据题目要求编写程序(本大题 2 小题,第 1 小题 5 分,第 2 小题10 分,共 15 分)1.请定义一个名为 Card 的扑克牌类,该类有两个 private 访问权限的字符串变量 face 和 suit:分别描述一张牌的牌面值(如:A、K、Q
37、、J、10、9、3、2 等)和花色(如:“黑桃” 、 “红桃” 、 “梅花”和“方块”) 。定义 Card 类中的 public 访问权限的构造方法,为类中的变量赋值;定义 protected 访问权限的方法getFace(),得到扑克牌的牌面值; 定义 protected 访问权限的方法getSuit(),得到扑克牌的花色; 定义方法toString(),返回表示扑克牌的花色和牌面值字符串(如“红桃 A”、“梅花 10”等) 。【答案】15 分class Card private String face;private String suit;public Card( String f, S
38、tring s ) face = f;suit = s;protected String getSuit()return suit;protected String getFace()return face;public String toString()return face + “ of “ + suit;2.若应用程序的 main 方法中,定义字符串数组 f 和 s: 分别表示扑克牌的牌面值和花色;定义 52 个元素的 Card 类型数组 deck,用来存放 4 个花色的 52 张牌。如下所示。String f = “A“, “2“, “3“,“4“, “5“, “6“, “7“, “8
39、“,“9“, “10“, “J“, “Q“, “K“ ;String s = “黑桃“, “红桃“, “梅花“, “方块“ ;Card deck = new Card 52 ;(1)使用 Card 类的构造方法给 deck 数组的 52 张牌赋值,要求数组中先存放黑桃花色的 A、2、3、K;然后是红桃花色的 A、2、3、K;梅花花色的 A、2、3、K;方块花色的 A、2、3、K。请写出实现上述功能的程序段。【答案】 (1)5 分for ( int i = 0; i deck.length; i+ ) deck i = new Card( faces i % 13 , suits i / 13 );(2)请编写模拟洗牌的程序段,即把数组 deck 中的扑克牌随机打乱存放顺序。【答案】 (2)5 分for ( int first= 0; first deck.length; first+ ) int second = ( int ) ( Math.random() * 52 );Card temp = deck first;deck first = deck second ;deck second = temp;