当前位置:文档之家› 《Java语言》模拟试题

《Java语言》模拟试题

《Java语言》模拟试题


一、对错题。(20分,每个题目2分)
1、异常是程序错误或可能导致程序错误的不正常状态。
2、方法的覆盖是在子类中再次实现超类中已经实现过的方法。
3、可以将方法作为一个参数传递给另一个方法。
4、抽象类可以用来定义对象,也可以被继承。
5、接口是多继承的具体实现形式。
6、3305L是长整型数,03716是八进制数。
7、switch语句只能处理等式,而if语句还可以处理关系表达式和逻辑表达式。
8、可以使用throw语句人为地引发异常。
9、可以用final说明变量为一个常量。
10、Java的字节代码是一种与平台无关的代码,即它与具体的系统是有关的。

二、改错题。指出下面程序中有什么错误,并提出改正方法。 (共20分)
设源程序文件名为:test.java
1:import java.io.*;
2:class test { //测试类
3: static float k=2.5;
4: public static void main(String a[]) { //主函数
5: static int j=2;
6: int s;
7: test Test;
8: callPhoneCard();
9: System.out.println(j+k+s);
10: }
11: public void callPhoneCard(){
12: PhoneCard testCard=new PhoneCard(1234,50.0);
13: System.out.println(testCard.toString());
14 }
15:}
16:class PhoneCard { //电话卡类
17: long cardNumber; //卡号
18: double balance; //金额
19: void PhoneCard(long cn,double b) { //构造函数
20: cardNumber = cn;
21: balance = b;
22: }
23: public String toString( ){ //重载
24: String s = ”电话卡号码:”+ cardNumber +
25: ”剩余金额:”+ balance ;
26: return s;
27: }
28:}
错误行号:__________错误原因:_________________________________
改正为:__________________________________________________
错误行号:__________错误原因:_________________________________
改正为:__________________________________________________
错误行号:__________错误原因:_________________________________
改正为:__________________________________________________
错误行号:__________错误原因:_________________________________
改正为:__________________________________________________
错误行号:__________错误原因:_________________________________
改正为:__________________________________________________

三.下面程序是否正确,为什么?(4分)
public class MyAr{
public static void main(String argv[]){
int[] i = new int[5];
System.out.println(i[5]);
}
}

四、下面的程序的每一行前面加上了行号。程序中变量num、i、temp和方法func()的作用域范围分别是什么?用行号来回答。(16分)
1、import java.io.*;
2、class test {
3、 int num;
4、 public static void main(string argv[])
5、{
6、 char name[20];
7、 int i;
8、 for(i=0;i<20;i++)
9、 {
10、 char temp;
11、 temp=name[i];
12、 System.out.printl

n(temp);
13、 }
14、}
15、void func()
16、{
17、 System.out.println("A function!");
18、 }
19、}
回答:
num 的作用域为从第______行到第_____行。
i 的作用域为从第______行到第_____行。
temp 的作用域为从第______行到第_____行。
func 的作用域为从第______行到第_____行。

五、程序填空题(每个填空4分,共20分)
下面程序的功能为:从键盘读入若干整数,计算并输出所读入数中正整数的平均值,忽略输入数中的负数。当输入的值为0时,结束输入。
比如从键盘输入以下数:
1 -4 -2 3 4 6 0
则输出内容为:
非负数的平均值为3.5
仔细阅读程序,填充其中没有完成的部分。注意以下几点:
(1)输入数中的负数被忽略
(2)输出的平均值不能省略小数部分
/****计算输入数中的正整数的和,直到读入一个0为止。**********
*输出这些正整数的平均值******************************/
______A______
class test2 {
public static void main(string argv[])
{
int iValue; //当前输入的整数值
int sum=0; //输入的正整数的和
_____B_____; //统计输入的正整数的个数
while (true)
{
iValue=Integer.parseInt(System.in.read());
if(_____C________)
continue;
if(iValue ==0)
_____D_____;
sum+=iValue; //计算和
sum++;
}
System.out.println("非负数的平均值为"+______E_______);
}
}

