版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 傳染病及食源性疾病培訓(xùn)后測(cè)試題試題(+答案)
- 普通獸醫(yī)學(xué)題庫及答案
- 針灸學(xué)考試筆試試題及答案
- 職業(yè)病防治考試試卷(及答案)
- 銀行專業(yè)考試題庫及答案
- 2025院感理論考試題附有答案
- 廣東省幼兒園教師招聘筆試真題及答案詳解
- 物流服務(wù)師真題及答案
- 九級(jí)名著考試題及答案
- 環(huán)境監(jiān)測(cè)試題配答案解析
- DB21-T 4279-2025 黑果腺肋花楸農(nóng)業(yè)氣象服務(wù)技術(shù)規(guī)程
- 2026年上海高考英語真題試卷+解析及答案
- 2024-2025學(xué)年湖北省咸寧市高二生物學(xué)上冊(cè)期末達(dá)標(biāo)檢測(cè)試卷及答案
- 初會(huì)經(jīng)濟(jì)法真題
- 池塘承包權(quán)合同
- JTG F40-2004 公路瀝青路面施工技術(shù)規(guī)范
- 三片飲料罐培訓(xùn)
- 副園長個(gè)人發(fā)展規(guī)劃
- 第九屆、第十屆大唐杯本科AB組考試真總題庫(含答案)
- 統(tǒng)編部編版九年級(jí)下冊(cè)歷史全冊(cè)教案
- 商業(yè)地產(chǎn)策劃方案+商業(yè)地產(chǎn)策劃方案基本流程及-商業(yè)市場(chǎng)調(diào)查報(bào)告(購物中心)
評(píng)論
0/150
提交評(píng)論