Java語言程序設(shè)計(jì)劉衛(wèi)國課后參考答案_第1頁
Java語言程序設(shè)計(jì)劉衛(wèi)國課后參考答案_第2頁
Java語言程序設(shè)計(jì)劉衛(wèi)國課后參考答案_第3頁
Java語言程序設(shè)計(jì)劉衛(wèi)國課后參考答案_第4頁
Java語言程序設(shè)計(jì)劉衛(wèi)國課后參考答案_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第1章概論

習(xí)題1

一、選擇題

1.Java語言的許多特點(diǎn)中,下列()特點(diǎn)是C++語言所不具備的。B

A.高性能B.跨平臺(tái)C.面向?qū)ο驞.有類庫

2.Java語言中,負(fù)責(zé)并發(fā)管理的機(jī)制是()。A

A.多線程B.虛擬機(jī)C.字節(jié)

碼D.垃圾回收

3.在Java語言中,不允許使用指針體現(xiàn)出的Java特性是()。D

A.可移植B.解釋執(zhí)行C.健壯性D.安全性

4.下列描述中,錯(cuò)誤的是()?A

A.Java要求編程者管理內(nèi)存

B.Java的安全性體現(xiàn)在多個(gè)層次上

C.Applet程序要求在支持Java的瀏覽器上運(yùn)行

D.Java有多線程機(jī)制

5.Java為移動(dòng)設(shè)備提供的平臺(tái)是()。B

A.JavaSEB.JavaMEC.Java

EED.JDK6

6.下列敘述中正確的是()。C

A.Java源文件名與程序類名不允許相同

B.Java源文件中public類的數(shù)目不限

C.對(duì)Java源程序進(jìn)行編譯時(shí),必須寫出該源文件的文件名,包括擴(kuò)展名.java

D.對(duì)Java源程序進(jìn)行編譯后,生成的文件是二進(jìn)制可執(zhí)行文件。

7.Java源文件中最多只能有一個(gè)()類,其他類的個(gè)數(shù)不限。B

A.abstractB.pubIicC.finalD.iinterface

8.Java源文件和編譯后的文件擴(kuò)展名分別為()oB

A..cIass和.javaB..java和.cIass

C..cIass和.cIassD..java和.java

9.-一個(gè)可以獨(dú)立運(yùn)行的Java應(yīng)用程序()oD

A.可以有一個(gè)或多個(gè)main方法B.最多只能有兩個(gè)main方法

C.可以有一個(gè)或零個(gè)main方法D.只能有一個(gè)main方法

10.Java程序的執(zhí)行過程中用到一套JDK工具,其中javac是指()oC

A.Java文檔生成器B.Java解釋器

C.Java編譯器D.Java類分解器

二、填空題

1.Java語言是對(duì)C++語言進(jìn)行改進(jìn)并重新設(shè)計(jì)的結(jié)果。

2.Java源程序文件的擴(kuò)展名是.java,Java源程序經(jīng)編譯后生成字節(jié)

碼____文件,其擴(kuò)展名是.class。

3.Applet程序是能夠嵌入HTML格式的文件中,并能在瀏覽器中運(yùn)行的Java

程序。

4.類是Java程序中基本的結(jié)構(gòu)單位。

5.在Java中,負(fù)責(zé)對(duì)字節(jié)代碼解釋執(zhí)行的是虛擬機(jī)。

6.使用記事本或其他編輯軟件建立了Java程序文件Jasmine,java,對(duì)源程序文件進(jìn)行

編譯時(shí),在DOS命令窗口將當(dāng)前文件夾轉(zhuǎn)換到Java源程序所在的文件夾,然后輸入javac

jasmine,java形式的命令進(jìn)行程序編譯。執(zhí)行程序時(shí),在同樣的命令提示符下輸入

javajasmine形式的命令執(zhí)行程序。完成了程序的開發(fā),查看相應(yīng)文件夾,其中應(yīng)該

具有兩個(gè)文件,分別是jasmine.java和jasmine,class,

三、問答題

1.Java語言有哪些特點(diǎn)?

答:面向?qū)ο?,可移植性,安全性,并發(fā)性,可視化和程序的健壯性等。

2.比較JavaSE、JavaEE和JavaME的特點(diǎn)。

答:JavaSE是Java各應(yīng)用平臺(tái)的基礎(chǔ),可分為4個(gè)主要的部分,即Java虛擬機(jī)(JVM)、

Java運(yùn)行環(huán)境(JRE)、Java開發(fā)工具(JDK)及其API、Java語言等。JavaEE以JavaSE

