官术网_书友最值得收藏!

1.7 結(jié)構(gòu)化程序設(shè)計

C++支持最基本的3種程序運行結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。

順序結(jié)構(gòu):程序按順序執(zhí)行,不發(fā)生語句跳轉(zhuǎn),此處不單獨介紹。

選擇結(jié)構(gòu):根據(jù)條件是否滿足,有選擇地執(zhí)行相應的代碼。

循環(huán)結(jié)構(gòu):根據(jù)條件是否滿足,循環(huán)多次執(zhí)行某段代碼。

· 1.7.1 選擇結(jié)構(gòu)

1.if語句

作用:執(zhí)行滿足條件的語句。

if語句的3種形式如下。

單行格式if語句。

多行格式if語句。

多條件的if語句。

(1)單行格式if語句:if(條件){條件滿足時執(zhí)行的語句},流程如圖1-30所示,使用方法見例1-15。

圖1-30 單行格式if語句條件判斷流程

例1-15:單行格式if語句。

    #include <iostream>
    using namespace std;
    int main() {
       //選擇結(jié)構(gòu)—單行格式if語句
       //輸入一個分數(shù),如果分數(shù)大于600分,視為考上本科第一批錄取的大學(一本大學),并輸出
       int score = 0;
       cout << "請輸入一個分數(shù):" << endl;
       cin >> score;
       cout << "您輸入的分數(shù)為: " << score << endl;
       //if語句
       //注意事項:在if判斷語句后面不要加分號
       if (score > 600)
       {
           cout << "我考上了一本大學?。?!" << endl;
       }
       return 0;
    }

例1-15運行結(jié)果如圖1-31所示。

注意:if條件表達式后不要加分號。

(2)多行格式if語句:if(條件){條件滿足時執(zhí)行的語句}else{條件不滿足時執(zhí)行的語句},流程如圖1-32所示,使用方法見例1-16。

圖1-31 例1-15運行結(jié)果

圖1-32 多行格式if語句條件判斷流程

例1-16:多行格式if語句。

    #include <iostream>
    using namespace std;
    int main() {
       int score = 0;
       cout << "請輸入考試分數(shù):" << endl;
       cin >> score;
       if (score > 600)
       {
           cout << "我考上了一本大學" << endl;
       }
       else
       {
          cout << "我未考上一本大學" << endl;
       }
       return 0;
    }

例1-16運行結(jié)果如圖1-33所示。

(3)多條件的if語句:if(條件1){條件1滿足時執(zhí)行的語句}else if(條件2){條件2滿足時執(zhí)行的語句}...else{都不滿足時執(zhí)行的語句},流程如圖1-34所示,使用方法見例1-17。

圖1-33 例1-16運行結(jié)果

圖1-34 多條件的if語句條件判斷流程

例1-17:多條件的if語句。

    #include <iostream>
    using namespace std;
    int main() {
       int score = 0;
       cout << "請輸入考試分數(shù):" << endl;
       cin >> score;
       if (score > 600)
       {
           cout << "我考上了一本大學" << endl;
       }
       else if (score > 500)
       {
           cout << "我考上了二本大學" << endl;
       }
       else if (score > 400)
       {
           cout << "我考上了三本大學" << endl;
       }
       else
       {
           cout << "我未考上本科" << endl;
       }
       return 0;
    }

例1-17運行結(jié)果如圖1-35所示。

總結(jié):在if語句中,可以嵌套使用if語句,以達到更精確的條件判斷。

2.三目運算符

作用:通過三目運算符實現(xiàn)簡單的判斷。

語法:表達式1 ?表達式2:表達式3。

解釋:如果表達式1的值為真,執(zhí)行表達式2,并返回表達式2的結(jié)果;如果表達式1的值為假,執(zhí)行表達式3,并返回表達式3的結(jié)果。

具體使用方法見例1-18。

例1-18:三目運算符。

    #include <iostream>
    using namespace std;
    int main() {
       int a = 10;
       int b = 20;
       int c = 0;
       c = a > b ? a : b;
       cout << "c = " << c << endl;
       //C++中三目運算符返回的是變量,可以繼續(xù)賦值
       (a > b ? a : b) = 100;
       cout << "a = " << a << endl;
       cout << "b = " << b << endl;
       cout << "c = " << c << endl;
       return 0;
    }

例1-18運行結(jié)果如圖1-36所示。

圖1-35 例1-17運行結(jié)果

圖1-36 例1-18運行結(jié)果

總結(jié):和if語句相比較,三目運算符的優(yōu)點是短小、整潔;缺點是如果用嵌套,結(jié)構(gòu)不清晰。

3.switch語句

作用:執(zhí)行多條件分支語句。

