C Primer第5版 第五章課後練習答案

2022-06-07 01:12:09 字數 3385 閱讀 3895

空語句只包含有乙個單獨的分號,如果在程式的某個地方,語法上需要一條語句但邏輯上不需要,應使用空語句。

指用花括號括起來的語句和宣告的序列。如果在程式的某個地方,語法上需要一條語句但邏輯上需要多條,則用塊。

#include int

main()

#include int

main()

#include int

main()

while (start <=end)

std::cout

<< start

}

可讀性降低了。

(a)while語句不斷迴圈,直到迭代器指向尾後迭代器。

(b)find()函式返回值賦給變數status,若所賦值為真則不斷迴圈,因此退出迴圈後的status必為假。

int

main()

;

string

lettergrade;

if (grade < 60

) lettergrade = scores[0

];

else

lettergrade = scores[(grade - 50) / 10

]; cout

<}

int

main()

;

string lettergrade = grade < 60 ? scores[0] : scores[(grade - 50) / 10

]; cout

<}

int

ival1, ival2;

if (ival1 !=ival2)

ival1 = ival2;//

少了分號

else ival1 = ival2 = 0;

if (ival1 minval=ival1;

occurs = 1;//

因為沒有花括號將兩句組成復合語句因此occurs必然在條件語句結束後執行

if (int ival =get_value())

cout

<< "

ival =

"<< ival

cout

<< "

ival = 0\n

";

//第二個if中的ival未定義,ival的作用域僅限於第乙個if迴圈中

if (ival = 0

) ival = get_value();

//if中的判斷應寫為 if (0 == ival),因為ival會將所賦的值當作判斷條件,此時if語句必然失敗

「懸垂else」:我們怎麼知道某個給定的else是和哪個if匹配呢?c++規定else與離它最近的尚未匹配的if匹配

char

ch;unsigned acnt = 0, ecnt = 0, icnt = 0, ocnt = 0, ucnt = 0

;while (cin >>ch)

unsigned acnt = 0, ecnt = 0, icnt = 0, ocnt = 0, ucnt = 0

;while (cin >>ch)

}

char

ch;unsigned acnt = 0, ecnt = 0, icnt = 0, ocnt = 0, ucnt = 0, spacecnt = 0, tablecnt = 0, rowcnt = 0

;while (cin >>ch)

}

char ch,ch_before='';

unsigned acnt = 0, ecnt = 0, icnt = 0, ocnt = 0, ucnt = 0, ffcnt = 0, flcnt = 0, ficnt = 0

;while (cin >>ch)

ch_before =ch;

}

(a)少加break,導致程式執行匹配成功的標籤**後跨越case邊界執行其他**

(b)控制流可能繞過乙個在作用域內初始化的變數

(c)case標籤必須是整型常量表示式,不能用,代替case 1:case 2:

(d)case標籤必須是整型常量表示式

int

main()

strcnt = 1

; }

str_before =str;

}if(flag)

else

}

(a):ix應該在迴圈外定義

(b):缺少乙個;號,沒有初始化ix

(c):++sz,永遠也結束不了

我更傾向於使用for迴圈,因為for迴圈比較簡潔

template bool compare(vectorconst& a, vectorconst&b)

for (decltype(size) i = 0; i < size; i++)

return

true

;}

(a):列印語句,然後傳入兩個值並輸出兩個值的和。do後面那麼多條語句,需要使用花括號

(b):因為do迴圈體中肯定還需要使用到ival這個變數,所以應該將其定義在迴圈體外部

(c):同上

do

while (cin);

int

main()

str_pre =str;

} while

(cin);

if (flag)cout << "

沒有任何單詞是連續重複出現的

"<}

int

main()

str_pre =str;

} while

(cin);

if (flag)cout << "

沒有任何單詞是連續重複出現的

"<}

int

sz;do

while (sz <= 0);

int

num1,num2;

while (cin >> num1 >>num2)

int

main()

}

int

main()

catch

(std::runtime_error err)

} }

c primer 第五版課後習題 第五章

第五章主要講了函式 include include include include using namespace std void test 5 9 std cout 母音字母個數為 t cnt endl void test 5 10 std cout 母音字母a的個數為 t cnt a endl...

第五章 課後習題

第一題 輸入乙個字串,將該字串中下標為偶數的字元組成新串並通過字元格式化方式顯示 str1 input 請輸入乙個字串 str2 for i in range len str1 if i 2 0 str2 str1 i print format str2 第二題 編寫程式,生成乙個由15個不重複的大...

c primer 筆記,第五章

case標籤必須是整型常量表示式 在case語句中,不允許跨過變數的初始化語句直接跳轉到該變數作用域內的另乙個位置 在範圍for語句中,預存了end 的值,一旦在序列中新增 刪除 元素,end函式的值就可能變得無效了 尋找處理 的過程域函式呼叫鏈剛好相反,是沿著程式的執行路徑逐層回退,直到找到適當型...