為基礎(chǔ),面向分布式、多層式、組件式和Web化應(yīng)用程序的開發(fā),定義了一系列的服務(wù)、API

和協(xié)議。整個(gè)JavaEE的體系是相當(dāng)龐大的,常用的技術(shù)有:JSP、Servlet、Enterprise

JavaBeans(EJB)、JavaRemoteMethodInvocation(RMI)等,建議讀者先奠定JavaSE

基礎(chǔ)后,再深入學(xué)習(xí)。JavaME是面向小型數(shù)字設(shè)備(如手機(jī)、PDA、股票機(jī)等)開發(fā)及部

署的應(yīng)用程序平臺(tái)。目前,已有越來越多的手持設(shè)備支持JavaME所開發(fā)出來的程序,如

Java游戲、股票相關(guān)程序、記事程序等。

3.簡述Java的運(yùn)行過程。

答:第一步,操作系統(tǒng)解析我們輸入的javaxxx命令,根據(jù)PATH中所配置的jrd路

徑找的其bin目錄下的java.exe程序(這個(gè)程序是用c語言寫的,源碼在jdk的src文件

中的laucher目錄下),然后再初始化一些java參數(shù)(比如classpath、虛擬機(jī)參數(shù)等)。

第二步,java.exe程序根據(jù)上一步讀入的虛擬機(jī)參數(shù),分配內(nèi)存并啟動(dòng)jre/bin目錄

下client目錄或者server目錄(哪個(gè)目錄取決于第一步中的虛擬機(jī)參數(shù))下的jvm.dll,

java虛擬機(jī)開始啟動(dòng)。

第三步,java虛擬機(jī)初始化內(nèi)存,產(chǎn)生bootstrapclassloader,這個(gè)類加載器負(fù)責(zé)加

載javaAPI(jvm+javaAPI被稱為java運(yùn)行時(shí)),其實(shí)這些jar包主要分布在jre/lib下。

第四步,bootstrapclassloader載入完javaAPI后,還會(huì)負(fù)責(zé)載入ExtClassLoader

并生成一個(gè)實(shí)例,它繼承于ClassLoader類,負(fù)責(zé)載入jre/lib/ext下的jar包(所以有

時(shí)候需要把servlet.jar包加進(jìn)去,相當(dāng)于一個(gè)不配置在classpath中就可以默認(rèn)訪問的

公共jar目錄),到這里,java虛擬機(jī)默認(rèn)加載類工作完成。

第五步:java虛擬機(jī)找到我們指定的Class,加載這個(gè)類(所謂自定義類加載,是指我

們自己寫的java類、以及我們引入的一些第三方j(luò)ar包的加載方式,只有代碼中運(yùn)行到類

的時(shí)候才回去加載,我們可以實(shí)現(xiàn)自己的ClassLoader類,用來加載我們自己的類,如果我

們沒有實(shí)現(xiàn)自己的類加載器,上面說的ExtClassLoader會(huì)默認(rèn)載入AppCIassLoader并生

成一個(gè)實(shí)例,由這個(gè)類加載器來進(jìn)行加載),然后找到這個(gè)類的main方法,啟動(dòng)程序。

4.一個(gè)Java源程序中可以有多個(gè)公共類(主類)嗎?可以有多個(gè)類嗎?若有多個(gè)類

時(shí),程序文件名是什么?

答:不可以有多個(gè)主類,可以有多個(gè)類,若多個(gè)類存在的時(shí)候程序文件名為公共類的名

字。

5.在安裝JDK后,還要配置環(huán)境變量Path和Classpath,其目的是什么?

答:運(yùn)行路徑path變量記錄的是各個(gè)程序所在的路徑,系統(tǒng)根據(jù)這個(gè)變量的值來查找

運(yùn)行程序(各種命令),使得在運(yùn)行的時(shí)候不用輸入全路徑名。類路徑classpath環(huán)境變量

通常用來記錄當(dāng)前路徑和java類庫所在的路徑。在類庫中包含java系統(tǒng)所提供的各種軟

件包,其中包括各個(gè)類和接口等

第2章程序的數(shù)據(jù)描述

習(xí)題2

一、選擇題

1.下列字符序列中,不屬于Java語言關(guān)鍵字的是(C).

A.tryB.thisC.nativeD.goto

2.下列字符序列中,合法的Java程序標(biāo)識(shí)符是(A)。

A._studentB.pubIicC.123numD.GoodLuck

3.下列數(shù)中不是Java正確的整數(shù)表示的是(C)。

A.34B.0x34C.34HD.034

