• 第五章 语句


    5.1

    空语句:只含有一个单独的分号的语句。

    用到空语句的情况:当循环的全部工作在条件部分就可以完成时,我们通常会用到空语句。

    5.2

    块:复合语句的别称,指用花括号括起来的(可能为空的)语句和声明的序列。

    用到块的情况:在程序的某个地方,语法上需要一条语句,但是逻辑上需要多条语句时,就用块将多条语句括起来。

    5.3

    	while (val <= 10)
    		sum += val, val++;
    

    代码的可读性降低了!

    5.4

    (a):迭代器应在外部创建并初始化

    (b):if语句条件中的status变量没定义过

    5.5

     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 }
    View Code

    5.6

     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 }
    View Code

    5.8

    悬垂else:if分支多余else分支时,怎么知道某个else是和哪个if匹配的。

    C++处理else子句:规定else与离它最近的且尚未匹配的if匹配。

    5.9

     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 }
    View Code

    5.10

     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 }
    View Code

    5.11

     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 } 
    View Code

    5.12

     1 #include <iostream>  
     2 #include <string>  
     3 #include <vector>  
     4 using namespace std;  
     5 void main()  
     6 {     
     7     char cval, char_before = ''; //计算机中的0值表示的为'',可防止它的初始值(随机的)碰巧是某个字符的值.  
     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         sum_ff = 0, sum_fl = 0, sum_fi = 0;  
    10     while (cin >> std::noskipws >> cval) // 此处的std::noskipws表示的是不忽略任何地方的空白(包括制表符和空格等)  
    11     {  
    12         switch (cval)  
    13         {  
    14             case 'a':  
    15             case 'A':  
    16                 ++char_a;  
    17                 break;  
    18             case 'e':  
    19             case 'E':  
    20                 ++char_e;  
    21                 break;  
    22             case 'i':  
    23                 if (char_before == 'f')  
    24                 {  
    25                     ++sum_fi;  
    26                 }  
    27             case 'I':  
    28                 ++char_i;  
    29                 break;  
    30             case 'o':  
    31             case 'O':  
    32                 ++char_o;  
    33                 break;  
    34             case 'u':  
    35             case 'U':  
    36                 ++char_u;  
    37                 break;  
    38             case ' ':  
    39                 ++sum_space;  
    40                 break;  
    41             case '	':  
    42                 ++sum_table;  
    43                 break;  
    44             case '
    ':  
    45                 ++sum_newline;  
    46                 break;  
    47             case 'f':  
    48                 if (char_before == 'f')  
    49                 {  
    50                     ++sum_ff;  
    51                 }  
    52                 break;  
    53             case 'l':  
    54                 if (char_before == 'f')  
    55                 {  
    56                     ++sum_fl;  
    57                 }  
    58                 break;  
    59         }  
    60         char_before = cval;//将当前的字符赋给char_before,作为下次判断的依据  
    61         //如果下次判断中char_before为f字符,那么只要再判断当前字符是否为f、l、i即可  
    62     }  
    63     cout<<"元音字母a的个数为:"<<char_a<<endl;  
    64     cout<<"元音字母e的个数为:"<<char_e<<endl;  
    65     cout<<"元音字母i的个数为:"<<char_i<<endl;  
    66     cout<<"元音字母o的个数为:"<<char_o<<endl;  
    67     cout<<"元音字母u的个数为:"<<char_u<<endl;  
    68     cout<<"空格的个数为:"<<sum_space<<endl;  
    69     cout<<"制表符的个数为:"<<sum_table<<endl;  
    70     cout<<"换行符的个数为:"<<sum_newline<<endl;  
    71     cout<<"字符序列ff的个数为:"<<sum_ff<<endl;  
    72     cout<<"字符序列fl的个数为:"<<sum_fl<<endl;  
    73     cout<<"字符序列fi的个数为:"<<sum_fi<<endl;  
    74 } 
    View Code

    5.14

     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     int cnt = 1, maxCnt = 0;
    17     string ss, s1, s2;
    18     while (cin >> ss) {
    19         if (ss == s1) {
    20             cnt++;
    21         }
    22         else {
    23             cnt = 1;
    24         }
    25         if (cnt > maxCnt) {
    26             s2 = ss;
    27             maxCnt = cnt;
    28         }
    29         s1 = ss;
    30     }
    31     if (maxCnt > 1) 
    32         cout << s2 << "连续出现了"<< maxCnt << "次。" << endl;
    33     else    cout << "任何单词都没有连续出现过。" << endl; 
    34     return 0;
    35 }
    View Code

    5.17

     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     vector<int> a1 = {1, 2, 3, 4, 5, 6};
    17     vector<int> a2 = {1, 2, 3, 4,};
    18     int flag = 0;
    19     int minNum = (a1.size() > a2.size() ? a2.size() : a1.size());
    20     for (int i = 0; i < minNum; i++) {
    21         if (a1[i] != a2[i]) {
    22             cout << "No!" << endl;
    23             flag = 1;
    24             break;
    25         }
    26     }
    27     if (!flag)    cout << "Yes!" << endl;
    28     return 0;
    29 }
    View Code

    5.19

     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     string s1, s2;
    17     do {
    18         cout << "输入两个string对象:";
    19         cin >> s1 >> s2;
    20         cout << (s1.size() > s2.size() ? s2 : s1) << endl; 
    21     } while (cin);            //这个条件我服 
    22     return 0;
    23 }
    View Code

    5.20

     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     int flag = 0;
    17     string s1, s2;
    18     while (cin >> s1) {
    19         if (s1 == s2) {
    20             cout << s1 << endl;
    21             flag = 1;
    22             break;
    23         }
    24         s2 = s1;
    25     } 
    26     if (!flag)    cout << "没有任何单词是连续重复出现的!" << endl;
    27     return 0;
    28 }
    View Code

    5.21

     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     int flag = 0;
    17     string s1, s2;
    18     while (cin >> s1) {
    19         if (s1 == s2) {
    20             if(s1[0] >= 'A' && s1[0] <= 'Z') {
    21                 cout << s1 << endl;
    22                 flag = 1;
    23                 break;
    24             }
    25             continue;
    26         }
    27         s2 = s1;
    28     } 
    29     if (!flag)    cout << "没有任何单词是连续重复出现的!" << endl;
    30     return 0;
    31 }
    View Code

    5.22

    	int sz;
    	while ((sz = get_size()) <= 0)	;
    

      

    5.24

     1 #include <iostream>
     2 #include <vector>
     3 #include <cctype>
     4 #include <iterator>
     5 #include <stdexcept>
     6 #include <string>
     7 #include <cstring>
     8 
     9 using std::cin;
    10 using std::cout;    
    11 using std::endl;
    12 using std::vector;
    13 using std::string;
    14 
    15 int main() 
    16 {
    17     int a, b;
    18     cin >> a >> b;
    19     if (!b) {
    20         throw std::runtime_error("除数不能为0!");
    21     }
    22     cout << a / b << endl;
    23     return 0;
    24 }
    View Code

    发生:

    5.25

    #include <iostream>
    #include <vector>
    #include <cctype>
    #include <iterator>
    #include <stdexcept>
    #include <string>
    #include <cstring>
    
    using std::cin;
    using std::cout;    
    using std::endl;
    using std::vector;
    using std::string;
    using std::runtime_error;
    
    int main() 
    {
    	int a, b;
    	reinput:	cin >> a >> b;		//带标签语句,作为goto的目标 
    	try {
    		if (!b) {
    			throw runtime_error("除数不能为0!");
    		}
    		cout << a / b << endl;
    	}
    	//err是runtime_error类的一个实例 
    	catch (runtime_error err) {	
    		cout << err.what();		//what是runtime_error类中的成员函数 
    		cout << "
    是否需要重新输入? Enter y or n:" << endl;  
    		char ch;
    		cin >> ch;
    		if (ch == 'n')  
                cout << "bye!
    "; 
            else
            	goto reinput;		//reinput是用于标识一条语句的标识符 
    	}
        return 0;
    }
    

      

  • 相关阅读:
    线段树刷题版
    HDU 1011 Starship Troopers 树形+背包dp
    POJ1741 Tree 树分治模板
    POJ3744 Scout YYF I 概率DP+矩阵快速幂
    【bzoj1875】【JZYZOJ1354】[SDOI2009]HH去散步 矩阵快速幂 点边转换
    BZOJ 3231: [Sdoi2008]递归数列 (JZYZOJ 1353) 矩阵快速幂
    POJ 2778 DNA Sequence AC自动机+矩阵快速幂
    POJ2222 Keywords Search AC自动机模板
    Python 命名空间
    svn下目录说明
  • 原文地址:https://www.cnblogs.com/xzxl/p/7657034.html
Copyright © 2020-2023  润新知