第五章 C Primer條件語句的習題答案

2021-09-18 06:24:01 字數 3770 閱讀 5949

(1)修改下面**中的錯誤。

(a)if (ival1 !=ival2)

ival1 = ival2

else ival1 = ival2 = 0;

解析:ival1 = ival2 ; //缺少乙個分號

(b)if (ival1 < minva1)

minva1 = ival1;

occurs=1;

解析:使用了兩條語句,需要使用花括號括起來

(c)if (int iva1 = get_value())

cout <<"ival = " <(2)什麼是「懸垂else」?c++語言中是如何處理else子句?

解析:懸垂else:c++規定,else與其最近的尚未匹配的if相匹配。

(3) 編寫一段程式,使用一系列if語句統計從 cin 讀入的文字中有多少母音字母?

#include #include #include using namespace std;

int main()

else if (cval == 'e')

else if (cval == 'i')

else if (cval == 'o')

else if (cval == 'u')

}cout << "母音字母a的個數為:" << sum_a << endl;

cout << "母音字母e的個數為:" << sum_e << endl;

cout << "母音字母i的個數為:" << sum_i << endl;

cout << "母音字母o的個數為:" << sum_o << endl;

cout << "母音字母u的個數為:" << sum_u << endl;

}解析:在輸入字元後按eeter鍵

然後按ctrl+z進行除錯。

(4)我們之前實現的統計母音字母的程式存在乙個問題:如果母音字母以大寫形式出現,不會被統計在內。編寫一段程式,即統計母音字母的小寫形式,也統計大寫形式,也就是說,新程式遇到『a』和『a』都應該遞增acnt的值,以此類推。

#include #include #include using namespace std;

int main()

}cout << "母音字母a的個數為:" << char_a << endl;

cout << "母音字母e的個數為:" << char_e << endl;

cout << "母音字母i的個數為:" << char_i << endl;

cout << "母音字母o的個數為:" << char_o << endl;

cout << "母音字母u的個數為:" << char_u << endl;

}

(5)修改統計母音字母的程式,使其也能統計空格、製表符、換行符的數量。

#include #include #include using namespace std;

int main()

}cout << "母音字母a的個數為:" << char_a << endl;

cout << "母音字母e的個數為:" << char_e << endl;

cout << "母音字母i的個數為:" << char_i << endl;

cout << "母音字母o的個數為:" << char_o << endl;

cout << "母音字母u的個數為:" << char_u << endl;

cout << "空格的個數為:" << sum_space << endl;

cout << "製表符的個數為:" << sum_table << endl;

cout << "換行符的個數為:" << sum_newline << endl;

}

(6)修改統計母音字母的程式,使其也能統計以下含有兩個字元的字串行的數量:ff、f1 和 fi。

#include #include #include using namespace std;

int main()

case 'i':

++char_i;

break;

case 'o':

case 'o':

++char_o;

break;

case 'u':

case 'u':

++char_u;

break;

case ' ':

++sum_space;

break;

case '\t':

++sum_table;

break;

case '\n':

++sum_newline;

break;

case 'f':

if (char_before == 'f')

break;

case 'l':

if (char_before == 'f')

break;

}char_before = cval;//將當前的字元賦給char_before,作為下次判斷的依據

//如果下次判斷中char_before為f字元,那麼只要再判斷當前字元是否為f、l、i即可

}cout << "母音字母a的個數為:" << char_a << endl;

cout << "母音字母e的個數為:" << char_e << endl;

cout << "母音字母i的個數為:" << char_i << endl;

cout << "母音字母o的個數為:" << char_o << endl;

cout << "母音字母u的個數為:" << char_u << endl;

cout << "空格的個數為:" << sum_space << endl;

cout << "製表符的個數為:" << sum_table << endl;

cout << "換行符的個數為:" << sum_newline << endl;

cout << "字串行ff的個數為:" << sum_ff << endl;

cout << "字串行fl的個數為:" << sum_fl << endl;

cout << "字串行fi的個數為:" << sum_fi << endl;

}

(7)下面顯示的每個程式都含有乙個常見的程式設計錯誤,請指出錯誤。

(a)unsigned acnt = 0, ecnt = 0, ioucnt = 0;

char ch = next_text();

switch (ch)

解析:缺少break

(b)unsigned index = some_value();

switch (index)

解析:ix應在外部宣告定義

(c)unsigned even cnt = 0, oddcnt = 0;

int digit = get_num() % 10;

switch (digit)

解析:不能用逗號加以表示包括case 1 : case 2: case : 3....

(d)unsigned ival = 512, jval = 1024, kval = 4096;

unsigned bufsize;

unsigned swt = get_bufcnt();

switch(swt)

解析:case 後面需要加的是常量表示式,可以加const修飾符,將ival、jval、kval變成」常量「。

《C Primer》第五章 語句

身為c 的零基礎初學者,短期內把 c primer 啃下來是乙個比較笨但是有效的方法,一方面可以掌握比較規範的c 語法 避免被專案中亂七八糟的風格帶跑偏 另一方面又可以全面地了解c 語法以及c 11新標準 後續要做的事情就剩下查漏補缺,不斷完善自己的知識體系 個人感覺從零學習一門新知識比較好的方法是...

C Primer 第五章 語句

懸垂else else與離他最近的尚未匹配的if匹配,從而消除程式的二義性 switch表示式的值轉換為整數型別,case標籤的值必須是整型常量表示式 兩個case標籤的值不能相同 以乙個空的default標籤結束的,後面要跟空句或空塊 禁止跨過變數的初始化語句跳轉到該變數作用域的另乙個位置 可以把...

第五章 條件語句

使用條件語句能完成一些判斷工作,使程式的走向改變。因此條件語句也叫做分支語句。條件語句有if else和switch兩種。if else的格式為 if 條件表示式 else 其中 條件表示式 返回乙個布林值,當其值為真時執行if後的語句,否則執行else後的語句。如 if yourage 18 sy...