學習C++ -> 選擇結構程序設計


學習C++ -> 選擇結構程序設計
=======================

一、 語句
    語句是程序的基本組成單位, 每條語句都以分號(;)結尾表示該語句的結束。
    
    1. 表達式語句
        運算符、 常量、等可以組成表達式, 而表達式后加分號就構成了表達式語句。
            例如: i = 10 是賦值表達式, 而 i = 10 ; 加上分號就構成了表達式語句。
            
    2. 復合語句
        用一對大括號括起來的一條或多條語句, 稱為復合語句。
        例如: { i = 10; n = 20; m = 30; } 是復合語句, 它只是算是一條語句, 而不是三條。
        注意: 大括號后面無需分號。
        
    3. 空語句
        僅由一個分號構成的語句稱為空語句, 空語句什么都不執行, 當某處需要一條語句而又可以什么也不做時使用空語句。
        
    4. 賦值語句
        賦值語句由表達式后跟分號組成。
        例如:

        i = 10 ;
        a = b + c ;

        賦值語句首先會計算等號(=)右邊的表達式的值, 然后將其賦值給左邊的內存單元。
        說明: 賦值語句中, "="左邊是以變量名標示的內存存儲單元, 程序在編譯時會為變量分配存儲單元, 也就是說, 變量名代表着內存單元。
    
    5. 流程控制語句
        1>. if語句
            if語句的一般使用形式:

          if(表達式)
            語句塊

            功能: 當if后面括號中表達式的值為真時執行語句塊中的語句, 否則跳過語句塊(復合語句)執行語句塊的下一跳語句。
            
            使用舉例:

            if( 10 > 5 )
            {
                cout<<"Yes." ;
            }

            編譯運行后輸出Yes., 說明if下面的語句塊被執行了, 因為10大於5是成立的, 為真, 所以語句塊將會被執行。
            上面也講到, 所謂的語句塊就是一條復合語句, 當僅有一個語句時你可以不使用大括號將一個語句括起來。
        
        2>. if-else語句
            僅有一個if語句只能告訴程序當表達式成立時做什么, 而不能告訴程序當表達式不成立時我們應該做什么, if-else正是用來解決該問題的。
            使用形式:

            if(表達式)
                當表達式成立時執行的語句塊
            else
                當表達式不成立時執行的語句塊

            功能: 首先計算表達式式的值, 當表達式的值為真時執行if后面的語句塊, 當表達式的值為假(不成立)時執行else后面的語句塊。
            使用舉例:

            if( 10 < 5 )
                cout<<"Yes." ;
            else
                cout<<"No." ;

            程序輸出No., 因為10 < 5是不成立的, 所以需要執行else后面的語句。
            
        3>. 嵌套的if語句
            嵌套的if語句常用來處理有多種情況時, 嵌套一般有三種形式:
                形式一:

            if(表達式1)
            {
                if(表達式2)
                    語句塊1
            }
            else
                語句塊2

                    注意, 這里使用了大括號將第二個if語句括起來了, 否則第二個if就會跟下面的if結合, 每個if與和他最近的else結合。
                    
                形式二:

            if(表達式1)
              if(表達式2)
                 語句塊1
               else
                 語句塊2
            else
               語句塊3                    

                    在這個嵌套中, 當表達式1成立時將執行表達式2的if語句, 否則執行表達式1的else語句。
                    
                形式三:

           if(表達式1)
             語句塊1
             else if(表達式2)
                語句塊2
                   else
                     語句塊3

                C++沒有對if語句嵌套層數的限制, 這也就是說你可以嵌套任意層if-else語句, 但從程序代碼的可讀性以及健壯性來說, if-else嵌套請不要嵌套超過5層
        
        4>. switch語句
            switch語句用於實現多分枝結構的程序, 舉個簡單的例子, 我們在程序上提供了10個序號用來表示菜單, 當用戶按下1時就代表選擇了功能1, 當按下0-9之外的序號時, 我們提示他選擇錯誤, 沒有這個選項后, 10個選項用if結構顯然很費力, 這時用switch語句是個很好的選擇。
            
            switch語句的一般形式:

            switch(表達式)
            {
                case 常量表達式1: 語句塊1
                case 常量表達式2: 語句塊2
                case 常量表達式3: 語句塊3
                ...
                case 常量表達式n: 語句塊n
                default:語句n+1
            }

            功能: 首先在switch處計算表達式的值, 然后依次與下面的case后面的常量表達式比較, 當表達式的值與常量表達式的值相等, 那么就從這個case處作為語句的入口, 將下面的case以及case后面的語句全部執行, 若表達式的值與常量表達式的值沒有一個相同的則執行default后面的語句塊。
            
            說明:
                ①. switch的表達式只能為int或char型數據, 當為char型數據時會將字符轉化為相應的ASCII碼值, 對於字符串、浮點型等不能作為switch的表達式;
                ②. 常量表表達式中不能出現變量, 只能是有確定值得常量;
                ③. case后面的語句塊可以是一條或多條語句, 且無需用大括號{}括起來, 因為他會自動從符合結果的case處自動向下執行;
                ④. default語句是可選的, 並且對出現的位置沒有要求, 可以在case之前, 也可以在case之間, 或者最后。
            
            case語句允許嵌套, 一般的嵌套形式為:

            switch(表達式1)
            {
                case 常量表達式1: switch(表達式2)
                                  {
                                    case 常量表達式2: 語句塊
                                    case 常量表達式3: 語句塊
                                    ...
                                  }
                case 常量表達式4:語句塊
                ...
            }

            switch語句的嵌套同樣沒有層數限制。
            switch語句使用舉例:

