第六型態

布林 boolean

在C語言中,我們可能會宣告一個int作為條件判斷的變數,但我們從上一節的表格中可以看到兩者佔用空間是有所差距,int是4個bytes,而bool為1個byte,且程式碼管理上bool作為條件判斷的變數也會比其他型態更為清楚明瞭。

bool中提供兩個值,分別為truefalse,兩者皆為c++的保留字,所以不能任意更改大小寫,請執行以下程式。

範例10-7

#include <iostream> using namespace std; int main(){ bool flag; flag = false; if(flag){ cout << "The flag is true!!!" << endl; }else{ cout << "The flag is false!!!" << endl; } cout << "flag :" << flag << endl; cout << "flag :" << boolalpha << flag << endl; return 0; }

練習10-7

請使用前次範例並將flag的值設為false

在範例10-7可以發現,bool也是可以放進cout中印出的,印出結果為1或者0,若想印出true或false可以在flag前加上boolalpha

我們常常會需要一個旗標(flag)來作流程控管,條件變數的暫存等等,各位同學若學到組合語言、計算機結構等課程應該會更有感覺。

複習:while和for

有時候我們需要讓程式重複做某一件事情,我們可以藉由兩種方法做到,一是迴圈,二是遞迴,因為遞迴太過麻煩且不易使用所以在此不做複習。

在C++中使用迴圈和C語言相同,使用while及for。

while使用方式為,小括號內為繼續執行條件,大括號為執行動作。

假設我們想讓使用者持續輸入數字,並使這些數字相加,當總和大於100時結束,請參考範例10-8:

範例 10-8

#include <iostream> using namespace std; int main(){ int sum = 0,num; while(sum <= 100){ cout << "please input a number to sum:"; cin >> num; sum = sum + num; cout << "The \"sum\" is " << sum << endl; } return 0; }

練習10-8

請參考範例10-8,改為讓使用者輸入5次數字後印出數字總和並結束程式。

一般迴圈我們都會做三件事情,設定條件變數、設立終止條件、更改條件變數,以範例10-8為例子:
設定條件變數:int sum = 0;
設立繼續條件:sum <= 100
更改條件變數:sum = sum + num;

我們更常會遇到的是如同練習10-8的狀況,條件變數是持續+1,所以我們就有了for的使用。

for的使用方式為,小括號內依序放入條件變數設定、繼續條件設立、條件變數更改,並用;隔開,大括號內為執行動作。

範例10-9為顯示2的九九乘法表

範例10-9

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

練習10-9

請利用雙層迴圈(for)印出完整的九九乘法表,並排版。

有別於舊版C語言,C++中可以在for裡面進行宣告的動作,使用for迴圈可以減少行數保持程式碼清潔。

總練習

請更改上一節的總練習,並閱讀以下題目: 請模擬販賣機,讓使用者輸入投幣數量,並選擇a~d四種產品,若能夠購買則顯示購買成功並顯示退幣,若錢不夠則顯示購買失敗,如果輸入錯誤的代號則請使用者重新輸入,販賣機商品及價錢請參考下表。

商品代號 價錢
a 10
b 50
c 100
d 87

例子1

請投入金額:50
a:10
b:50
c:100
d:87
請輸入商品代號:a
商品a購買成功,退幣40元

請投入金額:50
a:10
b:50
c:100
d:87
請輸入商品代號:d
商品d購買失敗

請投入金額:100
a:10
b:50
c:100
d:87
請輸入商品代號:d
商品d購買成功,退幣13元

請投入金額:100
a:10
b:50
c:100
d:87
請輸入商品代號:e
請輸入商品代號:e
請輸入商品代號:a
商品a購買成功,退幣90元

results matching ""

    No results matching ""