Java基础教程第3版习题答案.docx
- 文档编号:25071969
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:59
- 大小:64.97KB
Java基础教程第3版习题答案.docx
《Java基础教程第3版习题答案.docx》由会员分享,可在线阅读,更多相关《Java基础教程第3版习题答案.docx(59页珍藏版)》请在冰豆网上搜索。
Java基础教程第3版习题答案
部分习题答案
第一章
【答案】答案见教材<略>。
第二章
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);
System.out.println("a="+a);
}
}
【答案】无错误。
输出结果:
a=3
7.请指出执行完下面程序后x、y和z的输出值是多少?
请上机验证。
publicclassdoubleTointExample{
publicstaticvoidmain(Stringargs[]){
intx,y,z;
x=1;
y=2;
z=(x+y>3?
x++:
++y);
System.out.println("x="+x);
System.out.println("y="+y);
System.out.println("z="+z);
}
}
【答案】
x=1
y=3
z=3
8.请指出下面程序片段输出的结果是什么。
inti=1,j=10;
do
{
if(i++>--j)break;
}while(i<5);
System.out.println(“i=”+i+”<--->”+“j=”+j);
【答案】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)
{System.out.println("不及格");}
elseif(score==2)
{System.out.println("及格");}
elseif(score==3)
{System.out.println("中等");}
elseif(score==4)
{System.out.println("良好");}
else{System.out.println("优秀");}
}
}
/*switch描述程序*/
publicclassxt020902{
publicstaticvoidmain(Stringargs[]){
intscore=4;
switch(score)
{
case1:
System.out.println("不及格");
break;
case2:
System.out.println("及格");
break;
case3:
System.out.println("中等");
break;
case4:
System.out.println("良好");
break;
case5:
System.out.println("优秀");
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.141592654;
doublearea,r;
area=PI*r*r;
System.out.println(“面积=”+area);
}
}
【答案】
publicclassxt0210{
publicstaticvoidmain(Stringargs[]){
inti,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
System.out.print(j+"*"+i+"="+i*j+"");
System.out.println();
}
}
}
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++)
System.out.print("");
for(j=1;j<=i;j++)
{
num=num+1;
ch=(char)num;
System.out.print(ch+"");
}
System.out.println();
}
for(i=1;i<=4;i++)
{
for(k=1;k<=i-1;k++)
System.out.print("");
for(j=1;j<=5-i;j++)
{
num=num+1;
ch=(char)num;
System.out.print(ch+"");
}
System.out.println();
}
}
}
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;
System.out.println("sum[1:
n]="+sum);
}
}
/*while语句实现*/
publicclassxt021202{
publicstaticvoidmain(Stringargs[]){
inti,n=100;
longsum=0;
i=1;
while(i<=n)
{
sum=sum+i;
i=i+1;
}
System.out.println("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);
System.out.println("sum[1:
n]="+sum);
}
}
13.编写一个利用简单迭代法求解下列方程的Java程序。
参考答案:
//程序名称:
xt0213.java
//功能:
方程求解的应用
//2*x*x*x-4*x*x+3*x-6=0
importjava.io.*;//引入类库
publicclassxt0213{//定义类
publicstaticvoidmain(Stringargs[]){//定义main方法
doublex0=0.1,x,eps=0.000001;
x=(-2*x0*x0*x0+4*x0*x0+6)/3;
while((x-x0)>eps)
{
x0=x;
x=(-2*x0*x0*x0+4*x0*x0+6)/3;
}
System.out.println("方程的跟="+x);
}
}
14、题目:
判断3-1000之间有多少个素数,并输出所有素数。
程序分析:
判断素数的方法:
用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
publicclassxt0213{
publicstaticvoidmain(String[]args){
intcount=0;
for(inti=3;i<=1000;i+=2){
booleanb=false;
for(intj=2;j<=Math.sqrt(i);j++)
{
if(i%j==0){b=false;break;}
else{b=true;}
}
if(b==true){count++;System.out.println(i);}
}
System.out.println("素数个数是:
"+count);
}
}
15、输入某年某月某日,判断这一天是这一年的第几天?
【参考答案】
importjava.util.*;
publicclassxt0214{
publicstaticvoidmain(String[]args){
intyear,month,day;
intdays=0;
intd=0;
inte;
InputDatadata0=newInputData();
do{
e=0;
System.out.print("输入年:
");
year=data0.inputInt();
System.out.print("输入月:
");
month=data0.inputInt();
System.out.print("输入天:
");
day=data0.inputInt();
if(year<0||month<0||month>12||day<0||day>31){
System.out.println("输入错误,请重新输入!
");
e=1;
}
}while(e==1);
for(inti=1;i switch(i){ case1: case3: case5: case7: case8: case10: case12: days=31; break; case4: case6: case9: case11: days=30; break; case2: days=28; if((year%400==0)||(year%4==0&&year%100! =0)){ days=29; } break; } d=d+days; } System.out.println(year+"-"+month+"-"+day+"是这年的第"+(d+day)+"天。 "); } } classInputData{ publicintinputInt(){ intvalue=0; Scanners=newScanner(System.in); value=s.nextInt(); returnvalue; } } 12.复习break和continue语句,调试本章设计这两个语句的程序。 【答案】答案见教材<略>。 第三章 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() {System.out.println("IamA");} } classB {} publicclassHello { publicstaticvoidmain(Stringargs[]) { System.out.println("你好,很高兴学习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)简述构造方法的作用。 【答案】答案见教材<略>。 4.编程题 (1)定义一个长方形类myBox并在另一类中使用,其中myBox类包含长length和宽width两个成员变量,和计算面积、周长、修改长length和宽width等方法。 publicclassTest1{ publicstaticvoidmain(Stringargs[]){ myBoxobj=newmyBox(); intx=10,y=20; obj.setvalue(x,y); System.out.println("width="+obj.width+"length="+obj.length); System.out.println("周长="+obj.circle()); System.out.println("面积="+obj.area()); } } classmyBox{ intwidth,length; voidsetvalue(intwidth,intlength) { this.width=width; this.length=length; } intcircle() { return2*(width+length); } intarea() { returnwidth*length; } } (2)利用递归输入如下图形。 ################### ############### ########### ####### ### 程序如下所示。 //程序名称: Je030515.java //功能: 利用递归输出特定图形 classRecursionApp2{ voidoutput(charch,intk){ if(k>0){ System.out.print(ch); output(ch,k–1); } } voidshow(charch,intm,intn){ if(n>0){ output('',m); output(ch,n); System.out.println(); show(ch,m+2,n–4); } } } publicclassJe030515{ publicstaticvoidmain(Stringargs[]){ RecursionApp2obj=newRecursionApp2(); obj.show('#',4,19); } } (3)定义满足以下要求的复数类Complex: 1)复数类Complex的属性有: realPart: int型,代表复数的实数部分 imagePart: int型,代表复数的虚数部分 2)复数类Complex的方法有: Complex(): 构造函数,将复数的实部和虚部都置0 Complex(intr,inti): 构造函数,形参r为实部的初值,i为虚部的初值。 addComplex(Complexa): 计算当前复数对象与形参复数对象相加。 编写一个完整的JavaApplication程序使用复数类Complex验证两个复数1+2i和3+4i相加产生一个新的复数4+6i。 参考答案: Complex{ intRealPart; intImagePart; Complex(){ RealPart=0; ImagePart=0; } Complex(intx,inty){ RealPart=x; ImagePart=y; } addComplex(Complexc1){ RealPart=RealPart+c1.RealPart; ImagePart=ImagePart+c1.ImagePart; } } publicclassxt020902{ publicstaticvoidmain(Stringargs[]){ Complexc1=newComplex(1,2); Complexc2=newComplex(1,2); System.out.print(“复数c1的实部=”+c1.RealPart+”虚部=”+c1.ImagelPart) System.out.print(“复数c2的实部=”+c1.RealPart+”虚部=”+c1.ImagelPart) c1.addComplex(c2); System.out.print(“复数c1=c1+c2的实部=”+c1.RealPart+”虚部=”+c1.ImagelPart) } } (3)定义一个二维向量类,其中a、b为其属性,主要操作为: 向量相加: 向量相减: 向量内积: 编程定义该类,并使用该类。 参考答案: //程序名称: Java030801.java //目的: 演示自定义类及其如何使用 classMyVector{ floatx,y;//表示向量 myVector(floatx,floaty){ this.x=x;this.y=y; } voidsetVector(floatx,floaty){ this.x=x;th
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 基础教程 习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)