Java程序设计各章习题及其答案Word格式.docx
- 文档编号:623370
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:77
- 大小:50.27KB
Java程序设计各章习题及其答案Word格式.docx
《Java程序设计各章习题及其答案Word格式.docx》由会员分享,可在线阅读,更多相关《Java程序设计各章习题及其答案Word格式.docx(77页珍藏版)》请在冰点文库上搜索。
试列举出面向对象和面向过程的编程语言各两种。
解:
面向过程问题求解利用计算机能够理解的离散逻辑来描述和表达所求解的问题本身以及具体问题解决的过程,它的核心是算法和数据结构,面向对象的问题求解则利用符合人们日常思维习惯的方式去模拟所求解的问题,模拟它的构成、特征和各种动态行为,从而得到问题的解答。
它的核心是类、对象和设计模式。
常见的面向过程的编程语言有BASIC,FORTRAN,Pascal,C等。
常见的面向对象的编程语言有Smalltalk-80,ObjectPascal,C++,Java等。
第二章习题及思考题
1.试分析基本数据类型和引用数据类型的基本特点?
Java的基本数据类型都有固定的数据位,不随运行平台的变化而变化。
引用类型都是用类或对象实现的
2.请使用异或运算符^,实现两个整数的交换。
intx=5,y=19;
x=x^y;
y=y^x;
3.下列哪个是合法的标识符:
()。
A、a=bB、_HelloC、2ndD、Chongqing
4.下列哪些是合法的标识符()。
A、newB、classC、intD、const2
5.如果定义有变量doubled1,d2=4.0则下列说法正确的是:
A、变量d1,d2均初始化为4.0
B、变量d1没有初始化,d2初始化为4.0
C、变量d1,d2均未初始化
D、变量d2没有初始化,d1初始化为4.0
6.判断题:
所有的变量在使用前都必须进行初始化。
()
正确。
7.内部数据类型byte的取值范围是:
A、0~65,535
B、(-128)~127
C、(-32,768)~32,767
D、(-256)~255
8.下列哪些是不能通过编译的语句:
A、inti=32;
B、floatf=45.0;
C、doubled=45.0;
D、chara=‘c’;
9.判断题:
Java中数据类型的长度与具体使用的机器相关。
错误。
10.如果定义有doublex;
floaty;
intm,则表达式x*y-m的类型为():
A、doubleB、floatC、intD、short
11.如果定义有shorts;
byteb;
charc,则表达式s*b+c的类型为():
A、charB、shortC、intD、byte
12.已知inti=2147483647;
++i;
则i的值等于多少()
A-2147483648B2147483647C2147483648
13.已知bytei=127;
A-128B127C128
14.已知bytei=127;
i=i+1;
这两行语句能否编译成功?
编译不成功。
15.执行以下程序段inta=5,b;
b=++a*3后b的值为:
A、17B、18C、16D、15
16.如果x=3,y=5,则表达式x|y的值为:
A、15B、8C、1D、7
17.如果inta=3,b=2,则执行a*=b+8后a的值为:
A、20B、14C、30D、16
18.若所用变量都已正确定义,以下选项中,非法的表达式是:
A、a!
=4||b==1B、'
a'
%3C、'
=1/2D、'
A'
+32
19.设有定义语句inta[]={1,1,2};
则以下对此语句的叙述错误的是()。
A、定义了一个名为a的一维数组B、a数组有3个元素
C、a数组的下标为1~3D、数组中的每个元素是整型
20.以下数组初始化形式正确的是:
A、intt1[][]={{1,2},{3,4},{5,6}}B、intt2[][]={1,2,3,4,5,6}
C、intt3[3][2]={1,2,3,4,5,6}D、intt4[][];
t4={1,2,3,4,5,6}
第三章习题及思考题
1、编写一个程序,用选择法对数组a[]={20,10,55,40,30,70,60,80,90,100}进行从大到小
publicclassArraySort{
publicstaticvoidmain(Stringargs[]){
intarray[]={20,10,55,40,30,70,60,80,90,100};
inti,j,k,t;
intm=array.length;
for(i=0;
i<
m-1;
i++){
for(j=i+1;
j<
m;
j++)
if(array[j]<
array[k])k=j;
t=array[k];
array[k]=array[i];
array[i]=t;
}
l;
i++)
System.out.println("
array["
+i+"
]="
+array[i]);
2、求两个整数的最大公约数
解publicclassGcd_do
publicstaticvoidmain(Stringargs[])
inta=45,b=21,k=0;
System.out.print("
Gcd("
+a+"
"
+b+"
)="
);
do
k=a%b;
a=b;
b=k;
}while(k!
=0);
System.out.println(a);
3、请打印出如下九九乘法表
*|123456789
-------|------------------------------------
1|1
2|24
3|369
4|481216
5|510152025
6|61218243036
7|7142128354249
8|816243240485664
9|91827364554637281
if(a==0.0){
if(b!
=0.0){
Notaquadrtaticrootis"
+(-c/b));
else{
if(c==0.0)
Trival"
elseSystem.out.println("
IMpossible"
p1=-b/(2.0*a);
disc=b*b-4.0*a*c;
absdisc=disc>
=0?
disc:
-disc;
p2=Math.sqrt(absdisc)/(2.0*a);
if(disc<
0.0){
Complexroots:
"
+p1+"
+or-"
+p2+"
i"
x1=p1+p2;
x2=p1-p2;
FirstRealroots:
+x1);
Secondrealroots:
+x2);
}//endfor
5、求前40个Fibonacci数列。
Fibonacci数列:
1,1,2,3,5,8,13,21,34,?
从数列看到:
F1=1(n=1)
F2=1(n=2)
Fn=Fn-1+Fn-2(n≥3)
publicclassFibonacci{
longf1,f2;
inti;
f1=1;
f2=1;
System.out.println(f1+"
"
+f2);
for(i=3;
=20;
i++){
f1=f1+f2;
f2=f1+f2;
6、已知公鸡5元1只,母鸡3元一只,小鸡1元3只,要求用100元刚好买100只鸡,问有多少种
采购方案。
publicclassLoop_Loop3_20
{publicstaticvoidmain(Stringargs[]){
intI,J,K;
IJK"
for(I=0;
I<
I++)//I为公鸡数
for(J=0;
J<
=33;
J++)//J为母鸡公鸡数
K=100-I-J;
//K为小鸡数
if(5*I+3*J+K/3.0==100)
+I+"
+J+"
+K);
7、判断一个字符串是否是回文,例如“rotor“反转之后还是”rotor“,所以是回文。
需
查阅String类的一些方法。
publicclassRotor
Stringstr="
rotor"
sub1;
inti=0,n;
booleanyes=true;
if(args.length>
0)
str=args[0];
str="
+str);
n=str.length();
charch1,ch2;
Stringtemp="
;
for(i=0;
n;
sub1=str.substring(i,i+1);
temp=sub1+temp;
temp="
+temp);
System.out.println(str+“:
”+str.equals(temp));
8、求2-1000内的所有素数
classprime
{publicstaticvoidmain(Stringargs[])
{intsum=0,i,j;
for(j=2;
=1000;
j++)//求50以内的素数
{for(i=2;
=j/2;
{if(j%i==0)
break;
if(i>
j/2)
{System.out.println("
+j+"
是素数"
9、在一个循环中使用break,continue和return有什么不同?
在循环中使用break语句,将使循环终止,流程从break语句处跳转到break语句所在的
循环外面的第一个语句继续执行。
在循环中使用continue语句,将提前结束本轮循环,流程跳转到continue语句所在循环的第
一个语句继续执行。
在循环中使用return语句,将终止当前方法调用,同时终止循环,使流程返回到调用语句的
下一个语句执行。
10、结构化程序设计有哪三种流程?
他们分别对应Java中那些语句
结构化程序设计有三种基本流程:
循环、分支和顺序。
Java程序中的分支语句包含if
语句、switch语句;
循环语句包括了while语句,do-while语句、for语句;
其他语句如变量、对象定义、赋值语句、方法调用语句、以及上面的循环结构、分支结构等按照上下文排列都是顺序语句。
第四章习题及思考题
1.什么是类?
什么是对象?
对象和类是什么关系?
类是抽取了同类对象的共同属性和行为形成的对象或实体的“模板”。
对象是现实世界中实体的描述,是其自身所具有的状态特征及可以对这些状态施加的操作结
合在一起所构成的独立实体。
类和对象之间的关系是抽象和具体的关系:
类表达的是一种抽象的概念,它描述
了该类对象的共同特征;
而对象是具体事物,以类为模板来生成,它具有自
己的状态。
举例:
类与对象的关系犹如零件的图纸与按图纸制造出的零件关系一样;
图纸(类)描述了零件(对象)的共同特征,每个零件(对象)又有自己的个性,如加工精度的不同等等
2、什么是方法?
方法的结构是怎样的?
设计方法应考虑哪些因素?
方法是Java类的一个组成部分,通过类的方法改变对象的状态。
方法的结构:
[方法修饰符]返回值类型方法名([形参列表])[throws异常列表]{
设计方法应考虑因素有:
(1)方法名是Java中任意的标识符,按照命名的约定,方法名应该是有意义的
动词或动词短语,它的第一个字母一般要小写,其他有意义的单词的首字母要大写,其余字母小写。
(2)返回值类型可以是任意的Java类型,甚至可以是定义此方法的类。
如果方
法没有返回值,则用void表示。
(3)形式参数列表是可选的。
如果方法没有形式参数,就用一对小括号“()”表
示。
形式参数列表的形式如下:
(类型形参名,类型形参名,……)
(4)throws异常列表规定了在方法执行中可能导致的异常。
3.创建一个有两个方法的类,其中第一个方法两次调用第二个方法,第一次不使
用this,第二个使用this。
classRectangle//矩形类
intwidth;
//矩形的宽
intusethis(intwidth)//返回宽度的函数
{this.width=width;
//指自己这个对象
returnwidth;
intunusethis(intwidth)
{intw=width;
returnw;
Rectangler=newRectangle();
//类对象的实例化
Itisaboutthenodeofthis."
//输出语句
System.out.println(r.usethis
(1));
System.out.println(r.unusethis
(2));
运行结果:
Itisaboutthenodeofthis.
4、创建一个类,该类还有int和char类型的成员变量且未被初始化,然后编程输
tt.display(23);
tt.a=9;
text1.a=4;
tt.b=3;
}}
staticinta=5intb=6
staticdisplay:
intb=0staticdisplay:
intb=23
6、下面给出了一个矩形类Rectangle,其中含有多个构造方法。
上机编译并运行
此程序,观察运行结果,体会其中不同构造方法的设计和使用。
importjava.io.*;
classRectangle//矩形类{
privateintwidth;
//矩形的宽度privateintlength;
//矩形的长度
Rectangle()//矩形的不带参数的构造函数,缺省的给出长(30)和宽(20){
length=30;
width=20;
Rectangle(intl,intw)//矩形的带参数的构造函数{
length=l;
width=w;
Rectangle(Rectangler)//此构造方法以另一个Rectangle作为参数{
width=r.width();
//通过对象调用函数并附值给相应变量length=r.length();
intwidth()//返回宽度{
intlength()//返回长度{
returnlength;
publicclassCRctngle{
publicstaticvoidmain(Stringargs[]){
Rectanglex1=newRectangle();
//声明类的对象并实例化Rectanglex2=newRectangle(50,40);
//声明类的对象并初始化Rectanglex3=newRectangle(x1);
System.out.println(x1.length());
System.out.println(x1.width());
System.out.println(x2.length());
System.out.println(x2.width());
System.out.println(x3.length());
System.out.println(x3.width());
302050403020
体会:
此程序中共定义了3个构造方法:
Rectangle()、Rectangle(intl,intw)、
Rectangle(Rectangler),其中Rectangle()是没有参数的,Rectangle(intl,intw)以常数作为参数,Rectangle(Rectangler)是以对象最为参数。
构造函数的调用实在用new运算符创建类对象是由系统自动完成的,构造函数的参数传递和形实结合也是由系统在调用的同时自动完成。
7、下面给出了一个计算阶乘的类Fact和使用该类计算阶乘的程序Check1。
编译并运行该程序,观察运行结果,体会方法的参数的传递和返回值的用法。
在调用时改变参数的个数和类型,看看编译时会得到什么信息。
classFact{
floatfact(intn)//定义计算n!
的方法{inti;
floatx=1;
for(i=1;
i++)x=x*n;
returnx;
publicclassCheck1{
Factx=newFact();
System.out.println(x.fact(10));
//计算10!
System.out.println(x.fact(15));
//计算15!
1.0E9
2.91929271E16
8、编译并运行下面的程序,观察分析运行结果,体会程序中super和this的用法,进一步理解变量隐藏和方法重写的概念。
classSuperClss//定义父类{
intx;
SuperClss()//父类的构造方法{x=10;
voiddoClss(){
SuperClss.doClass()"
classSubClssextendsSuperClss//定义子类{intx;
SubClss()//子类的构造方法
super();
x=100;
voiddoClss()//重写父类的doClss方法//调用父类的构造方法
SubClss.doClss()"
voiddoDemo(){intx;
x=1000;
super.doClss();
doClss();
System.out.println("
super.x="
+super.x);
this.x="
+this.x);
x="
+x);
publicclassSuperDemo{
publicstaticvoidmain(Stringargs[]){
SubClsss=newSubClss();
//演示super和this的方法//调用父类的doClss方法//调用本类的doClss方法//父类的x//本类的x//本方法的x//主方法
voidspeak(Strings)//有参数的speak方法
System.out.println(″Ilike″+″″+s+″.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 各章 习题 及其 答案