C Primer第五版 5 4 2節練習

2021-07-05 07:12:35 字數 1417 閱讀 6170

練習5.15:說明下列迴圈的含義並改正其中的錯誤。

(a). for (int ix = 0; ix != sz; ++ix)  

if( ix != sz)

//…

答:錯誤原因,if中,ix只在for迴圈中有效

改正:

for (int ix = 0; ix != sz; ++ix)
(b).

int ix;

for (ix != sz; ++x)

答:錯誤原因,ix沒有初始化。

改正:for (int ix = 0; ix != sz; ++x)

(c).for (int ix = 0; ix != sz; ++ix, ++sz)
答:sz沒有明確定義,因此條件ix != sz可能一直成立,需要在語句裡進行判斷,將迴圈停止。

練習5.16:while迴圈特別適用於那種條件保持不變,反覆執行操作的情況,例如,當未達到檔案末尾時不斷讀取下乙個值。for迴圈則更像是在按步驟迭代,它的索引值在某個範圍內依次變化。根據每種迴圈的習慣用法各自編寫一段程式,然後分別用另一種迴圈改寫。如果只能用一種迴圈,你傾向於使用哪種呢?為什麼?

答:如果只能一種迴圈,我更傾向於for迴圈,原因是,習慣了,按步驟迭代,跑一遍到底。

個人覺得用性格來形容的話,for更暴力一點,不管三七二十一,就是要跑到底,而while更理性一點,會不斷檢查。

程式見雲盤程式練習5.16,簡單的乙個求和比較。

練習5.17:假設有兩個包含整數的vector物件,編寫一段程式,檢驗其中乙個vector物件是否是另乙個的字首。為了實現這一目標,對於兩個不等長的vector物件,只需挑出長度較短的那個,把它的所有元素和另乙個vector物件比較即可。例如,如果兩個vector物件的元素分別是0,1,1,2和0,1,1,2,3,5,8,則程式的返回結果為真。

答:見雲盤程式練習5.17。

練習5.16

#include 

using

namespace

std;

int main()

cout

<< "for sum :"

<< sum << endl;

cout

<< "while sum :"

<< sum2 << endl;

return

0;}

練習5.17

#include 

#include

#include

using

namespace

std;

int main()

return

0;}

C Primer第五版 2 4 3節練習

練習2.30 對於下面的這些語句,請說明物件被宣告成了頂層const還是底層const?const int v2 0 v2的值不能被改變,所以這是乙個頂層const int v1 v2 int p1 v1,r1 v1 const int p2 v2 p2存放的是v2的位址,不能間接改變v2的值,但p...

C Primer第五版 2 5 3節練習

練習 2.36 關於下面的 請指出乙個變數的型別以及程式結束時它們各自的值。include int main 練習 2.37 賦值是會產生引用的一類典型表示式,引用的型別就是左值的型別。也就是說,如果i是int,則表示式 i x的型別是int 根據這一特點,請指出下面的 中每乙個變數的型別和值。in...

C Primer第五版 3 2 2節練習

練習3.2 編寫一段程式從標準輸入中一次讀入一整行,然後修改該程式使其一次讀入乙個詞。練習3.3 請說明string類的輸入運算子和getline函式分別是如何處理空白字元的。練習 3.4 編寫一段程式讀入兩個字串,比較其是否相等並輸出結果。如果不相等,輸出較大的那個字串。改寫上述程式,比較輸入的兩...