5.1
空语句:只含有一个单独的分号的语句。
用到空语句的情况:当循环的全部工作在条件部分就可以完成时,我们通常会用到空语句。
5.2
块:复合语句的别称,指用花括号括起来的(可能为空的)语句和声明的序列。
用到块的情况:在程序的某个地方,语法上需要一条语句,但是逻辑上需要多条语句时,就用块将多条语句括起来。
5.3
while (val <= 10) sum += val, val++;
代码的可读性降低了!
5.4
(a):迭代器应在外部创建并初始化
(b):if语句条件中的status变量没定义过
5.5
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <vector> 3 #include <cctype> 4 #include <iterator> 5 #include <string> 6 #include <cstring> 7 8 using std::cin; 9 using std::cout; 10 using std::endl; 11 using std::vector; 12 using std::string; 13 14 char gradeToLevel(int n) 15 { 16 if (n >= 95) return 'A'; 17 else if (n >= 85) return 'B'; 18 else if (n >= 75) return 'C'; 19 else if (n >= 60) return 'D'; 20 else return 'E'; 21 } 22 23 int main() 24 { 25 int grade; 26 cin >> grade; 27 char level = gradeToLevel(grade); 28 cout << level << endl; 29 return 0; 30 }
5.6
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <vector> 3 #include <cctype> 4 #include <iterator> 5 #include <string> 6 #include <cstring> 7 8 using std::cin; 9 using std::cout; 10 using std::endl; 11 using std::vector; 12 using std::string; 13 14 char gradeToLevel(int n) 15 { 16 return (n >= 95) ? 'A' : (n >= 85) ? 'B' : (n >= 75) ? 'C' : (n >= 60) ? 'D' : 'E'; 17 } 18 19 int main() 20 { 21 int grade; 22 cin >> grade; 23 char level = gradeToLevel(grade); 24 cout << level << endl; 25 return 0; 26 }
5.8
悬垂else:if分支多余else分支时,怎么知道某个else是和哪个if匹配的。
C++处理else子句:规定else与离它最近的且尚未匹配的if匹配。
5.9
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <vector> 3 #include <cctype> 4 #include <iterator> 5 #include <string> 6 #include <cstring> 7 8 using std::cin; 9 using std::cout; 10 using std::endl; 11 using std::vector; 12 using std::string; 13 14 int main() 15 { 16 char ch; 17 int vowelCnt = 0; 18 while (cin >> ch) { 19 if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') 20 vowelCnt++; 21 } 22 cout << vowelCnt << endl; 23 return 0; 24 }
5.10
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <vector> 3 #include <cctype> 4 #include <iterator> 5 #include <string> 6 #include <cstring> 7 8 using std::cin; 9 using std::cout; 10 using std::endl; 11 using std::vector; 12 using std::string; 13 14 int main() 15 { 16 char ch; 17 int vowelCnt = 0; 18 while (cin >> ch) { 19 switch (ch) { 20 case 'a': 21 case 'e': 22 case 'i': 23 case 'o': 24 case 'u': 25 case 'A': 26 case 'E': 27 case 'I': 28 case 'O': 29 case 'U': 30 vowelCnt++; 31 break; 32 } 33 } 34 cout << vowelCnt << endl; 35 return 0; 36 }
5.11
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <string> 3 #include <vector> 4 using namespace std; 5 void main() 6 { 7 char cval; 8 int char_a = 0,char_e = 0,char_i = 0,char_o = 0,char_u = 0,sum_space = 0,sum_table = 0,sum_newline = 0; 9 while (cin >> std::noskipws >> cval) // 此处的std::noskipws表示的是不忽略任何地方的空白(包括制表符和空格等) 10 { 11 switch (cval) 12 { 13 case 'a': 14 case 'A': 15 ++char_a; 16 break; 17 case 'e': 18 case 'E': 19 ++char_e; 20 break; 21 case 'i': 22 case 'I': 23 ++char_i; 24 break; 25 case 'o': 26 case 'O': 27 ++char_o; 28 break; 29 case 'u': 30 case 'U': 31 ++char_u; 32 break; 33 case ' ': 34 ++sum_space; 35 break; 36 case ' ': 37 ++sum_table; 38 break; 39 case ' ': 40 ++sum_newline; 41 break; 42 } 43 } 44 cout<<"元音字母a的个数为:"<<char_a<<endl; 45 cout<<"元音字母e的个数为:"<<char_e<<endl; 46 cout<<"元音字母i的个数为:"<<char_i<<endl; 47 cout<<"元音字母o的个数为:"<<char_o<<endl; 48 cout<<"元音字母u的个数为:"<<char_u<<endl; 49 cout<<"空格的个数为:"<<sum_space<<endl; 50 cout<<"制表符的个数为:"<<sum_table<<endl; 51 cout<<"换行符的个数为:"<<sum_newline<<endl; 52 }
5.12
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <string> 3 #include <vector> 4 using namespace std; 5 void main() 6 { 7 char cval, char_before = '