4.下面的類型中不是Java整數(shù)類型的是(C)。

A.IongB.shortC.unsignedD.byte

5.下面的操作中正確的是(C)o

A.intx=3.1415926;B.doubley=236,000;

C.Stringstr="good";D.booleantruth=1;

6.對(duì)于Java語言的運(yùn)算符,下面說法正確的是(c)。

A.具有相同優(yōu)先級(jí)的運(yùn)算符,計(jì)算順序一律是從右到左。

B.關(guān)系運(yùn)算符的優(yōu)先級(jí)要高于算術(shù)運(yùn)算符。

C.圓括號(hào)具有最高優(yōu)先級(jí)。

D.Java語言的運(yùn)算符不具有優(yōu)先級(jí)的區(qū)別。

7.下列表達(dá)式中運(yùn)算結(jié)果為32的是(C)。

A.2%B.(8?2)?4C.2?6D.(2?1)*(32?3)

8.下面的運(yùn)算符中屬于位運(yùn)算符的是(A)。

A.&B.>=C.&&D.++

9.下面對(duì)字符串正確定義的是(C)。

A.Strings1=nulI;B.Strings2='nuII';

C.Strings3=(String)'abc';D.Strings4=(String)'\uface';

10.假設(shè)有:

Stringa二"A";

charb='A';

intc=65;

下面選項(xiàng)中正確的是(A)o

A.if(c=b){System.out.print("EquaI");}

B.if(a==b){System,out.print("EquaI");}

C.if(a==c){System,out.print("EquaI");}

D.if(c==b){System.out.print("EquaI");)

11.下面創(chuàng)建數(shù)組的語句中錯(cuò)誤的是(C)。

A.int[]a={100,200,300,400,500);B.charb[4]={'x','y'f'z');

C.char[]b=newchar[];D.int[][]b=newint[2][2];

12.Java中定義數(shù)組名為abc,下面可以得到數(shù)組元素個(gè)數(shù)的是(B)?

A.abc.Iength()B.abc.lengthC.Ien(abc)D.ubound(abc)

二、填空題

1.Java的數(shù)據(jù)類型可分為基本數(shù)據(jù)類型、引用類型兩大類。

2.Java中使用的字符編碼為Unicode,它以16位二進(jìn)制數(shù)來

表示一個(gè)字符。

3.Java是一種強(qiáng)類型語言,凡是使用到的變量,在編譯之前一定要被顯示的X

0

4.在Java中對(duì)于浮點(diǎn)型的值,如果沒有特別指明,默認(rèn)是double類型。

5.Java語言中使用StringBuffer類來表示多個(gè)字符,表示方式是用雙引

號(hào)_____把要表示的字符串引起來,字符串里面的字符數(shù)量可以使任意多個(gè)的

6.在Java語言中,數(shù)組的下標(biāo)都是從0開始的,數(shù)組一旦被創(chuàng)建,則在內(nèi)存

中占用連續(xù)的內(nèi)存地址。

三、問答題

1.Java語言標(biāo)識(shí)符的書寫有哪些規(guī)則?在下面的標(biāo)識(shí)符中,哪些是不正確的,并說明

原因:here,_there,this,that,it,2to1,_i

答:合法的Java標(biāo)識(shí)符必須遵循以下的命名規(guī)則:

(1)只能由字母、下劃線、數(shù)字和美元符號(hào)組成,不能包含其他符號(hào),例如空格以及#、%

等特殊符號(hào)。

(2)只能以字母、下劃線和美元符號(hào)作為標(biāo)識(shí)符的第一個(gè)字符。

(3)不能與關(guān)鍵字同名,即標(biāo)識(shí)符內(nèi)可以包含關(guān)鍵字,但不能與關(guān)鍵字完全一樣。

(4)嚴(yán)格區(qū)分大小寫,但長度沒有限制。

其中合法的標(biāo)識(shí)符為:here,_there,_it,that,it;

不合法的標(biāo)識(shí)符為:this,關(guān)鍵字,2tol,數(shù)字不能作為關(guān)鍵字的開頭。

2.int和Integer有什么區(qū)別?String和StringBuffer有什么區(qū)別?&和&&有什么區(qū)

別?

答:int是基本數(shù)據(jù)類,Integer是其包裝類。

String類對(duì)象為不可變對(duì)象,一旦你修改了String對(duì)象的值,隱性重新創(chuàng)建了一個(gè)新

的對(duì)象,釋放原String對(duì)象,StringBuffer類對(duì)象為可修改對(duì)象,可以通過append。方法

來修改值,,在者String類對(duì)象的性能遠(yuǎn)不如StringBuffer類。

