(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...