【語法篇】2、選擇結(jié)構(gòu)(一)

選擇

一、選擇結(jié)構(gòu)

程序就像人生一樣,很多時(shí)候是順其自然,按照一定順序去進(jìn)行的,這就類似于程序中的順序結(jié)構(gòu),從左往右,從上到下。但是在人的一生中,總會遇到一些分岔路,讓我們?nèi)プ龀鲞x擇和決定,程序也是也有類似的情況,我們把這種結(jié)構(gòu),稱之為『選擇結(jié)構(gòu)』。


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

這些分岔路,我們在程序中叫它分支,顯然不同的分支可能會帶來有不同的結(jié)果。就像我們由初中到高中一樣,滿足一定條件,就可以去到A校,不能滿足就只能去B校,甚至沒有其他選擇了。

if( 布爾表達(dá)式 ) {  
      語塊A;          // 可以有多個(gè)語句
}
else {                // else部分可以沒有的
      語塊B;         // 可以有多個(gè)語句
}

二、案例解析

1.判斷奇偶數(shù)

輸入一個(gè)整數(shù),判斷它是否為偶數(shù),如果是,則輸出“yes”,否則輸出“no”。

這里很顯然,關(guān)鍵就在于布爾表達(dá)式,判斷是夠是偶數(shù),我們往往用能否被2整除來判定,如果能被2整數(shù),即對2求余,余數(shù)是0,則為偶數(shù),否則是奇數(shù)。假設(shè)這個(gè)整數(shù)是a,那么布爾表達(dá)式就可以寫成 a%2 == 0 。假如這個(gè)條件是ture,那么就輸出yes,否則輸出 no。

#include <iostream>
using namespace std;
int main(){
    int a;                        // 定義一個(gè)整型變量a
    cin >> a;                     // 輸入一個(gè)整數(shù)
    if(a%2 == 0){                 // 如果能被2整除
        cout << "yes";            // 那么輸出yes
    }
    else{                         // 否則,即不能被2整除 a%2 != 0
        cout << "no";             // 輸出no
    }
    return 0;
}

2. 輸出大小數(shù)

由鍵盤輸入兩個(gè)數(shù)a,b,將大數(shù)存于a中,小數(shù)存于b中,再輸出變量a,b的值。

這里并沒有說明這兩個(gè)數(shù)是整數(shù)還是浮點(diǎn)數(shù),所以為了全面考慮,我們選擇浮點(diǎn)型double比較合適。顯然這里的重點(diǎn)在于判斷a,b兩個(gè)數(shù),誰比較大,先輸出大的數(shù),再輸出小的數(shù)。我們很容易想到,再定義兩個(gè)變量c、d,通過比較,我們把大的數(shù)賦值給c,小的數(shù)賦值給d,最后輸出c,d即可。

#include <iostream>
using namespace std;
int main(){
    double a, b, c, d;
    cin >> a >> b;
    if(a>b){
        c = a;
        d = b;
    }
    else{
        c = b;
        d = a;
    }
    cout << c << " " << d;
    return 0;
}

上面的方法,我們是直接借助兩個(gè)變量來實(shí)現(xiàn),其實(shí)我們交換兩個(gè)變量的值,只借助一個(gè)變量也可以很容易實(shí)現(xiàn)。我們可以把這個(gè)交換想象成是這樣一件事情:兩個(gè)瓶子A,B里,分別裝著醬油和水,現(xiàn)在要將醬油和水相互換一個(gè)瓶子來裝,我們可以借助于另外一個(gè)空瓶子C。方法很簡單,我們只需要先將A里面的醬油倒入到C中,這時(shí)A變空了;然后再將B中的水倒入到A中,這時(shí)B空了;最后將C中的醬油倒入到A中,這樣就可以實(shí)現(xiàn)A、B里面的東西互換了。其實(shí)我們的變量就相當(dāng)于一個(gè)瓶子,一個(gè)容器,里面可以裝東西,瓶子里裝的東西我們可以看成是變量的值,往瓶子里倒入東西,可以看成是賦值給變量。這樣利用三個(gè)變量實(shí)現(xiàn)兩個(gè)變量的值進(jìn)行交換的方法我們稱之為『三變量交換法』,這是非常常用的方法。當(dāng)然啦,有興趣的同學(xué)可以再探究一下,不用三變量,只用兩變量,能否交換它們的值呢?答案肯定是可以的,留待同學(xué)們課后去探究。
下面我們用『三變量交換法』來實(shí)現(xiàn)。

#include <iostream>
using namespace std;
int main(){
    double a, b, c;
    cin >> a >> b;
    if(a<b){  // 只有當(dāng)a<b時(shí)才需要交換,其他情況都不需要交換 
        c = a;   // a的值被存起來了,下一步可以被覆蓋 
        a = b;   // b的值被存起來了,下一步可以被覆蓋 
        b = c;   // a,b的值進(jìn)行了交換 
    }
    cout << a << " " << b;
    return 0;
}

從上面的案例,我們也可以看到,if/else中,其中else這個(gè)分支是可以省略的,同樣其實(shí)if后面的分支也是可以省略的。

不完整的條件語句
  if ( 布爾表達(dá)式) {
      語塊 A;
}
-------------------------------------------------------
 if (布爾表達(dá)式)
   else{
     語塊A;
}

三、練習(xí)

1、輸入一個(gè)數(shù),如果該數(shù)可以被3整除或者可以被5整除,則輸出“YES”,否則輸出“NO”。
2、輸入一個(gè)年份,判斷是不是一個(gè)閏年,如果是閏年,則輸出“l(fā)eap year”,否則輸出“nonleap year”。(注意閏年判定方法是“能被4整除且不能被100整除,或者能被400整除”)
3、某超市舉行購物優(yōu)惠活動:所購物品不超過100元時(shí),按九折付款,如超過100元,超過部分按六折收費(fèi)。請你編一程序完成超市自動計(jì)費(fèi)的工作。輸入只有一個(gè)數(shù)M,表示購物的款數(shù)。輸出打折后的款數(shù)。(如輸入120,輸出102)
4、老張有x元錢,打算存入銀行兩年。可以有兩種儲蓄方法:一種是存兩年,年利率是4.50%;一種是先存一年,年利率是3.87%,到期時(shí)再把本金和稅后利息取出來合在一起,再存一年。老張選擇哪種儲蓄方法得到的利息多?請編程,由鍵盤輸入x,如果是第一種方法好,輸出1,若是第二種方法好,則輸出2。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容