&是位運(yùn)算符,就是兩個(gè)二進(jìn)制位同時(shí)等于1,結(jié)果才等于1,&&是關(guān)系運(yùn)算符,就

是兩個(gè)值同時(shí)為真,結(jié)果才為真

3.Java的整數(shù)類型有哪幾種?各自的取值范圍是多大?

答:Java語言有4種整型類型,分別用關(guān)鍵字int、long、short和byte聲明對(duì)應(yīng)類

型的整型變量。int取值范圍為-2”?2"-1。long其取值范圍為-2“?2”1。short其取值范

圍為-2“?2”-1,byte其取值范圍為-2,?2乙1。

4.Java的字符類型如何表示?

答:Java語言使用16位Unicode編碼來表示字符,共有65535種字符。Java的字符

型數(shù)據(jù)在計(jì)算機(jī)內(nèi)存中占2個(gè)字節(jié),字符型數(shù)據(jù)無符號(hào),其取值范圍是0?2\Java中表

示字符的用char關(guān)鍵字表示,在Java中負(fù)責(zé)字符操作的還有字符串,常用的字符串類有

String類和StringBuffer類。

5.Java中有兩個(gè)關(guān)鍵字:void和nulI,它們有什么區(qū)別?

答:null表示對(duì)象或者變量的值為空,void表示函數(shù)沒有返回值。

6.數(shù)組有沒有l(wèi)ength。這個(gè)方法?String字符串有沒有Iength()這個(gè)方法?

答:數(shù)組沒有l(wèi)ength。方法,只有String字符串有l(wèi)ength。方法。

7.看以下代碼:

doubIex1=100.3;

doublex2=1003/10;

System,out.printIn(x1==x2);〃輸出false

看起來x1與x2是相等的,為什么程序運(yùn)行時(shí)會(huì)輸出一個(gè)讓人意外的結(jié)果:false?

8.看以下代碼:

intx1,x2ry=10,z=20;

x1=y=z;

x2二尸z;

System.out.println(xl);//輸出20

System.out.printIn(x2);〃輸出true

x1與x2的值為什么不同?“二”與“二二”的區(qū)別是什么?

答:x1的值是z賦值的值20,x2的值是先講v賦值給x2再進(jìn)行判斷x2和z是否相

等。“二”是賦值的符號(hào),“二二”是判斷兩個(gè)值是否相等。

四、程序分析題

1.寫出下列程序的執(zhí)行結(jié)果。