語法:

    switch(表達式)
    {
       case 結(jié)果1:執(zhí)行語句;break;
       case 結(jié)果2:執(zhí)行語句;break;
       ...
       default:執(zhí)行語句;break;
    }

具體使用方法見例1-19。

例1-19:switch語句。

    #include <iostream>
    using namespace std;
    int main() {
       //請給電影評分 
       //10~9: 經(jīng)典   
       // 8: 非常好
       // 7~6: 一般
       // 5分及以下: 較差
       int score = 0;
       cout << "請給電影打分" << endl;
       cin >> score;
       switch (score)
       {
       case 10:
       case 9:
             cout << "經(jīng)典" << endl;
             break;
       case 8:
             cout << "非常好" << endl;
             break;
       case 7:
       case 6:
             cout << "一般" << endl;
             break;
       default:
             cout << "較差" << endl;
             break;
       }
       return 0;
    }

例1-19運行結(jié)果如圖1-37所示。

圖1-37 例1-19運行結(jié)果

注意1:switch語句中表達式的類型只能是整型或者字符型。

注意2:case里如果沒有break,那么程序會一直向下執(zhí)行。

總結(jié):與if語句相比較,在多條件判斷時,switch語句的結(jié)構(gòu)更清晰,執(zhí)行效率更高;缺點是switch語句不可以判斷區(qū)間。

· 1.7.2 循環(huán)結(jié)構(gòu)

1.while循環(huán)語句

作用:滿足循環(huán)條件,執(zhí)行循環(huán)語句。

語法:while(循環(huán)條件){執(zhí)行語句}。

解釋:只要循環(huán)條件的結(jié)果為真,就執(zhí)行循環(huán)語句,否則跳出循環(huán)。流程如圖1-38所示,使用方法見例1-20。

例1-20:while循環(huán)語句。

    #include <iostream>
    using namespace std;
    int main() {
       int num = 0;
       while (num < 10)
       {
           cout << "num = " << num << endl;
           num++;
       }
       return 0;
    }

例1-20程序運行結(jié)果如圖1-39所示。

圖1-38 while循環(huán)語句流程

圖1-39 例1-20運行結(jié)果

注意:在執(zhí)行循環(huán)語句時,程序必須提供跳出循環(huán)的出口,否則會出現(xiàn)死循環(huán),即程序不能結(jié)束運行。

2.do-while循環(huán)語句

作用:滿足循環(huán)條件,執(zhí)行循環(huán)語句。

語法:do{執(zhí)行語句} while(循環(huán)條件)。

流程如圖1-40所示,具體使用方法見例1-21。

例1-21:do-while循環(huán)語句。

    #include <iostream>
    using namespace std;
    int main() {
       int num = 0;
       do
       {
           cout << num << endl;
           num++;
       } while (num < 10);
       return 0;
    }

例1-21運行結(jié)果如圖1-41所示。

圖1-40 do-while循環(huán)語句流程

圖1-41 例1-21運行結(jié)果

總結(jié):do-while循環(huán)語句與while循環(huán)語句的區(qū)別在于,do-while循環(huán)語句先執(zhí)行一次循環(huán)語句,再判斷循環(huán)條件。

3.for循環(huán)語句

作用:滿足循環(huán)條件,執(zhí)行循環(huán)語句。

語法:for(起始表達式;條件表達式;末尾循環(huán)體) {循環(huán)語句}。

具體使用方法見例1-22。

例1-22:for循環(huán)語句。

    #include <iostream>
    using namespace std;
    int main() {
       for (int i = 0; i < 10; i++)
       {
           cout << i << endl;
       }
       return 0;
    }

例1-22運行結(jié)果如圖1-42所示。

圖1-42 例1-22運行結(jié)果

注意:for循環(huán)語句中的表達式,要用分號進行分隔。

總結(jié):while循環(huán)語句、 do-while循環(huán)語句、for循環(huán)語句都是開發(fā)中常用的循環(huán)語句,for循環(huán)語句結(jié)構(gòu)清晰,比較常用。

4.嵌套循環(huán)

作用:在循環(huán)體中再嵌套一層循環(huán),解決一些實際問題。

嵌套循環(huán)語句的具體使用方法見例1-23。

例1-23:嵌套循環(huán)語句。

    #include <iostream>
    using namespace std;
    int main() {
       //外層循環(huán)執(zhí)行1次,內(nèi)層循環(huán)執(zhí)行1輪
       for (int i = 0; i < 10; i++)
       {
           for (int j = 0; j < 10; j++)
           {
                     cout << "*" << " ";
           }
           cout << endl;
       }
       return 0;
    }

例1-23運行結(jié)果如圖1-43所示。

