Java基础教程清华大学出版社第2版部分习题答案.docx
《Java基础教程清华大学出版社第2版部分习题答案.docx》由会员分享,可在线阅读,更多相关《Java基础教程清华大学出版社第2版部分习题答案.docx(37页珍藏版)》请在冰豆网上搜索。
![Java基础教程清华大学出版社第2版部分习题答案.docx](https://file1.bdocx.com/fileroot1/2022-11/16/8958983f-852f-4248-9b3c-91f527ff87d0/8958983f-852f-4248-9b3c-91f527ff87d01.gif)
Java基础教程清华大学出版社第2版部分习题答案
Java基础教程(清华大学出版社第2版)部分习题答案
第一章
【答案】答案见教材<略>。
第二章
1.请说明注释的作用。
【答案】答案见教材<略>。
2.判断下列那些是标识符?
(1)3class
(2)byte
(3)?
room
(4)Beijing
(5)beijing
【答案】
(1)
(2)(3)不是标识符,因为标识符不能已数字开始,也不能是保留关键字(如byte),不能以?
开始。
3.请指出下列声明字符变量ch的语句是否存在错误?
如果有,请改正。
(1)charch='A';
(2)charch='\u0020';
(3)charch=88;
(4)charch='ab';
(5)charch="A";
【答案】(4)错,因为关键字char是用于声明字符变量,不可声明字符串变量。
4.如果intx=1,y=-2,n=10;那么,表达式x+y+(--n)*(x>y&&x>0?
(x+1):
y)的值是什么类型?
结果是多少?
【答案】int型,值为17。
5.如果intk=1,那么'H'+k的类型是什么?
下面语句是否存在差错?
如果有,请改正。
(1)intk=1;
(2)charch1,ch2;
(3)ch1='H'+k;
(4)ch2=98;
【答案】'H'+k的类型为int型。
(3)有错。
'H'+k为int型,ch1为char型,将高精度赋给低精度类型时必须实行强制转换。
6.请指出下面程序在编译时是否会出现错误。
如果有,请改正。
publicclassdoubleTointExample{
publicstaticvoidmain(Stringargs[]){
inta;
doubleb=1,c=2;
a=(int)(b+c);
"a="+a);
}
}
【答案】无错误。
输出结果:
a=3
7.请指出执行完下面程序后x、y和z的输出值是多少?
请上机验证。
publicclassdoubleTointExample{
publicstaticvoidmain(Stringargs[]){
intx,y,z;
x=1;
y=2;
z=(x+y>3?
x++:
++y);
"x="+x);
"y="+y);
"z="+z);
}
}
【答案】
x=1
y=3
z=3
8.请指出下面程序片段输出的结果是什么。
inti=1,j=10;
do
{
if(i++>--j)break;
}while(i<5);
;
【答案】i=5<--->j=6
9.请分别用if-else语句和switch语句编写实现下列功能的程序。
某同学某门课的成绩可能的结果为1,2,3,4,5。
当成绩为1时请输出不及格;成绩为2时请输出及格;成绩为3时请输出中等;成绩为4时请输出良好;成绩为5时请输出优秀。
【答案】
/*if-else描述程序*/
publicclassxt020901{
publicstaticvoidmain(Stringargs[]){
intscore=4;
if(score==1)
{"不及格");}
elseif(score==2)
{"及格");}
elseif(score==3)
{"中等");}
elseif(score==4)
{"良好");}
else{"优秀");}
}
}
/*switch描述程序*/
publicclassxt020902{
publicstaticvoidmain(Stringargs[]){
intscore=4;
switch(score)
{
case1:
"不及格");
break;
case2:
"及格");
break;
case3:
"中等");
break;
case4:
"良好");
break;
case5:
"优秀");
break;
}
}
}
10.请编写输出乘法口诀表的程序。
乘法口诀表的部分内容如下:
1*1=1
1*2=22*2=3
1*3=32*3=63*3=9
1*4=42*4=83*4=124*4=16
……
publicclassxt0210
{
publicstaticvoidmain(Stringargs[])
{finaldoublePI=3.4;
doublearea,r;
area=PI*r*r;
;
}
}
【答案】
publicclassxt0210{
publicstaticvoidmain(Stringargs[]){
inti,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
"*"+i+"="+i*j+"");
;
}
}
}
11.请编写程序实现如下效果图。
【答案】
publicclassxt0211{
publicstaticvoidmain(Stringargs[]){
inti,j,k,num;
charch;
num='A'-1;
for(i=1;i<=4;i++)
{
for(k=1;k<=4-i;k++)
"");
for(j=1;j<=i;j++)
{
num=num+1;
ch=(char)num;
"");
}
;
}
for(i=1;i<=4;i++)
{
for(k=1;k<=i-1;k++)
"");
for(j=1;j<=5-i;j++)
{
num=num+1;
ch=(char)num;
"");
}
;
}
}
}
12.分别利用for语句、while语句以及dowhile语句编写一个求和程序(即sum=1+2+3+…+n)。
【答案】
/*for语句实现*/
publicclassxt021201{
publicstaticvoidmain(Stringargs[]){
inti,n=100;
longsum=0;
for(i=1;i<=n;i++)
sum=sum+i;
"sum[1:
n]="+sum);
}
}
/*while语句实现*/
publicclassxt021202{
publicstaticvoidmain(Stringargs[]){
inti,n=100;
longsum=0;
i=1;
while(i<=n)
{
sum=sum+i;
i=i+1;
}
"sum[1:
n]="+sum);
}
}
/*dowhile语句实现*/
publicclassxt021203{
publicstaticvoidmain(Stringargs[]){
inti,n=100;
longsum=0;
i=1;
do
{
sum=sum+i;
i=i+1;
}
while(i<=n);
"sum[1:
n]="+sum);
}
}
13.复习break和continue语句,调试本章设计这两个语句的程序。
【答案】答案见教材<略>。
14.上机调试本章提供的输入输出语句。
【答案】答案见教材<略>。
第三章
1.选择题
(1)不允许作为类及类成员的访问控制符的是()。
A.publicB.private
C.staticD.protected
【答案】C
(2)为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为()。
A.staticvoidmethod()B.publicvoidmethod()
C.finalvoidmethod()D.abstractvoidmethod()
【答案】A
(3)Java中main()函数的值是()。
A.StringB.intC.charD.void
【答案】D
2.改错题
(1)一个名为Hello.java程序如下:
//Hello.java程序
publicclassA
{
voidf()
{"IamA");}
}
classB
{}
publicclassHello
{
publicstaticvoidmain(Stringargs[])
{
"你好,很高兴学习Java");
Aa=newA();
a.f();
}
}
要求:
指出错误,说明错误原因,并改正。
【答案】
错误原因:
一个程序中不可同时申明一个以上的public类。
改正措施:
将publicclassA变为classA即可
(2)类A的定义如下:
classA{
voidf(){
intu=(int)(Math.random()*100);
intv,p;
if(u>50){v=9;}
p=v+u;
}
要求:
指出错误,说明错误原因,并改正。
【答案】
错误原因:
Java语言规定,任何变量在使用之前,必须对变量赋值。
由于u的值是由随机方法产生的,当u<=50时,v在使用前没有赋值,此时执行p=v+u;会出现错误。
改正措施:
将intv,p;变为intv=0,p;即可
(3)B.java内容如下:
classA{
intx,y;
staticfloatf(inta)
{returna;}
floatg(intx1,intx2)
{returnx1*x2;}
}
publicclassB{
publicstaticvoidmain(Stringargs[]){
Aa=newA();
A.f(3);
a.f(4);
a.g(2,5);
A.g(3,2);
}
}
要求:
指出错误,说明错误原因,并改正。
【答案】
错误原因:
A.g(3,2);由于类方法不仅可以由对象调用而且还可以直接由类名调用,而实例方法不能由类名调用。
改正措施:
删除A.g(3,2);或将A.g(3,2);改为a.g(3,2);
3.简答题
(1)简述面向对象程序和面向过程程序设计的异同。
(2)简述类中成员变量的分类及差异。
(3)简述类中方法的分类及差异。
(4)简述类中变量的初始化方式。
(5)简述类中成员的几种访问控制修饰符的差异,并举例说明。
(6)简述构造方法的作用。
【答案】答案见教材<略>。
第四章
1.简述