pubIiccIassMain{

pubIicstaticvoidmain(String[]args){

System.out.printIn("IntegerArithmetic");

inta=1+1;

intb=a*2;

intc=b/3;

intd=c-a;

System.out.printIn(,,a="+a);

System,out.printIn("b="+b);

System.out.printIn("c="+c);

System.out.printIn("d=',+d);

System.out.printIn("\nFIoatingPointArithmetic");

fIoatfa=1+1;

floatfb=fa*2;

fIoatfc=fb/3;

fIoatfd=fc-fa;

System.out.printIn("fa="+fa);

System.out.printIn(Hfb="+fb);

System.out.printIn(,,fc=",+fc);

System,out.printIn(,,fd="+fd);

)

)

答:程序執(zhí)行結(jié)果為:

IntegerArithmetic

a=2

b=4

c=1

d=-1

FloatingPointArithmetic

fa=2.0

fb=4.0

fc=1.3333334

fd=-0.6666666

2.寫出下列程序的執(zhí)行結(jié)果。

pubIiccIassTest{

pubIicstaticvoidmain(String[]args){

intx1=5,y1;

intx2=5,y2;

y1=++x1;

y2=x2++;

System,out.printInC'x1=*,+x1);

System.out.printIn("y1=n+y1);

System,out.printIn("x2="+x2);

System,out.printIn("y2="+y2);intx=5,y;

y=++x;

)

)

答:程序運(yùn)行結(jié)果為:

x1=6

y1=6

x2=6

y2=5

3.寫出下列程序的執(zhí)行結(jié)果。

publicelassTest{

pubIicstaticvoidmain(String[]args){

inti=(5>3)?6:7;

System,out.printIn("thei="+i);

)

)

答:程序運(yùn)行結(jié)果為:

thei=6

4.寫出下列程序的執(zhí)行結(jié)果。

classString1{

pubIicstaticvoidmain(String[]args){

Stringstr[]={"oneM,"two","three");

for(intn=0;n<str.Iength;n++)

System.out.printIn("str["+n+"]:"+str[n]);

答:程序運(yùn)行結(jié)果為:

str[0]:one

str[1]:two

str[2]:three

5.寫出下列程序的執(zhí)行結(jié)果。

cIassArray{

pubIicstaticvoidmain(String[]args){

intmonth_days[]={31,28,31,30,31,30,31,30,31,30,31,30);

System.out.printIn("Junehas"+month_days[6]+"days.");

答:程序結(jié)果為:Junehas31days.

五、程序設(shè)計(jì)題

1.編寫輸出師生早上相互問好的程序。

答:pubIiccIasssayHello{

pubIicstaticvoidmain(String[]args){

System.out.printIn("HeIIo,teacher!");

System,out.printIn("HeIIo,student!");

2.用單目運(yùn)算符計(jì)算正整數(shù)5兩種自減后再減1的結(jié)果。

答:pubIiccIasscoumpute{

pubIicstaticvoidmain(String[]args){

intn=5;

n——;

n-=1;

n=n-1;

System.out.println(n);

)

1

3.求下列算術(shù)表達(dá)式的值并上機(jī)驗(yàn)證:

inta=20,b=3;

doubIef=20,g=3;

(1)a/bxa%bvf/go

(2)(b-)*2、a++/―bo

答:(1)6,2,6.666666666666667

(2)6,20

4.求下列關(guān)系表達(dá)式或邏輯表達(dá)式的值并上機(jī)驗(yàn)證:

intx=6,y=7,z=8;

(1)x==x++xx==++xxx!=y0

(2)y=z&&x<y、x>y||!(x<y)、x>10&&x++<(y+=10)o

答:(1)true,faIse,true

(2)faIse

5.編寫一個(gè)程序,要求能夠判斷一個(gè)字符串中是否包含中文,并計(jì)算出包含有幾個(gè)漢

字。設(shè)字符串Stringstr="Sun公司的Java程序設(shè)計(jì)語言!:

答:程序源代碼為:

publicclassChineseCount{

pubIicstaticvoidmain(String[]args){

Stringstr="Sun公司的Java程序設(shè)計(jì)語言!”;

char[]charArray=str.toCharArray();

intcount=0;

for(inti=0;i<charArray.length;i++){

if(charArray[i]>=0x4e00&&charArray[i]<=0x9fbb){

count++;

)

)

System,out.printIn("當(dāng)前字符的中文字符有"+count+"個(gè)。");

)

)

第3章程序控制結(jié)構(gòu)

習(xí)題3

一、選擇題

1.下面選項(xiàng)不是表達(dá)式語句的是(D)。

A.c++;B.a=b+c;C.a+b;D.if(x==0)break;

2.下面語句中不是循環(huán)語句的是(C)o

A.for■語句B.while語句C.switch語句D.do-while語

3.下面選項(xiàng)符合Java語言語法的語句是(B)。

A.instb=3;inta=6;B.inta=4;longb=2;

C.doublea=c*/.6;D.inta=9,b=1,c=8;a=b+c=a-b+c;

4.執(zhí)行下列程序,輸出結(jié)果為(D)。

pubIiccIassB{

pubIicstaticvoidmain(String[]args){

intx=4;

doubley=10.5f;

floatz=(fIoat)(++x*y);

System.out.printIn(z);

)

)

A.40.0B.42.0C.52.0D.52.5

5.下面不是合法的條件語句的一項(xiàng)是(B)o

A.if(a>b){,?,}B.if(a=1){??,)C.if(a>b&&b>c){",}D.if

(3>2){??-)

6.以下說法正確的是(C)o

inti=10,t=0;

do

t=i++;

}while(t<=10);

A.一次都不執(zhí)行B.執(zhí)行一次C.執(zhí)行兩次D.無限次執(zhí)行

二、填空題

1.在選擇結(jié)構(gòu)中break語句用于跳出循環(huán)語句。

2.條件語句控制程序的流程是通過判斷條件表達(dá)式來進(jìn)行的。

3.Java的3種循環(huán)語句是for、while、do-whiIe<>

4.在Java程序中,do-whiIe循環(huán)語句塊至少被執(zhí)行1次。

5.在for循環(huán)語句的循環(huán)體部分可以使用語句進(jìn)行多個(gè)操作。

三、問答題

1.算法有哪些基本特征?

答案:輸入、輸出、有窮性、確定性、可行性。

2.簡述whiIe語句與do-whiIe語句的區(qū)別。

答案:whiIe先做條件判斷,然后執(zhí)行循環(huán)體;do-whiIe先執(zhí)行循環(huán)體,再做條件判

斷。

3.switch語句的default語句位置是固定的嗎?

答案:switch里面跟位置無關(guān),前提是每個(gè)case都加了break。

4.Java對(duì)switch語句的開關(guān)常量有什么要求?

答案:變量類型只能為byte、short、int或者char。

5.試比較break和continue語句的區(qū)別?

答案:continue語句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行;break語句則是

結(jié)束整個(gè)循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立。

四、程序分析題

1.寫出下列程序的輸出的結(jié)果。

pubIiccIassTesti{

pubIicstaticvoidmain(String[]args)(

inti,j,x=0;

for(i=0;i<2;i++){

x++;

for(j=0;j<3;j++){

if(j%2==1)continue;

x++;

)

x++;

)

System,out.printf("x=%d",x);

1

1

輸出結(jié)果為:

x=8

2.寫出執(zhí)行下列代碼之后輸出的結(jié)果。

pubIiccIassTest2{

pubIicstaticvoidmain(String[]args){

intsum=2,a=3,b-5,c=7;

while(a<b){

while(b!=c){

sum+=b;

b++;

]

b=4;

a++;

)

System.out.printIn(sum);

I

)

輸出結(jié)果為:

13

3.分析下列程序的功能。

pubIicclassTest3{

pubIicstaticvoidmain(String[]args){

inti,j,k,a□={3,6,19,34],b[]={1,5t20,30);

intc□二newint[a.length+b.length];

i=j=k=O;

while(i<a.Iength&&j<b.length)

if(a⑴

c[k++]=a[i++];

eIse

c[k++]=b[j++];

whiIe(i<a.Iength)

c[k++]=a[i++];

while(j<b.length)

c[k++]=b[j++];

}

)

答案:合并兩個(gè)從小到大排序的數(shù)組,結(jié)果也是從小到大的順序。

4.分析下列程序的功能。

pubIiccIassTest4{

pubIicstaticvoidmain(String[]args)(

Stringx="programming",y="Front";

inti=0;

whiIe(i<x.Iength()&&i<y.Iength()){

if(x.charAt(i)==y.charAt(i))

System.out.printIn(x.charAt(i));

i++;

答案:查找位置相同字符相同的所有字符。

5.分析下列程序的功能。

pubIiccIassTest5{

pubIicstaticvoidmain(String[]args){

inti,j,k;

for(i=0;i<=3;i++)(

for(j=0;j<=2-i;j++)

System,out.print(n");

for(k=0;k<=2*i;k++)

System.out.print(0*");

System,out.printIn();

)

for(i=0;i<=2;i++){

for(j=0;j<=i;j++)

System.out.print("");

for(k=0;k<=4-2*i;k++)

System.out.print("**');

System,out.printIn0;

)

J

)

打印如下圖形:

*

***

***

*

五、程序填空題

1.以下程序用“輾轉(zhuǎn)相除法”求兩個(gè)正整數(shù)的最大公約數(shù)。算法描述如下:

(1)分別用m,n保存這兩個(gè)整數(shù),確保m保存較大數(shù)。

(2)令r等于m除n的余數(shù)。

(3)若m能被n整除,則執(zhí)行步驟(7),否則執(zhí)行步驟(4)。

(4)令m等于n,而r做為新的除數(shù)。

(5)求出新的余數(shù)r

(6)重復(fù)步驟(3)

(7)輸出n,n即為最大公約數(shù)。

請(qǐng)根據(jù)算法的描述,補(bǔ)全代碼。

importjava.utiI.

pubIiccIassGreatestDivisor{

pubIicstaticvoidmain(String[]args){

intm,n,t,r;

Scannerinput=newScanner(System.in);

m=input.nextInt();

n=input,nextInt();

if(m<n){t=n;;m=t;}

r=m%n;

while(r>0){

m二n;

n=r_____;

r=m%b_____;

)

System.out.printIn(n);

)

)

2.求出200以內(nèi)可被17整除的最大正整數(shù),請(qǐng)?zhí)羁铡?/p>

pubIiccIassMaxInt{

pubIicstaticvoidmain(String[]args){

inti;

for(inti=200;i>0;—)

if(i%17==0)break;

System,out.printIn(i);

)

)

3.以下程序打印下列的圖形,請(qǐng)?zhí)羁铡?/p>

#

##

###

####

publiccIassPrintGraphics{

pubIicstaticvoidmain(String[]args){

inti,j;

for(i=1;i<=4;i++){

for(j=1;j<=i;j++)

System.out.print(;

System,out.printIn();

)

)

1

4.下列程序?qū)崿F(xiàn)查找某一字符串是否包含有“hell?!保?qǐng)?zhí)羁铡?/p>

pubIiccIassFindChar{

publicstaticvoidmain(String[]args){

Strings="heIIoJava";

inta二s.indexOf("hello");

//a位找到hello的下標(biāo),找不到則返回7

if(a>=0)

System,out.print("包含字符串heIIo");

eIse

System.out.print("不包含字符串heIIo");

)

)

5.輸入一組數(shù),并求出該數(shù)組中的最大數(shù)和最小數(shù),請(qǐng)?zhí)羁铡?/p>

importjava.utiI.

pubIiccIassArrayMaxMin{

pubIicstaticvoidmain(String[]args){

int[]a=newint[10];

inti,max,min;

Scannerinput=newScanner(System,in);

for(i=0;i<a.Iength;i++)

a[i]=input.nextInt();

max=a[0],min=a[0];

for(i=1;i<a.length;i++){

if(max<a[i])max=a[i];

if()min=a[i];

)

System,out.printf("最大數(shù)是:%d,最小數(shù)是:%d\n",max,min);

)

)

六、程序設(shè)計(jì)題

1.百馬百擔(dān)問題:100匹馬馱100擔(dān)貨物,其中大馬馱3擔(dān)貨,中馬馱2擔(dān),兩匹小

馬馱1擔(dān)。問共有大、中、小馬各多少匹?編程實(shí)現(xiàn)求解的算法。

publiccIasstest_3_6_1{

pubIicstaticvoidmain(String[]args){

inthb,hm,hl;//大馬,中馬,小馬

for(hb=0;hb<100;++hb)〃大馬范圍0-99

for(hlR;hl〈100;hl+=2)//小馬范圍0-99

(

hm=100-hb-hI;//中馬

if(3*hb+2*hm+hl/2==100&&hm>0)〃100擔(dān)貨且保證中馬范圍大于0

(

System,out.printIn(,'hb="+hb+",hm="+hm+",hl=H+hI);//輸出

)

)

1

)

2.有一函數(shù):

/x(x<0)

y=J3x-2(0Wx<10)

4x(x210)

編寫一程序,對(duì)輸入的x值,求出對(duì)應(yīng)的y值。

importjava.util.Scanner;

pubIiccIasstest_3_6_2{

pubIicstaticvoidmain(String[]args){

doublex=0.0,y=0.0;

Scannerinput=newScanner(System,in);

whiIe(input.hasNextDoubIe()){

x=in.nextDoubIe();

if(x<0)

y=x;

eIsif(x>=10)

y=4*x;

eIse

y=3*x-2;

System,out.printIn("x="+x+"ly="+y);

1

)

)

3.求水仙花數(shù):水仙花數(shù)是這樣的一個(gè)三位正整數(shù),此數(shù)各數(shù)字的立方之和恰好等于

該數(shù)之值。例如153就是一個(gè)水仙花數(shù):153=13+53+3、編程找出所有這樣的水仙花數(shù)并輸

出到屏幕。

pubIiccIasstest_3_6_3{

pubIicstaticvoidmain(String[]args){

inthundred,ten,bits;

System,out.printIn("水仙花數(shù)為:");

for(inti=100;i<=999;i++){

hundred=i/100;

ten=i%100/10;

bits=i%10;

if(i==hundred*hundred*hundred+ten*ten*ten+bits

*bits*bits){

System,out.print(i+"");

)

1

)

)

4.編寫程序,計(jì)算1+1/1!+1/2!+1/3!+???+1/n!的和。

importjava.util.Scanner;

pubIiccIasstest_3_6_4{

pubIicstaticvoidmain(Stringargs[]){

intri,repeat;

doubles=1.0,t=1.0;

Scannerin=newScanner(System,in);

repeat=in.nextInt();

if(repeat<0)

System.out.printIn("pIeaseinputanumber>0");

eIse{

for(ri=1;ri<=repeat;ri++){

t=t/ri;

s+=t;

)

System.out.printIn("resuIt="+s);

)

}

)

5.猴子吃桃問題。猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過癮,又多吃了

一個(gè),第二天早上吃了一半又多吃了一個(gè)。以后每天都是如此,當(dāng)?shù)?0天想吃時(shí),就只剩

下一個(gè)了。問第一天共摘了多少個(gè)?

publicclasstest_3_6_5{

pubIicstaticvoidmain(Stringargs[]){

intnum=1;

for(inti=9;i>0;i-){

num=num+1;

num=num*2;

)

System.out.printIn(num);

}

)

6.打印九九乘法口訣表。

publicclasstest_3_6_6{

publicstaticvoidmain(String[]args){

for(inti=1;i<=9;i++){

for(intj=1;j<=i;j++){

System.out.print(j+"*"+i+"="+j*i+"\t");

if(j==i){

System.out.printIn();

)

1

)

)

)

7.給一段文字加密,加密方式為將第1個(gè)字母變成第26個(gè)字母,第i個(gè)字母變成第

(26T+1)個(gè)字母,非字母字符不變,即:

A—Z,a—z

BTY,bTy

ZTA,zTa

要求編程加密輸入的字符串并輸出加密后的字符串。

importjava.util.Scanner;

pubIiccIasstest_3_6_7{

pubIicstaticvoidmain(String[]args){

Scannerin=newScanner(System,in);

Stringstr=in.next();

StringBuffers二newStringBuffer();

for(inti=0;i<str.Iength();i++){

if(Character,isLetter(str.charAt(i))){

if(str.charAt(i)=='z'||str.charAt(i)二二'Z')

s.append((char)(str.charAt(i)-25));

eIse

s.append((char)(str.charAt(i)+1));

)

eIse

s.append(str.charAt(i));

)

System.out.printIn(s);

)

)

第4章類與對(duì)象

習(xí)題4

一、選擇題

1.具有屬性和行為或方法的實(shí)體是(D)。

A.類B.方法C.構(gòu)造方法D.對(duì)象

2.下面類的聲明中正確的是(B)。

A.protectedprivateTest{■,,)

B.pubIicabstractcIassTest{,■,}

C.abstractfinalcIassTest{,,,}

D.abstractprivateTest;

3.在(C)情況下,系統(tǒng)會(huì)提供一個(gè)默認(rèn)的構(gòu)造方法。

A.在定義任何類的時(shí)候

B.在至少定義了一個(gè)構(gòu)造方法的時(shí)候

C.當(dāng)定義的類沒有其他構(gòu)造方法的時(shí)候

D.在定義抽象類的時(shí)候

4.下面對(duì)于Test類的構(gòu)造方法中正確的是(C)。

A.pubIicvoidTest(){,"}B.pubIicstaticTest(){,,,}

C.pubIicTest(){,,,)D.pubIicTesti(){,,■)

5.對(duì)象使用時(shí),下面描述錯(cuò)誤的是(B)0

A.通過運(yùn)算符調(diào)用成員變量和方法。

B.通過成員變量的訪問權(quán)限設(shè)定限制自身對(duì)這些變量方法的調(diào)用。

C.將一個(gè)對(duì)象申明為類的成員時(shí),必須在使用前為其分配內(nèi)存。

D.在方法中使用對(duì)象作為參數(shù)時(shí),采用引用調(diào)用。

6.用來指向當(dāng)前對(duì)象或類實(shí)例的關(guān)鍵字是(A)。

A.thisB.theC.thatD.for

7.Java編程所必須的默認(rèn)引用包為(B)。

A.java.sysB.java.IangC.java.newD.java.utiI

二、填空題

1.對(duì)象的狀態(tài)和行為是對(duì)象的主要屬性,前者對(duì)應(yīng)類的屬性,行為又稱為

對(duì)象的操作,對(duì)應(yīng)類的方法。

2.類是組成Java程序的基本要素,它的實(shí)現(xiàn)包括屬性和方法

兩部分。

3.在Java的程序設(shè)計(jì)中,使用關(guān)鍵字new創(chuàng)建對(duì)象時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用

對(duì)對(duì)象進(jìn)行初始化。

4.用static修飾符修飾的方法稱為類方法或靜態(tài)方法,它是屬

于整個(gè)類的方法法,它不需要實(shí)例化便可以被訪問。

5.為了能使用Java中已提供的類,需要用package語句來引入所需要的類。

三、問答題

1.什么是對(duì)象?什么是類?請(qǐng)舉例說明。

答:對(duì)象是對(duì)客觀事物的抽象,類是對(duì)對(duì)象的抽象。比如學(xué)校是類,中南大學(xué)是對(duì)象。

2.類定義的基本格式是什么?有哪些組成要素?各起什么作用?

答:

訪問修飾符class類名(

方法和屬性

屬性用于定義該類或該類的實(shí)例所包含的數(shù)據(jù),

方法則用于定義該類或該類的實(shí)例的行為特征或功能實(shí)現(xiàn)。

訪問修飾符在package的中訪問限制

3.如何創(chuàng)建一個(gè)對(duì)象?對(duì)象的成員如何表示?

答:使用new來創(chuàng)建,使用'來訪問

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論