圖1-43 例1-23運行結(jié)果

· 1.7.3 跳轉(zhuǎn)語句

在循環(huán)語句執(zhí)行過程中,跳轉(zhuǎn)語句用于實現(xiàn)程序語句的跳轉(zhuǎn)。在C++中,跳轉(zhuǎn)語句有break語句、continue語句、goto語句3種,下面分別進行介紹。

1.break語句

作用:跳出選擇結(jié)構(gòu)或者循環(huán)結(jié)構(gòu)。

break語句使用的情況有以下3種。

出現(xiàn)在switch條件語句中,作用是終止case并跳出switch條件語句。

出現(xiàn)在循環(huán)語句中,作用是跳出當前的循環(huán)語句。

出現(xiàn)在嵌套循環(huán)語句中,作用是跳出最近的內(nèi)層循環(huán)語句。

具體使用方法見例1-24、例1-25、例1-26。

例1-24:跳轉(zhuǎn)語句。

    #include<iostream>
    using namespace std;
    int main() {
      //在switch 語句中使用break
       cout << "請選擇您挑戰(zhàn)副本的難度:" << endl;
       cout << "1.普通" << endl;
       cout << "2.中等" << endl;
       cout << "3.困難" << endl;
       int num = 0;
       cin >> num;
       switch (num)
       {
       case 1:
             cout << "您選擇的是普通難度" << endl;
             break;
       case 2:
             cout << "您選擇的是中等難度" << endl;
             break;
       case 3:
             cout << "您選擇的是困難難度" << endl;
             break;
       }
       return 0;
    }

例1-24運行結(jié)果如圖1-44所示。

例1-25:跳出循環(huán)語句。

    #include <iostream>
    using namespace std;
    int main() {
       //在循環(huán)語句中使用break
       for (int i = 0; i < 10; i++)
       {
           if (i == 5)
           {
                     break; //跳出循環(huán)語句
           }
           cout << i << endl;
       }
       return 0;
    }

例1-25運行結(jié)果如圖1-45所示。

圖1-44 例1-24運行結(jié)果

圖1-45 例1-25運行結(jié)果

例1-26:跳轉(zhuǎn)語句。

    #include <iostream>
    using namespace std;
    int main() {
       //在嵌套循環(huán)語句中使用break,退出內(nèi)層循環(huán)
       for (int i = 0; i < 10; i++)
       {
           for (int j = 0; j < 10; j++)
           {
                     if (j == 5)
                     {
                             break;
                     }
                     cout << "*" << " ";
           }
           cout << endl;
       }
       return 0;
    }

例1-26運行結(jié)果如圖1-46所示。

圖1-46 例1-26運行結(jié)果

2.continue語句

作用:在循環(huán)語句中,跳過本次循環(huán)中余下尚未執(zhí)行的語句,繼續(xù)執(zhí)行下一次循環(huán),具體使用方法見例1-27。

例1-27:continue語句。

    #include <iostream>
    using namespace std;
    int main() {
       for (int i = 0; i < 100; i++)
       {
           if (i % 2 == 0)
           {
                     continue;
           }
           cout << i << endl;
       }
       return 0;
    }

例1-27運行結(jié)果如圖1-47所示。

注意:continue語句并沒有使整個循環(huán)終止,而break語句會跳出循環(huán)。

3.goto語句

作用:可以無條件跳轉(zhuǎn)語句。

語法:goto 標記。

解釋:如果標記的名稱存在,執(zhí)行到goto語句時會跳轉(zhuǎn)到標記的位置。

具體使用方法見例1-28。

例1-28:goto語句。

    #include <iostream>
    using namespace std;
    int main() {
       cout << "1" << endl;
       goto FLAG;
       cout << "2" << endl;
       cout << "3" << endl;
       cout << "4" << endl;
       FLAG:
       cout << "5" << endl;
       return 0;
    }

例1-28運行結(jié)果如圖1-48所示。

圖1-47 例1-27運行結(jié)果

圖1-48 例1-28運行結(jié)果

注意:在程序中不建議使用goto語句,以免造成程序流程混亂。

主站蜘蛛池模板: 奈曼旗| 淳化县| 麻栗坡县| 和平县| 兰坪| 故城县| 平塘县| 安岳县| 东平县| 浮山县| 玛沁县| 元江| 和静县| 蕲春县| 中宁县| 泰安市| 大田县| 新源县| 汶川县| 清原| 都匀市| 马边| 方正县| 无棣县| 凉城县| 保靖县| 务川| 庆云县| 玉溪市| 拜泉县| 微山县| 富民县| 两当县| 平昌县| 噶尔县| 浮山县| 永康市| 永兴县| 徐闻县| 平乐县| 汕尾市|