Java简明教程课后习题参考答案.docx
- 文档编号:9215408
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:96
- 大小:153.46KB
Java简明教程课后习题参考答案.docx
《Java简明教程课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《Java简明教程课后习题参考答案.docx(96页珍藏版)》请在冰豆网上搜索。
Java简明教程课后习题参考答案
参考答案
第1章
1.Java语言有哪些主要特点。
平台独立性
安全性
多线程
网络化
面向对象
2.目前美国Sun公司提供的适用不同开发规模的JDK有哪些。
目前Sun共提供了三种不同的版本:
微平台版J2ME(Java2PlatformMicroEdition),标准版J2SE(Java2PlatformStandardEdition)和企业版J2EE(Java2PlatformEnterpriseEdition),这三种版本分别适用于不同的开发规模和类型,对于普通Java开发人员和一般学习者来说,选用标准版J2SE就可以了,学会了J2SE,再学J2ME或J2EE就比较容易上手,因为它们之间虽有所侧重,但相似之处很多,尤其是语言本身是一样的,都是Java。
3.JavaApplication的开发步骤有哪些。
JavaApplication的开发步骤:
(1)下载JDK软件并安装;
(2)配置相应的环境变量(path和classpath);
(3)编写Java源程序(文本编辑器或集成开发环境IDE);
(4)编译Java源程序,得到字节码文件(javac*.java);
(5)执行字节码文件(java字节码文件名)。
4.什么是环境变量,设置环境变量的主要目的是什么。
环境变量的配置主要是为了进行“寻径”,也即让程序能找到它需要的文件,所以设置的内容就是一些路径。
5.不参考书本,试着编写一个简单的JavaApplication程序,实现在Dos窗口输出“WelcometoNanjingCity!
”字符串。
并对该程序进行编译和运行。
publicclassHello{
publicstaticvoidmain(Stringargs[])
{
System.out.println("WelcometoNanjingCity!
");
}
}
6.编写一个JavaApplication程序,实现分行显示字符串“WelcometoNanjingCity”中的四个单词。
publicclassHello{
publicstaticvoidmain(Stringargs[])
{
System.out.println("Welcome");
System.out.println("to");
System.out.println("Nanjing");
System.out.println("City!
");
}
}
第2章
1.Java语言对于合法标识符的规定是什么?
指出以下哪些为合法标识符。
aa23a*a_a$ainta%
在Java语言中,标识符必须以字母、美元符号或者下划线打头,后接字母、数字、下划线或美元符号串。
另外,Java语言对标识符的有效字符个数不做限定。
合法的标识符:
aa2_a$a
2.变量的涵义是什么?
变量名与变量值的关系?
在程序执行过程中其值可以改变的数据,称为变量,它本质上代表了内存中的一小块空间。
每个变量都必须有对应的名称来标识它,即变量名,而变量空间所存放的数据则称为变量值。
3.Java语言提供哪些基本的数据类型,为什么要提供这些不同的数据类型?
布尔型:
boolean
整型:
byte、short、int以及long
浮点型(实型):
float以及double
字符型:
char
数据类型代表了数据的存储格式和处理方式,虽然严格来说计算机只能识别“0”和“1”,但是,有了数据类型以后,计算机的识别能力就被人为扩展了,它能够识别整数、实数以及字符等。
4.赋值语句的涵义是什么?
数据传递。
5.数据类型强制转换的原则是什么?
如何转换?
对于变窄转换,如long到short、double到float,或者不兼容转换:
float到short、char到short等,则需要进行强制转换。
floatf=11.5;
shortb;
b=(short)f;(强制转换)
6.每一条程序语句都应以分号来结束,这个分号能否用中文输入模式下输入的分号,为什么?
不能。
首先中英文输入模式下输入的分号是不同的,不但外观不同,其存储所需的空间也是不同的,Java编译器只能识别英文的分号,对于中文分号,将会报错。
第3章
1.假定乘坐飞机时,每位顾客可以免费托运20kg以内的行李,超过部分按每公斤收费1.2元,以下是相应的计算收费程序。
该程序存在错误,请找出。
publicclassTest
{
publicstaticvoidmain(String[]args)throwsIOException
{
floatw,fee;
//以下代码为通过控制台交互输入行李重量
InputStreamReaderreader=newInputStreamReader(System.in);
BufferedReaderinput=newBufferedReader(reader);
System.out.println("请输入旅客的行李重量:
");
Stringtemp=input.readLine();
w=Float.parseFloat(temp);//字符串转换为单精度浮点型
fee=0;
if(w>20);
fee=(float)1.2*(w-20);
System.out.println("该旅客需交纳的托运费用:
"+fee+"元");
}
}
缺少importjava.io.*;语句
2.有一条长的阶梯,如果每步2阶,则最后剩1阶,每步3阶则剩2阶,每步5阶则剩4阶,每步6阶则剩5阶,只有每步7阶的最后才刚好走完,一阶不剩,问这条阶梯最少共有多少阶?
找出以下求解程序的错误所在。
publicclassTest
{publicstaticvoidmain(String[]args)
{
inti;
while(i%2==1&&i%3==2&&i%5==4&&i%6==5&&i%7==0)
{
i++;
}
System.out.println("这条阶梯最少有:
"+i+"阶");
}
}
1)变量i应进行初始化。
2)while循环的条件表达式应再加上“非”,这样才符合逻辑。
3.试用单分支结构设计一判断用户输入值X,当X大于零时求X值平方根,否则不执行任何操作的程序。
importjava.io.*;
importjava.lang.*;
publicclassTest
{publicstaticvoidmain(String[]args)throwsIOException
{
floatx;
InputStreamReaderreader=newInputStreamReader(System.in);
BufferedReaderinput=newBufferedReader(reader);
System.out.println("请输入x:
");
Stringtemp=input.readLine();
x=Float.parseFloat(temp);//字符串转换为单精度浮点型
if(x>0)
System.out.println("平方根值"+Math.sqrt(x));
}
}
4.从键盘读入两个字符,按照字母表排序顺序,将前面的字符置于A,排后面的字符置于B。
请设计实现该程序。
importjava.io.*;
publicclassTest
{publicstaticvoidmain(String[]args)throwsIOException
{
charA,B,c1,c2;
c1=(char)System.in.read();;
c2=(char)System.in.read();;
if(c1>c2)
{
A=c2;
B=c1;
}else
{
A=c1;
B=c2;
}
System.out.println("A="+A+"B="+B);
}
}
5.用穷举法求出3位数中百、十、个位数的立方和就是该数的数。
publicclassTest
{publicstaticvoidmain(String[]args)
{
inta,b,c,x=100;
while(x<1000){
a=x%10;
b=(x%100-a)/10;
c=(x-x%100)/100;
if(a*a*a+b*b*b+c*c*c==x)
System.out.println(x);
x+=1;
}
}
}
6.编程实现打印以下图案:
***********
*********
*******
*****
***
*
publicclassTest
{publicstaticvoidmain(String[]args)
{
inti,j,k;//i控制行数,k控制*的个数,j控制空格数
for(i=1;i<=6;i++)
{
for(j=1;j<=i-1;j++)
System.out.print("");//打印空格
for(k=1;k<=13-i*2;k++)
System.out.print("*");//打印*号
System.out.println();//换行
}
}
}
7.统计1至1万共有多少个数是素数。
publicclassTest
{publicstaticvoidmain(String[]args)
{inti,j,count=0;
label:
for(i=1;i<=10000;i++)//查找1到10000以内的素数
{for(j=2;j
if(i%j==0)//不满足
continuelabel;//跳过后面不必要的检验
count++;//计数
}
System.out.println("个数:
"+count);
}
}
8.打印输出斐波纳契数列的前12项。
斐波纳契数列的前12项如下:
第1项:
0
第2项:
1
第3项:
1
第4项:
2
第5项:
3
第6项:
5
第7项:
8
第8项:
13
第9项:
21
第10项:
34
第11项:
55
第12项:
89
publicclassTest
{publicstaticvoidmain(String[]args)
{inti=0,j=1;
for(intk=0;k<6;k++)
{
System.out.print(i+""+j+"");
i=i+j;
j=i+j;
}
}
}
9.读程序,写结果。
importjava.io.*;
publicclassTest
{
publicstaticvoidmain(String[]args)throwsIOException
{
charsex='f';
switch(sex)
{
case'm':
System.out.println("男性");
break;
case'f':
System.out.println("女性");
case'u':
System.out.println("未知");
}
}
}
女性
未知
10.读程序,写结果。
publicclassTest
{publicstaticvoidmain(String[]args)
{
inti,s=0;
for(i=1;i<=100;i++)
{
if(i%3==0)
continue;
s+=i;
}
System.out.println("s="+s);
}
}
s=3367
11.读程序,写结果。
publicclassTest
{publicstaticvoidmain(String[]args)
{
inti,s=0;
for(i=1;i<=100;i++)
{
s+=i;
if(s>100)
break;
}
System.out.println("s="+s);
}
}
s=105
12.个位数是6,且能被3整除的5位数有多少?
publicclassTest
{publicstaticvoidmain(String[]args)
{
inti=10006,count=0;
while(i<100000)
{if(i%3==0)
count++;
i+=10;
}
System.out.println("符合条件的数共有"+count+"个");
}
}
13.用嵌套循环结构,设计一模拟电子钟的程序。
提示:
定义三个变量分别代表“小时”、“分”和“秒”,根据电子钟分、秒、小时之间的关系,采用三重循环来控制各量的增加,并由输出语句将变化中的三个量分别予以输出显示,即为一模拟数字电子钟。
此外,Java语言提供的延时方法为Thread.sleep(1000);1000的单位为毫秒,即延时1秒。
importjava.util.*;
publicclassTest
{publicstaticvoidmain(String[]args)throwsInterruptedException
{
inthour=12,min=0,sec=0;
while(hour<24)
{
while(min<60)
{
while(sec<60)
{sec++;
Thread.sleep(1000);
System.out.println(hour+"时-"+min+"分-"+sec+"秒");
}
sec=0;
min++;
}
min=0;
hour++;
}
}
}
第4章
1.以下叙述中不正确的是______。
A、在方法中,通过return语句传回方法值
B、在一个方法中,可以执行有多条return语句,并返回多个值
C、在Java中,主方法main()后的一对圆括号中也可以带有参数
D、在Java中,调用方法可以在System.out.println()语句中完成
B
2.以下正确的描述是______。
A、方法的定义不可以嵌套,但方法的调用可以嵌套
B、方法的定义可以嵌套,但方法的调用不可以嵌套
C、方法的定义和方法的调用均不可以嵌套
D、方法的定义和方法的调用均可以嵌套
A
3.以下正确的说法为______。
A、在不同方法中不可以使用相同名字的变量
B、实际参数可以在被调方法中直接使用
C、在方法内定义的任何变量只在本方法范围内有效
D、在方法内的复合语句中定义的变量只在本方法语句范围内有效
C
4.按Java语言的规定,以下正确的说法是______。
A、实参不可以是常量,变量或表达式
B、形参不可以是常量,变量或表达式
C、实参与其对应的形参占用同一个存储单元
D、形参是虚拟的,不占用存储单元
D
5.一个JavaApplication程序中有且只有一个方法,它是整个程序的执行入口。
main()方法
6.方法通常可以认为由两部分组成,它们是和。
方法头和方法体
7.读程序写结果。
publicclassTest{
staticvoidm(intx,inty,intz)
{x=111;y=222;z=333;
}
publicstaticvoidmain(Stringargs[])
{intx=100,y=200,z=300;
m(x,y,z);
System.out.println(“x=”+x+”y=”+y+”z=”+z);
}
}
x=100y=200z=300
8.编写一个判断某个整数是否为素数的方法。
publicbooleanprime(intx)
{
for(intj=2;j if(x%j==0)//不满足 returnfalse; returntrue; } 9.编写两个方法,分别求两个整数的最大公约数和最小公倍数,在主方法中由键盘输入两个整数并调用这两个方法,最后输出相应的结果。 importjava.io.*; publicclassTest {publicstaticvoidmain(String[]args) {inta=0; System.out.print("请输入数a: "); try{ BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); a=Integer.parseInt(br.readLine()); }catch(IOExceptione){} intb=0; System.out.print("请输入数b: "); try {BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); b=Integer.parseInt(br.readLine()); }catch(IOExceptione){} if(a<=0||b<=0) System.out.println("输入不合法! "); System.out.println("最大公约数为: "+Gys(a,b)); System.out.println("最小公倍数为: "+Gbs(a,b)); } publicstaticintGys(inta,intb) { intr=0; if(a {r=a; b=a; a=r;} inti=1; while(i! =0) {i=a%b; a=b; b=i; } returna; } publicstaticintGbs(inta,intb) { intab=a*b; intr=0; if(a {r=a; b=a; a=r;} inti=1; while(i! =0) {i=a%b; a=b; b=i; } returnab/a; } } 10.以下程序执行后的输出为。 publicclassTest { staticintm1(inta,intb) { intc; a+=a; b+=b; c=m2(a,b); return(c*c); } staticintm2(inta,intb) { intc; c=a*b%3; return(c); } publicstaticvoidmain(String[]args) { intx=1,y=3,z; z=m1(x,y); System.out.println("z="+z); } } z=0 11.编写一个方法,实现求某整数的各位数字之和的功能。 importjava.io.*; publicclassTest {publicstaticvoidmain(String[]args) {inti,a=0,s=0; System.out.print("请输入数a: "); try{ BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); a=Integer.parseInt(br.readLine()); }catch(IOExceptione){} for(i=10;a%i! =a;i*=10) { s+=(a%i)/(i/10); } s+=a/(i/10); System.out.println("各位数之和为"+s); } } 12.编写完成十进制整数到八进制的转换方法。 importjava.io.*; publicclassTest {publicstaticvoidmain(String[]args) {inti,k,a=0,d,s=0; System.out.print("请输入数: "); try{ BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in)); a=Integer.parseInt(br.readLine()); }catch(IOExceptione){} d=a%8; s+=d; k=10; for(i=64;a-d! =0;i*=8) { s+=(a-d)%i*8/i*k; k*=10; d=a%i; } System.out.println("八进制数为"+s); } } 13.用于指出数组中某个元素的数字被叫做;数组元素之所以相关,是因为它们具有相同的和。 下标;数组名和数据类型。 14.数组intresults[]=newint[6]所占存储空间是字节。 24 15.使用两个下标的数组被称为数组,假定有如下语句: floatscores[][]={{1,2,3},{4,5},{6,7,8,9}}; 则scores.length的值为: ,scores[1].length的值为: , scores[1][1]的值为: 。 二维;3;2;5。 16.从键盘上输入10个双精度浮点数后,求出这10个数的和以及它们的平均值。 要求分别编写相应求和及求平均值的方法。 importjava.io.*; publicclassTest {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 简明 教程 课后 习题 参考答案