t4:
t3;
(A)5(B)6(C)7(D)以上都不对
18.(1分)
下列程序段执行后,r的值是(DC)。
intx=5,y=10,r=5;
switch(x+y)
{
case15:
r+=x;//r=10
case20:
r-=y;//r=0
case25:
r*=x/y;//r=0
default:
r+=r;//r=0
}
(A)15(B)10(C)0(D)20
19.(1分)
设类B是类C的父类,则下列声明对象x1的语句中不正确的是(D)。
(A)Bx1=newB();(B)Bx1=newC();//B声明的对象被子类C所赋值
(C)Cx1=newC();(D)Cx1=newB();
20.(1分)
在Java中,定义一个包的关键字是(B)。
(A)import(B)package(C)interface(D)protected
21.(1分)
关于下列程序段,说法正确的是(CD)。
classTemp{
staticStringtest[]=newString[10];
publicstaticvoidmain(Stringa[]){
System.out.println(test[0]);
}
}
(A)编译时将发生错误
(B)编译时正确但是运行时出错
(C)输出为0
(D)输出为null
22.(1分)
下列程序段执行后,其输出的结果是(A)。
C
publicclassSub
{
shortmValue;
privateSub(shortmValue){
this.mValue=mValue;
}
voidShow(){
System.out.println(mValue);
}
publicstaticvoidmain(String[]args)
{
shorta=52;
shortb=13;
shortc=a+b;
Subos=newSub(c);
os.Show();
}
(A)运行正确,输出“65”
(B)编译出错,原因是构造函数不能用private修饰
(C)编译出错,原因是不能把两个short类型用“+”相加后赋值给short类型
(D)运行出错,原因是不能创建构造函数用private修饰的对象
23.(1分)
下列说法中错误的是(D)。
(A)final关键字声明该方法是最终方法,不能被重写
(B)所谓方法的覆盖是声明一个方法与其父类中某个方法相同
(C)所谓方法的重载是多个方法可以共用一个方法名
(D)所谓构造方法就是类里面的第一个方法
24.(1分)
下列程序执行后,其输出结果是(D)。
A
classSuper{
publicinti=0;
Super()//如果在一开始没写这个不带参数的构造方法,在子类继承是要用
{//super()在子类中调用,如果一开始有就不用super()调用
}
publicSuper(Stringtext){
i=1;
}
}
publicclassSubextendsSuper{
publicSub(Stringtext){//super()调用不带参数的构造方法,要调用缺省的父类的构造方法
i=2;
}
publicstaticvoidmain(Stringag[]){
Subsub=newSub("Hello");
System.out.println(sub.i);
}
}
(A)编译失败(B)编译成功,程序输出0
(C)编译成功,程序输出1(D)编译成功,程序输出2
25.(1分)
下列选项中,属于JFrame缺省布局方式的是(AB)。
(A)FlowLayout布局方式
(B)BorderLayout布局方式
(C)GridLayout布局方式
(D)CrdLayout布局方式
26.(1分)
Java中数值数据的类型能自动转换,按照从左到右的转换次序是(CB)。
(A)byte→int→short→long→float→double
(B)byte→short→int→long→float→double//不带小数点向带小数点的转换
(C)byte→short→int→float→long→double
(D)short→byte→int→long→float→double
27.(1分)
采用缓冲式输出时,如果又想立即写入到文件,则需要调用的方法是(B)。
(A)flash()(B)flush()(C)write()(D)read()
//对于缓冲区,普通读写时是缓冲区满时再输出,快速读写时是写一个输出一个
28.(1分)
若抛出用户自定义异常,应使用的子句是(B)。
(A)catch(B)throw(C)try(D)finally
29.(1分)
Java中强制垃圾回收应使用的语句是(B)。
(A)java中不能强制垃圾回收(B)调用System.gc()方法//garbatecollect
(C)调用Runtime.gc()方法(D)将针对对象的引用设为null
30.(1分)
以下程序的执行结果是(B)。
C
publicclassTest{
publicstaticvoidmain(Stringargs[]){
Doublex=newDouble(4.0);//x和y都是对象,他们的内容是4.0
Doubley=newDouble(4.0);
System.out.println(x==y);//对象的引用,地址不同
}
}
(A)编译错误(B)True(C)False(D)抛出异常
第二大题:
实践题
(70分)
1.(20分)
备注:
考生按照系统提示目录保存试题文件,每道试题建立一个文件夹,文件夹名为题目编号。
文件夹中的文件命名参照提示所给的程序架构。
例:
第一题的试题文件夹名为“1”,文件名为“Exam1.java”,对应的字节码文件为:
Exam1.class。
问题描述:
输入三角形的三条边,分别是a,b,c三个值,判断其是一般三角形还是等腰三角形或者等边三角形或者不是三角形。
提示:
判断是否三角形的基本条件是a,b,c三条边都大于0,任何两条边相加大于第三边;等腰三角形的条件是在满足基本三角形的前提下,任何两条边相等则为等腰三角形;等边三角形的条件是三条边都相等。
程序结构如下:
publicclassExam1{
publicstaticvoidmain(String[]args)
{
//提示键盘输入a,b,c三个值,可以使用Scanner类接收输入。
//接受键盘输入,判断是否为“一般三角形”、“等腰三角形”、“等边三角形”、“不是三角形”。
}
}
2.(25分)
备注:
考生按照系统提示目录保存试题文件,每道试题建立一个文件夹,文件夹名为题目编号。
文件夹中的文件命名参照提示所给的程序架构。
例:
第一题的试题文件夹名为“1”,文件名为“Exam1.java”,对应的字节码文件为:
Exam1.class。
问题描述:
编写一个应用程序用来对一文本中的字符串进行加密,并将加密后的内容保存到另一个文本文件中。
对于字母字符串加密规则如下:
对于其他字符,不进行加密。
提示:
使用FileInputStream和FileOutputStream打开文件,对文件进行单字符读写操作。
‘a’--’z’的ASCII码是97至122。
‘A’--’Z’的ASCII码是65至90。
源文件放置于该题目录下,名称为data.txt,加密后的文件请命名为crpData.txt。
源文件data.txt内容如下:
ChineseName:
GuoqiangZhang
EnglishName:
EddyZhang
Sex:
Male
Born:
6/12/82
University:
BeijingUniversity
Major:
Marketing
Address:
328#,BeijingUniversity
Telephone:
1398****451
Email:
****
程序运行结果如下图所示。
程序结构如下:
importjava.io.*;
publicclassExample{
publicstaticvoidmain(String[]args)
{
try{
//初始化读文本和写文本对象
//遍历文本中所有字符,判断其是否字母,并进行加密操作,写入到新文本中。
}catch(Exceptionex){}
}
}
3.(25分)
备注:
考生按照系统提示目录保存试题文件,每道试题建立一个文件夹,文件夹名为题目编号。
文件夹中的文件命名参照提示所给的程序架构。
例:
第一题的试题文件夹名为“1”,文件名为“Exam1.java”,对应的字节码文件为:
Exam1.class。
问题描述:
编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。
提示:
设计一个学生类Stud,包含以下成员:
(1)三个数据成员:
no(学号,整型)、name(姓名,字符串型)和deg(成绩,整型);
(2)两个整型静态变量sum和num,分别存放总分和人数;
(3)两个普通成员函数setData()和disp(),分别用于给数据成员赋值和输出数据成员的值;
(4)一个静态成员函数avg(),用于计算平均分。
在main()函数中定义了一个对象数组用于存储输入的学生数据。
程序结构如下:
importjava.io.*;
classStud{
//成员定义
publicStud(){}
//通过键盘输入,设置学号、姓名、成绩
publicvoidsetData(){
//通过键盘输入,设置学号、姓名、成绩
//累加学生人数和总成绩
}
publicvoiddisplay(){
//显示该学生的学号、姓名、成绩
}
//计算平均成绩
publicstaticvoidavg(){
//显示学生的平均成绩,总成绩除以学生人数
}
}
publicclassExam3{
publicstaticvoidmain(String[]args){
Stud[]stu=newStud[3];
for(inti=0;i<3;i++){
stu[i]=newStud();
stu[i].setdata();
}
for(intj=0;j<3;j++){
stu[j].display();
}
Stud.avg();
}
}
运行结果如下图所示:
===============================================================
2012年(上)JAVA试卷参考答案
一、理论题(每小题1分,共30分)
1
2
3
4
5
6
7
8
9
10
C
B
B
D
D
D
C
B
B
B
11
12
13
14
15
16
17
18
19
20
B
C
C
B
C
D
A
C
D
B
21
22
23
24
25
26
27
28
29
30
D
C
D
A
B
B
B
B
B
C
需要讲解的题:
2,3,5,6,7,8,9,10,11,12,14,18,14,24,26,27
容易出错的题:
3,12,22(不是A而是C,因为要(short)(a+b))
不妥的题:
2(A也对,因为有匿名类),29(A也说得过去)
二、实践题(20+25+25=70分)
1.(20分)编程:
输入三条边,判断能否构成三角形。
importjava.util.Scanner;
publicclassExam1{
publicstaticvoidmain(String[]args){
try{
Scannerscan=newScanner(System.in);
doublea,b,c;
System.out.println("请输入三角形一条边:
");
a=scan.nextDouble();
System.out.println("请输入三角形第二边:
");
b=scan.nextDouble();
System.out.println("请输入三角形第三边:
");
c=scan.nextDouble();
if(a>0&&b>0&&c>0&&a+b>c&&b+c>a&&c+a>b){
if(a==b&&b==c){
System.out.println("这是等边三角形");
}
elseif(a==b||b==c||c==a){
System.out.println("这是等腰三角形");
}
else{
System.out.println("这是一般三角形");
}
}
else{
System.out.println("这不是三角形");
}
}
catch(Exceptione){
System.out.println("请输入正整数");
}
}
}
一次运行结果如下:
请输入三角形一条边:
2
请输入三角形第二边:
3
请输入三角形第三边:
4
这是一般三角形
2.(25分)编程:
对文本中的字符串进行加密
importjava.io.*;
publicclassExam2{
publicstaticvoidmain(String[]args){
try{
//初始化读文本和写文本对象
FileInputStreamfis=newFileInputStream("data.txt");
FileOutputStreamfos=newFileOutputStream("crpData.txt");
//遍历文本中所有字符,判断其是否字母,并进行加密操作,写入到新文本中。
intch;
while((ch=fis.read())!
=-1){
if(ch>=97&&ch<=122){//'a'—'z'的ASCII码是97至122
ch+=3;
if(ch>122){ch-=26;}
}
if(ch>=65