在下面写出答案:
A______________________
B______________________
C______________________
D______________________
E______________________

六、程序分析题(本题共20分)
import java.io.*;
class Vehicle
{
private:
int color;
public:
void SetColor(int c) { color = c; }
void Move() {System.out.println(”Vehicle moving !”); }
};
class Car extends Vehicle{
public:
void Move() { System.out.println(”Car moving !”;)
};
class Bus extends Vehicle{
public:
void Move() { System.out.println(”Bus moving !”;)
};
class SportsCar extends Car
{
};
class Coupe extends Car
{
public:
void Move() { System.out.println(”Coupe moving !”;)
};
public static void main(string argv[])
{
Vehicle vec,vec1,vec2,vec3;
vec = new Car();
vec.Move();
vec1 = new Bus();
vec1.Move();
vec2 = new SportsCar();
vec2.Move();
vec3 = new Coupe();
vec3.Move();
}
}
 
1、写出程序的运行结果。
2、如果将Coupe的Move方法的定义改为:
void Move(String s)
的形式,写出一种可能定义的形式。并指出在main方法中应做看样的改动?这里采用了什么技术?

答案及评分标准(供参考)
总的评分标准:
1)每小题的得分都

有语法分和语义分。
2)语法错误不影响语义分的取得,但语义的完全错误可能导致整个程序的不正确,因此当语义完全错误时,语法分也得不到。
3)语法错误指的是一些不影响程序结构和程序意义的小的错误,如:
*标识符的误写,如将void写成viod,float写成flaot等
*括号的不匹配,如忘了写''}''或者'')''等
*将::写成:,或者将:写成::等
4)语法错误一般每个错误扣0.5分,总共扣分的分数不超过整个题目所规定的语法分。
5)语义错误可能有很多种,要根据具体情况具体分析。可能是:
*数据类型选择的错误,如变量或函数的参数或函数的返回值
*标识符不合乎要求,如题中要求是member,而学生写了num等
答案和评分标准:
一、对错题,共20分,每答对一个,给2分
题号 1 2 3 4 5 6 7 8 9 10
对/错 对 对 错 错 对 错 对 对 对 错
二、改错题。共20分。
评分标准:共有5个错误,每个错误4分。说明原因占2分,改正占2分。
错误行号 错误原因 改正为
3 数据类型不匹配 static float k=2.5f;
5 在方法内不能声明静态域 int j=2;
6 方法中的变量要进行初始化 int s=0;
7 没有实际建立对象 test Test=new test();
8 缺少调用前缀 Test.callPhoneCard();
三、答案为:
此程序能在编译上通过,但在运行时将发生ArrayIndexOutOfBounds异常。
原因:下标越界
注:对数组而言,任何时候均有缺省初始值。
评分标准:本小题共4分。
1)说明是运行时异常,给2分。
2)说出了错误原因,给2分。
四、作用域范围分别为:
num 的作用域为从第__3__行到第__19__行.
i 的作用域为从第__7__行到第__14__行.
temp 的作用域为从第__10__行到第__13_行.
func 的作用域为从第__3__行到第__19__行.
评分标准:本小题共16分,每写对一个填空得2分.
五、答案:
A import java.io.*; B int num = 0
C iValue<0 D break
E 1.0 * sum/num 或者(float)sum/num或者(double)sum/num
评分标准:本题共20分,每小题4分。
有简单的语法错误,扣2分,如标识符拼写错误,括号不匹配等。
六:
(1)程序的输出为:
Car moving !
Bus moving !
Car moving !
Coupe moving !
评分标准:共10分。少写或错写一行输出扣2.5分。次序不对每次扣2分。
(2)一种可能的答案是:
void move(string s) {
System.out.println(s);
}
在main方法中对Coupe对象中此方法的调用应改成如下形式:
vec3.move(“test”);
此处应用了“重载”技术。
评分标准:共10分。写出一个语法正确的方法及调用语句各得4分,写出使用“重载”技术得2分。程序或调用语句中有语法错误,每次扣1分。程序出现2人以上雷

同者不给分。

相关主题
文本预览
相关文档 最新文档