Java程序设计之网络编程基础教程习题及思考题答案Word格式.docx
《Java程序设计之网络编程基础教程习题及思考题答案Word格式.docx》由会员分享,可在线阅读,更多相关《Java程序设计之网络编程基础教程习题及思考题答案Word格式.docx(35页珍藏版)》请在冰豆网上搜索。
![Java程序设计之网络编程基础教程习题及思考题答案Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/9/69e6142a-a2c0-4e50-9f9a-48488fc85b7c/69e6142a-a2c0-4e50-9f9a-48488fc85b7c1.gif)
试列举出面向对象和面向过程的编程语言各两种。
解:
面向过程问题求解利用计算机能够理解的离散逻辑来描述和表达所求解的问题本身以及具体问题解决的过程,它的核心是算法和数据结构,面向对象的问题求解则利用符合人们日常思维习惯的方式去模拟所求解的问题,模拟它的构成、特征和各种动态行为,从而得到问题的解答。
它的核心是类、对象和设计模式。
常见的面向过程的编程语言有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答:
B
4.下列哪些是合法的标识符()。
A、newB、classC、intD、const2答:
D
5.如果定义有变量doubled1,d2=4.0则下列说法正确的是:
A、变量d1,d2均初始化为4.0
B、变量d1没有初始化,d2初始化为4.0C、变量d1,d2均未初始化
D、变量d2没有初始化,d1初始化为4.0
6.判断题:
所有的变量在使用前都必须进行初始化。
()答:
正确。
7.内部数据类型byte的取值范围是:
()
A、0~65,535B、(-128)~127
C、(-32,768)~32,767D、(-256)~255答:
8.下列哪些是不能通过编译的语句:
A、inti=32;
B、floatf=45.0;
C、doubled=45.0;
D、chara=‘c’;
B
9.判断题:
Java中数据类型的长度与具体使用的机器相关。
错误。
10.如果定义有doublex;
floaty;
intm,则表达式x*y-m的类型为():
A、doubleB、floatC、intD、short答:
A
11.如果定义有shorts;
byteb;
charc,则表达式s*b+c的类型为():
A、charB、shortC、intD、byte答:
C
12.已知inti=47;
++i;
则i的值等于多少()A-48B47C48答:
13.已知bytei=127;
则i的值等于多少()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++){k=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;
}
array.length;
i++)
"
array["
+i+"
]="
+array[i]);
}}
2、求两个整数的最大公约数解publicclassGcd_do{
publicstaticvoidmain(Stringargs[]){
inta=45,b=21,k=0;
Gcd("
+a+"
"
+b+"
)="
);
do{
k=a%b;
a=b;
b=k;
}while(k!
=0);
;
3、请打印出如下九九乘法表
*|123456789-------|------------------------------------1|12|243|369
4|4812165|5101520256|612182430367|71421283542498|8162432404856649|91827364554637281
publicclassMultiTable{
publicstaticvoidmain(Stringargs[]){inti,j,n=9;
*|"
for(i=1;
=n;
+i);
\n-------|"
----"
i++){
|"
for(j=1;
=i;
+i*j);
}}}
4、求一元二次方程ax2+bx+c=0的根,要求a、b、c从控制台输入。
mportjava.io.*;
//importjava.awt.*;
publicclassabcxxx{
publicstaticvoidmain(Stringargs[])throwsIOException{
BufferedReaderkeyin=newBufferedReader(newInputStreamReader(System.in));
Stringx;
doublea,b,c;
doublex1,x2,p1,p2,disc,absdisc;
Ctrl+Ctoescape:
"
for(;
true;
){
Entera(enter)\nb(enter)\nc(enter):
\n"
x=keyin.readLine();
a=Double.parseDouble(x);
b=Double.parseDouble(x);
c=Double.parseDouble(x);
a="
+a+"
b="
c="
+c);
if(a==0.0){if(b!
=0.0){
Notaquadrtaticrootis"
+(-c/b));
}else{
if(c==0.0)
Trival"
else"
IMpossible"
}}else{
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"
else{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{
publicstaticvoidmain(Stringargs[]){
longf1,f2;
inti;
f1=1;
f2=1;
(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);
:
”+str.equals(temp));
8、求2-1000内的所有素数classprime
{publicstaticvoidmain(Stringargs[]){intsum=0,i,j;
for(j=2;
=1000;
j++)//求50以内的素数{for(i=2;
=j/2;
i++){if(j%i==0)break;
if(i>
j/2)
{"
+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."
//输出语句;
运行结果:
Itisaboutthenodeofthis.12
4、创建一个类,该类还有int和char类型的成员变量且未被初始化,然后编程输
出这些成员变量的值,查看java是否执行了默认的初始化操作。
参考答案:
publicclassCuoShiHua{
inta;
//整型变量charb;
//字符型变量
publicvoidshow()//用来输出未被初始化的变量的{
publicstaticvoidmain(String[]args){
CuoShiHuac=newCuoShiHua();
//声明类的对象并实例化c.show();
//函数调用}}
输出结果:
0
□//小方格代表空格
5、创建一个类,该类含有的成员变量和成员方法,创建一个该类的对象,察看
当时图访问这些成员时,编译程序会给出那些信息(注意:
在同一目录下的类都属于一个默认的包)。
classtext1{
staticinta;
//当被定义为static类型时,为类变量,可被对象
或类调用
intb;
//对象变量,只能被对象调用publicvoiddisplay(inta,intb)//成员方法{
staticinta="
+a);
intb="
+b);
publicstaticvoiddisplay(intb){
staticdisplay:
text1tt=newtext1();
tt.display(5,6);
//text1.display(5,6)是错误的:
对象变量或对象方法只能被对象tt调用text1.display(0);
//当被定义为static类型时,为类方法,可被对象或类调用
tt.display(23);
tt.a=9;
text1.a=4;
tt.b=3;
staticinta=5intb=6
intb=0staticdisplay:
intb=23
6、下面给出了一个矩形类Rectangle,其中含有多个构造方法。
上机编译并运行
此程序,观察运行结果,体会其中不同构造方法的设计和使用。
importjava.io.*;
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()//返回宽度{
returnwidth;
intlength()//返回长度{
returnlength;
publicclassCRctngle{
publicstaticvoidmain(Stringargs[]){
Rectanglex1=newRectangle();
//声明类的对象并实例化Rectanglex2=newRectangle(50,40);
//声明类的对象并初始化Rectanglex3=newRectangle(x1);
运行结果:
302050403020
体会:
此程序中共定义了3个构造方法:
Rectangle()、Rectangle(intl,intw)、
Rectangle(Rectangler),其中Rectangle()是没有参数的,Rectangle(intl,intw)以常数作为参数,Rectangle(Rectangler)是以对象最为参数。
构造函数的调用实在用new