C++ Primer Plus習(xí)題及答案-第三章


習(xí)題選自:C++ Primer Plus(第六版)
內(nèi)容僅供參考,如有錯(cuò)誤,歡迎指正 !
文章首發(fā)微信公眾號:iDoitnow

c++的基本類型分為兩組:一組由存儲為整數(shù)的值組成,另外一組由存儲為浮點(diǎn)格式的值組成。整數(shù)之間通過存儲時(shí)使用的內(nèi)存量及有無符號來區(qū)分。
short至少16位
int至少與short一樣長
long至少32位,且至少與int一樣長
long long至少64位,且至少與long一樣長


復(fù)習(xí)題
1.為什么c++有多種整形?
有多種整形類型,可以根據(jù)特定需求選擇最合適的類型。例如,可以使用short來存儲空格,使用long來確保存儲容量,也可以尋找可提高特定計(jì)算的速度的類型。
2.聲明與下述描述相符的變量。
a.short整數(shù),值為80
b.unsigned int整數(shù),值為42110
c.值為3000000000的整數(shù)
3.c++提供了什么措施來防止超出整形的范圍?
c++沒有提供自動防止超出整型限制的功能,可以使用頭文件climits來確定限制情況。
4.33L與33之間有什么區(qū)別?
常量33L的類型為long,常量33類型為int。
5.下面兩條c++語句是否等價(jià)?
這兩條語句并不真正等價(jià),雖然對于某些系統(tǒng)來說,他們是等效的。最重要的是,只有在使用ASCII碼的系統(tǒng)上,第一條語句才將得分設(shè)置為字母A,而第二條語句還可用于使用其他編碼的系統(tǒng)。其次,65是一個(gè)int常量,而‘A’是一個(gè)char常量。
6.如何使用c++來找出編碼88表示的字符?指出至少兩種方法。
7.將long賦值給float變量會導(dǎo)致舍入誤差,將long值賦給double變量呢?將long long值賦給double變量呢?
這個(gè)問題取決于這兩個(gè)類型的長度。如果long為4個(gè)字節(jié),則沒有損失。因?yàn)樽畲蟮膌ong值是20億,及有10位數(shù)。由于double提供至少13位有效數(shù)字,因而不需要進(jìn)行任何舍入。long long類型可提供19位有效數(shù)字,超過了double保證的13位有效數(shù)字。
8.下列c++表達(dá)式的結(jié)果分別是多少?
a.89+2
b.63/4
c.3/46
d.6.03/4
e.15%4
a=74;b=4;c=0;d=4.5;e=3
9.假設(shè)x1和x2是兩個(gè)double變量,你要將他們作為整數(shù)相加,再將結(jié)果賦給一個(gè)整型變量。請編寫一條完成這項(xiàng)任務(wù)的c++語句。如果要將他們作為double值相加并轉(zhuǎn)換為int呢?
要將他們作為double類型相加,在進(jìn)行轉(zhuǎn)換,可采取下述方式之一:
10.下面每一條語句的變量都是什么類型?
a.auto cars=15;
b.auto iou=150.37f;
c.auto level='B';
d.auto crat=U'/U00002155';
e.auto fract=8.25f/2.5;
a. int
b. float
c. char
d. char32_t
e. double
編程練習(xí)
1.編寫一個(gè)小程序,要求用戶使用一個(gè)整數(shù)指出自己的身高(單位為英寸),然后將身高轉(zhuǎn)換為英尺,該程序使用下劃線字符來指示輸入位置。另外,使用一個(gè)const符號來表示轉(zhuǎn)換因子。
2.編寫一個(gè)程序,要求以幾英尺幾英寸的方式輸入其身高,并以磅為單位輸入其體重。(使用3個(gè)變量來存儲這些信息。)該程序報(bào)告其BMI(Body Mass Index ,體重指數(shù))。為了計(jì)算BMI,該程序以英寸的方式指出用戶的身高(一英尺為十二英寸),并將以英寸為單位的身高身高轉(zhuǎn)換為以米為單位的身高(1英寸=0.0254米)。然后,將以磅為單位的體重轉(zhuǎn)換為千克為單位的體重(1千克=2.2磅)。最后,計(jì)算相應(yīng)的BMI-體重(千克)除以身高(米)的平方。用符號常量表示各種轉(zhuǎn)換因子。
3.編寫一個(gè)程序,要求用戶以度分秒的方式輸入一個(gè)緯度,然后以度為單位顯示該緯度。1度為60分,1分等于60秒,請以符號常量的方式表示這些值。對于每個(gè)輸入值,應(yīng)使用一個(gè)獨(dú)立的變量存儲它。下面是該程序運(yùn)行時(shí)的情況:
Enter a latitude in degrees,minutes,and seconds:
First,enter the degrees:37
Next,enter the minutes of arc:51
Finally,enter the seconds of arc:19
37 degrees,51 minutes,19 seconds =37.8553 degrees
4.編寫一個(gè)程序,要求用戶以整數(shù)方式輸入秒數(shù)(使用long或long long變量存儲),然后以天、小時(shí)、分鐘和秒的方式顯示這段時(shí)間。使用符號常量來表示每天有多少小時(shí)、每小時(shí)有多少分鐘以及每分鐘有多少秒。該程序的輸出應(yīng)與下面類似:
Enter the number of seconds:3160000
3160000 seconds = 365 days,17 hours,46 minutes,40 seconds
5.編寫一個(gè)程序,要求用戶輸入全球當(dāng)前的人口和美國當(dāng)前的人口(或其他國家的人口)。將這些信息存儲在long long變量中,并讓程序顯示美國(或其他國家)的人口占全球人口的百分比。該程序的輸出與下面類似:
Enter the world's population:6898758899
Enter the population of the US:310783781
The population of the US is 4.50492% of the world population.
6.編寫一個(gè)程序,要求用戶輸入驅(qū)車?yán)锍蹋ㄓ⒗铮┖褪褂闷土浚觼觯缓笾赋銎嚭挠土繛橐患觼龅睦锍獭H绻敢?,也可以讓程序要求用戶以公里為單位輸入距離,并以升為單位輸入汽油量,然后指出歐洲風(fēng)格的結(jié)果-即每100公里的耗油量(升)。
7.編寫一個(gè)程序,要求每個(gè)用戶按歐洲風(fēng)格輸入汽車的耗油量(每100公里消耗汽油量(升 )),然后將其轉(zhuǎn)換為美國風(fēng)格的耗油量-每加侖多少英里。注意,除了使用不同的單位計(jì)量外,美國方法(距離/燃料)與歐洲方法(燃料/距離)相反。100公里等于62.14英里,1加侖等于3.875升。因此,19mpg大約合12.41/100km,127mpg大約合8.71/100km。