天天看點

《Java程式設計習題精析與實驗指導》一2.2 習題解析

一、選擇題

在java程式設計語言中,下面______類型可以表示整數基本資料類型。

a. single b. byte c. double d. char

答案:b

解析:在java的基本資料類型中,single類型是不存在的,char表示字元類型,double表示雙精度類型,byte表示整數類型中的位元組型類型,故答案b正确。

float型資料在計算機内所占用的存儲空間為______位元組。

a. 2 b. 4 c. 8 d. 16

解析:java的float型資料在計算機内所占用的存儲空間為32位(bit),即4位元組,故答案b正确。

下面______是java資料類型中int型的取值範圍。

a. –27~27–1 b. 0~216–1 c. –215~215–1 d. –231~231–1

答案:d

解析:java的int型資料在計算機内所占用的存儲空間為32位(bit),減去1位符号位,還有31位。由于任何資料在計算機中的存放形式都是二進制的,java規定:int所占的4位元組數中,對于正數,它的最高位是0,是以它最大能表示的數是01111…(0後面共31個1),即十進制數231–1;而對于負數,能表示的最小數的二進制數為1000…(1後面共31個0),化為十進制數即為–231,故答案d正确。

以下字元常量中不合法的是______。

a. '#' b. '&' c."p" d. '數'

答案:c

解析:java語言嚴格規定:雙引号用于表示字元串常量,單引号用于表示字元常量,故答案c正确。

以下聲明的變量中,______是不合法的。

a. inter_net b. i_nong c. hello d. *member

解析:java語言約定:變量名一般以小寫字母開頭,也就是說:如有特殊需要,也可以以大寫字母開頭;變量名中間可以使用下劃線;變量名不允許使用已規定的關鍵字以及運算符,而“*”是java已定義的乘法運算符,故不允許在變量聲明中使用。是以答案d正确。

以下選項中的變量都已正确定義并且已被賦初值,不合法的表達式是______。

a. m >= 6 = = n>1 b. 'm'+6 c. 'm'=8 d. 'm'%8

解析:上述表達式中,答案a是關系表達式,其運算結果為邏輯值;答案b為算術表達式,運算時系統會進行字元型資料到整型資料的自動轉換,因而是合法的表達式;答案d的含義與答案b是一樣的;答案c是指派表達式,然而根據規定指派表達式左邊隻能是變量,因而該表達式不合法。故答案c正确。

設m、n、x、y為已指派的 int 型變量,下列______的運算結果屬于非邏輯值。

a. m!=n & x%y < m b. m++ = =m+n+x+y

c. ++m*b––+y d. m+n>=x+y

解析:一般來說,運算結果屬于非邏輯值的運算隻能是關系運算或邏輯運算,上述四則表達式中隻有答案c中不含有任何關系運算符或邏輯運算符,顯然該表達式的運算結果為整型值,故答案c正确。

定義a為int類型的變量并且已被賦初值,則合法的指派語句是______。

a. a +1==4; b. a+=a*8; c. a=6.6f; d. int a=18;

解析:上述四個答案中,答案a為表達式,顯然不是指派語句;答案c的指派形式為浮點類型,與變量聲明的類型不符;答案d中對變量進行了重複聲明,這也是不允許的;答案b使用了複合指派運算符,屬于合法的指派語句。故答案b正确。

有下列語句:

e=integer. parseint(""+3+3);

system.out.println(e-2.5);

執行後的輸出結果是______。

a. 30.5 b. 3.5 c. 332.5 d. 8.5

答案:a

解析:根據java運算符的運算規則,對于表達式“""+3+3”,由于""為字元串資料,故系統将其後的資料全部轉換為字元串,運算符“+”在此作為字元串的連字元處理,是以“""+3+3”的運算結果為字元串“33”,然後被轉換為整型數33指派給變量e,在輸出語句的表達式中,33-2.5結果為30.5,故答案a正确。

執行下列程式段:

no;

int a=19,b=8;

no=(a%b>5)?a+b:a-b;

system.out.println(no);

輸出結果為______。

a. 2 b. 9 c. 11 d. 27

解析:在完成指派的前提下,a%b結果為3,a+b結果為27,a–b結果為11,根據條件運算符的運算規則,由于a%b不大于5,則整個表達式取a–b的結果。故答案c正确。

下面的程式段執行後的結論是______。

m=2,n=2

m+=m-=m*m;

n-=n*n;

n=n+n;

a. m=n b. m>n c. m答案:b

解析:本程式段由4個語句組成,第1句實作變量聲明及初始化功能,當執行第2句時,由于m被指派為2,是以整個語句所實作的功能等同于m=2+2-2×2=0;而第3句實作的功能等同于n=2-2×2=-2;第4句的執行結果為n=-2-2=-4。相比較之下,顯然m>n,故答案b正确。

下列______方法不屬于java.lang.math類(方法名相同即可)。

a. sin() b. sqr() c. abs() d. random()

解析:在java.lang.math類中:sin()為實作數學正弦函數運算的方法,abs()為實作絕對值運算的方法;random()為實作取0~1之間的随機數的方法;該類中并不存在sqr()方法。故答案b正确。

二、程式填空

下面的程式實作如圖2-1所示的輸出,請将程式補充完整。

《Java程式設計習題精析與實驗指導》一2.2 習題解析

程式如下:

答案:(1) n

   (2)(n+1)

解析:根據java輸出語句的工作原理以及題目的要求,在第一個空中很自然能想到答案是n;在第二個空中,所應産生的資料為比n大1,故應使用表達式n+1,值得注意的是該表達式兩邊的括号是不能省略的,因為println()方法在對字元串進行處理時,遵循從左至右的處理方式,若表達式中不含括号,那将先處理“你有”+n,使之成為“你有2”,然後再處理“你有2”+1,使之成為“你有21”,再連接配接最後的字元串,這時的結果就會變成“你有21隻狗”了。