一、选择题(每题1分,共30分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项的标记写在题干后的括号内。
1.以下的选项中能正确表示Java语言中的一个整型常量的是( )。
A) 12. B) -20 C) 1,000 D) 4 5 6
2.以下选项中,合法的赋值语句是( )。
A) a = = 1; B) ++ i;
C) a=a + 1= 5; D) y = int ( i );
3.若所用变量都已正确定义,以下选项中,非法的表达式是( )。
A) a != 4||b==1 B) 'a' % 3
C) 'a' = 1/2 D) 'A' + 32
4.若有定义int a = 2;则执行完语句a += a -= a * a; 后,a的值是( )。
A) 0 B) 4 C) 8 D) -4
5.设有定义语句int a[]={66,88,99}; 则以下对此语句的叙述错误的是( )。
A) 定义了一个名为a的一维数组 B) a数组有3个元素
C) a数组的下标为1~3 D)数组中的每个元素是整型
6.若a和b均是整型变量并已正确赋值,正确的switch语句是( )。
A) switch(a+b); B) switch( a+b*3.0 )
{ ...... } { ...... }
C) switch a D) switch ( a%b )
{ ...... } { ...... }
7.下列语句序列执行后,x 的值是( )。
int a=3, b=4, x=5;
if( ++aA) 5 B) 3 C) 4 D) 6
8.下列语句序列执行后,k 的值是( )。
int i=6, j=8, k=10, n=5, m=7;
if( i
A) 9 B) 10 C) 11 D) 12
9.下列语句序列执行后,r 的值是( )。
char ch='8'; int r=10;
switch( ch+1 )
{ case '7': r=r+3;
case '8': r=r+5;
case '9': r=r+6; break;
default: ;
}
A) 13 B) 15 C) 16 D) 10
10.下列语句序列执行后,j 的值是( )。
int j=0;
for( int i=3; i>0; i-- ) j+=i;
A) 3 B) 4 C) 5 D) 6
11.下列语句序列执行后,j 的值是( )。
int j=9, i=6;
while( i-- >3 ) --j;
A) 5 B) 6 C) 7 D) 8
12.下列语句序列执行后,i的值是( )。
int i=10;
do { i-=2; } while( i>6 );
A) 10 B) 8 C) 6 D) 4
13.为了区分重载多态中同名的不同方法,要求( )。
A) 采用不同的形式参数列表 B) 返回值类型不同
C) 调用时用类名或对象名做前缀 D) 参数名不同
14.定义主类的类头时可以使用的访问控制符是( )。
A) private B) protected
C) public D) private protected
15.下列整型的最终属性 i 的定义中,正确的是( )。
A) static final int i=100; B) final i;
C) static int i; D) final float i=1.2f;
16.设 x,y 均为已定义的类名,下列声明对象x1的语句中正确的是( )。
A) public x x1= new y( ); B) x x1=x( );
C) x x1=new x( ); D) int x x1;
17.下列方法定义中,正确的是( )。
A) int x( int a,b ) B) double x( int a,int b)
{ return (a-b); } { int w; w=a-b; }
C) double x( a,b ) D) int x( int a,int b)
{ return b; } { return a-b; }
18.能构成多分支的语句是( )。
A) for 语句 B) while 语句
C) switch 语句 D) do - while 语句
19.下列程序段执行后t1的结果是( )。
int x1 = 9, x2 = 6, t1;
t1 = x1 > x2 ? x1 : x2;
A) 6 B) 9 C) 11 D) 3
20.对于一个三位的正整数 n,取出它的十位数字k(k为整型)的表达式是( )。
A) k = n / 10 % 10 B) k = ( n - n / 100 * 100 )%10
C) k = n % 10 D) k = n / 10
21.现有一变量声明为boolean aa;下面赋值语句中正确的是( )。
A)aa=false; B)aa=False; C)aa="true"; D)aa=0;
22.为了定义三个整型数组a1、a2、a3,下面声明正确的语句是( )。
A)intArray [] a1,a2; B)int [] a1,a2;
int a3[]={1,2,3,4,5}; int a3[]={1,2,3,4,5};
C)int a1,a2[]; D)int [] a1,a2;
int a3={1,2,3,4,5}; int a3=(1,2,3,4,5);
23.以下for循环的执行次数是( )。
for(int x=0,y=0;(y!=0)&&(x<4);x++);
A)无限次 B)一次也不执行
C)执行4次 D)执行3次
24.为了使包sos在当前程序中可见,可以使用的语句是( )。
A)import sos.*; B)package sos.*;
C)sos import; D)sos package;
25.以下哪个方法仅在Applet程序被创建和首次被载入支持Java的浏览器时被调用( )。
A)paint() B)init() C)action() D)start()
26.在某个类A中存在一个方法:void GetSort(int x),以下能作为这个方法的重载的声明的是( )。
A)Void GetSort(float x) B)int GetSort(int y)
C)double GetSort(int x,int y) D)void Get(int x,int y)
27.有一个类A,以下为其构造函数的声明,其中正确的是( )。
A)void A(int x){...} B)A(int x){...}
C)a(int x){...} D)void a(int x){...}
28.选择排序的思想是,将数据序列划分为两个子列,一个子列是排好序的,另一个是尚未排序的。现若想将数据序列由大到小排序,则每次放到有序子列尾部位置的元素,应从无序序列中选择( )。
A)最大的 B)最小的 C)任意的 D)头上的
29.已知int a[11]={12,18,24,35,47,50,62,83,90,115,134};使用对分查找法查找值为90的元素时, 查找成功所进行的比较次数是( )。
A)1 B)2 C)3 D)4
30.下面叙述正确的是( )。
A)栈不能进行插入元素的操作,而队列可以。
B)栈和队列都不能在中间位置进行插入操作。
C)链表不能进行插入操作。
D)数组不能进行插入操作。
二、填空题(每空1分,共15分。)
请将正确答案填写在答题纸相应位置上,答在试卷上不得分。
1.在Java语言中,逻辑常量只有true 和 ___________ 两个值。
2.表达式1/2*3的计算结果是_________。
3.以下方法fun的功能是求两参数之和。
int fun ( int a, int b )
{ __________________; }
4.面向对象技术中的对象具有状态,行为和_________等三个基本属性。
5.面向对象程序设计方法最重要的特性是继承、封装、__________和多态。
6.定义一个类包括定义类头和定义_______两个部分。
7使用一个对象前,必须声明并___________它。
8.数组、堆栈、________和链表都是线性数据结构。
9.执行以下程序段后:a = ________, b = ________ 。
int a = 5, b;
b = ++a * 3;
10.结构化程序设计的三种基本流程控制结构是:顺序结构、循环结构和_______________。
11.Java 程序可以分为 Application 和 Applet 两大类,能在 WWW 浏览器上运行的是 _________ 。
12.如果子类中的某个方法的名字、返回值类型和参数列表与它的父类中的某个方法完全一样,则称子类中的这个方法 __________了父类的同名方法。
13.同类中多个方法具有相同的方法名,不同的_____________称为方法的重载。
14.在Java语言中,所有的数组都有一个length属性,这个属性存储了该数组的___________。
15.在Java语言中,为将源代码翻译成____________时产生的错误称为编译错误。而将程序在运行中产生的错误称为运行错误。
三、判断题( 每小题1分,共15分 )
下列各题中,你认为正确的就在其题干后的括号内打"√",错误的打"×"。
1.Java中的的字符使用的是 16 位的Unicode 编码。
2.类是同种对象的集合和抽象。
3.Java 仅支持类间的单重继承。
4.接口是由常量和抽象方法组成的特殊类。
5.构造函数的方法名可由编程人员任意命名。
6.使用静态属性必须以类名做前缀。
7.类的私有属性和私有方法可以被其子类访问。
8.abstract 是抽象修饰符,可以用来修饰类及其属性和方法。
9.Java 支持多线程机制。
10.一个 Java 源程序中允许有多个公共类。
11.Java 程序可以划分为两大类: Application 和 Applet。
12.for 语句中的循环体不能是空的。
13.子类不能继承父类的构造函数。
14.重载的方法可以通过它们的返回值类型的不同来区分。
15.数组一定占用连续的内存空间。
四、程序填空( 每空2分,共20分 )
阅读程序,根据程序功能,在指定的空白处填上适当的语句或语法成分,使程序完整。
1.下面是一个类的定义。
class ____________ // 定义名为myclass的类
{
__________ int var=666;
static int getvar()
{
return var;
}
}
2.下面是用户程序对 Applet 类中方法 paint( ) 的重新定义。
__________ void paint(Graphics g)
{ g.____________("你好!",10,20); }
3.下面是用户程序对 Applet 类中方法 action( ) 的重新定义,功能为从单行文本编辑区 input 中输入数据赋给k。TextField 类的对象input和int型变量k已在类体中正确说明。
public ___________ action( Event e, Object o )
{ if( e.target==input )
k=Integer.parseInt( _______.getText( ) );
repaint( );
return true;
}
4.下面是一个类的定义
import java awt.*;
import java applet.*;
public class myprogram extends _______//定义小程序的主类
{
Label p1;
TextField in;
public void init()
{ p1=new Label("请输入一个整数");
____________;
in =new TextField( 8 );
add( in );
}
}
5.下面程序的功能为计算数组各元素的和。
import java.awt.Graphics;
import java.applet.Applet;
public class SumArray extends Applet
{
int a[] = { 1, 3, 5, 7, 9, 10 };
int total;
public void init()
{
total = 0;
for ( int i = 0; ___________; i++ )
total=______________;
}
public void paint( Graphics g )
{
g.drawString( "Total of array elements: " +total, 25, 25 );
}
}
五、简答题( 每1问2分,共20分 )
阅读下面的程序(或程序片段),回答问题 。
1.
import java.awt.Graphics;
import java.applet.Applet;
public class BreakTest extends Applet
{
public void paint( Graphics g )
{
int count, xPos = 25;
for ( count = 1; count <= 10; count++ )
{
if ( count == 8 )
break;
g.drawString( " " + count, xPos, 25 );
xPos += 10;
}
}
}
问题:
1)程序的输出结果是什么?
2)方法调用 g.drawString( " " + count, xPos, 25 );
的第一个实参中为什么要有串 " " ?
2.
import java.awt.Graphics;
import java.applet.Applet;
public class Applet1 extends Applet
{
public void paint( Graphics g )
{
int c1, c2;
boolean b1, b2;
c1 = 5;
c2 = 7;
b1 = false;
b2 = true;
g.drawString( "b1和b2相与的结果是:"+ ( b1 & b2 ), 25, 25 );
g.drawString( "b1和b2相或的结果是:"+ ( b1 | b2 ), 25, 45 );
g.drawString( "c1=" + ++c1, 25, 85 );
g.drawString( "++c1 == --c2为" + ( ++c1 == --c2 ), 25, 105 );
}
}
问题:
1)程序执行后共输出几行 ?
2)输出结果是什么 ?
3.现有一个类定义如下:
class student
{
String name;
int age;
int score=88;
student(String a1,int a2,int a3)
{name=a1; age=a3; score=a2;}
}
在使用该类时,已使用下面语句生成了该类的对象:
student s1,s2;
s1=new student("张三",20,33);
s2=new student();
问题:
1)s1.name,s1.age,s1.score的值各是什么?
2)s2.name,s2.age,s2.score的值各是什么?
4.现有类说明如下:
class A
{
int x=10;
int GetA(){return x;}
}
class B extends A
{
int x=100;
int GetB(return x;}
}
问题:
1)类B是否能继承类A的属性x?。
2)若b是类B的对象,则b.GetB()的返回值是什么?
3)若b是类B的对象,则b.GetA()的返回值是什么?
4)类A和类B都定义了x属性,这种现象称为什么?