#include<iostream>

using namespace std ;

int main()
{
    int n ;
    cin >> n ;
    switch(n)
    {
        case 0:
            cout<<"press 0." ;    break ;
        case 1:
            cout<<"press 1." ;    break ;
        case 2:
            cout<<"press 2." ;    break ;
        case 3:
            cout<<"press 3." ;    break ;
        default:
            cout<<"error!" ;
    }

    return 0 ;
}

            break語句是用來停止switch繼續執行下面的語句的, 當執行到break時下面的語句就不會再被執行而是跳出switch結構, 對於break;語句的詳細用法到學習循環結構程序設計時再具體講解。

            
        5>. gtot語句
            goto語句成為無條件跳轉語句, 在同一個函數內, 它可以從一個位置跳到任意一個位置.
            goto語句的一般使用形式:

            goto 語句標識 ;
            ...
            ...
            ...
            語句標識 : 語句

                功能: 使用goto語句后它將會將下一條需要執行的代碼轉到語句標識所在的位置。
                
                說明: goto語句與相應的標識符必須在同一個函數中, 不允許跨函數使用。對於goto的使用一直以后就有很大的爭議, 有人說, goto的使用會破壞程序的結構, 從而使程序代碼變得難以理解且當出錯時不容易查找錯誤, 這些人認為應該徹底取消goto語句, 還有一部分人認為goto使用靈活, 恰當使用可以提高程序的靈活性, 對於是否使用goto語句還請讀者自己權衡, 如果能夠恰當使用goto那就更好了, 不過筆者建議在不是必要使用goto時最好不要使用。

                
二、基本輸入輸出
在C++中常用的標准輸入輸出函數有cin(用於輸入)和cout(用於輸出), 這兩個函數位於頭文件iostreamstd命名空間中, 所以要使用這兩個函數首先我們要

#include<iostream>

將這個頭文件包含進來, 然后使用命名空間機制

using namespace std ;

這個就可以自由使用cin和cout進行輸入輸出了, 當然, 你也可以不使用using namespace std ;這句, 如果不使用這句在調用cin和cout函數前你需要像這樣使用:

std::cin>>變量名 ;
std::cout<<變量名 ;

注意: 不要將輸入符號(>>)和輸出(<<)弄混了, 輸入是尖括號指向它, 輸出尖括號的方向與其相反。

例如我們現在要輸入一個整形變量並將其輸出:

#include<iostream>

using namespace std ;

int main()
{
    int n ;         //定義一個變量名為n的整形變量
    cin >> n ;      //輸入數字n, 輸入后按回車鍵
    cout<<n ;       //輸出n

    return 0 ;
}


輸入一個字符並將其輸出:

#include<iostream>

using namespace std ;

int main()
{
    char c ;            //定義一個變量名為n的字符型變量
    cin >> c ;          //輸入c
    cout << c ;         //輸出c

    return 0 ;
}


cin和cout一次還可以輸入輸出多個數據:
例如:

#include<iostream>

using namespace std ;

int main()
{
    int a, b, c ;           //定義三個整型變量
    cout<<"Please input three number:" ;    //提示輸入三個數
    cin >> a>> b >> c ;     //輸入a, b, c
    cout <<"You input: " << a <<"," << b << "," << c;             //輸出c, 逗號隔開

    return 0 ;
}


對於較為復雜的數據輸入輸出等使用到時再講。

--------------------


wid, 2012.11.12

 

上一篇: 學習C++ -> 變量、常量與運算符

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM