【不是惡夢的開始,而是再度的精進。】

 

在程式中總免不了需要做各種的判斷,因此關係運算與條件運算是很重要的支柱之一,在進入主題之前先看一下一些有用的測試字元的函數集。

 

在程式中引入標頭檔 cctype,就可以使用測試字元很有用的函數集,對於每個函數,都要傳給函數 int 型態的變數或文字,若你傳遞 char 型態,則它會自動轉成 int。

 

isupper()  檢查大寫字母 A 到 Z
islower()  檢查小寫字母 a 到 z
isalpha()  檢查大寫或小寫字母
isdigit()  檢查 0 到 9 的數字
isxdigit() 檢查十六進位數字,0 到 9 ,a 到 f,或 A 到 F
isalnum()  檢查字母或數字
isspace()  檢查空白,包括空格,換行,歸位字元,換頁字元,水平或垂直跳格
iscntrl()  檢查控制字元
isprint()  檢查可列印的字元,包括大寫或小寫字母,數字,標點字元或空格
isgraph()  檢查繪圖字元,除了空格之外的可列印字元
ispunch()  檢查標點字元,這些非字母或數字的所有可列印字元,包括空格以及下列字元
           { } [ ] ( ) < > # & % : ; ? ! * + - ^ _ ~ = , ' " \ / |

 

轉換大小寫字元。
tolower()  若你傳遞一個大寫字母,則回傳其小寫字母,否則回傳不變的輸入字母
toupper()  若你傳遞一個小寫字母,則回傳其大寫字母,否則回傳不變的輸入字母

 

在程式設計中往往需要比較資料來決定程式的執行順序,而比較資料值的運算子稱作關係運算子,
比較兩個資料的運算子共有六種基本的運算子:
<   小於
>   大於
==  等於 (這是兩個 = 連在一起,若只有一個 = 就是設定運算子,就是把等號左邊的運算元設定給等號右邊的運算元)
<=  小於或等於
>=  大於或等於
!=  不等於

 

這六個運算子會比較兩個資料,若比對成功(成立)則傳回布林值 true 或 1,若比對不成功(不成立)
則傳回布林值 false 或 0。

例:

#include<iostream>
using namespace std;

int main(int argc, char** argv) 
{
    int datai = 7;
    double numd = 2.0;    

    cout << "datai > numd :  ";
    cout << (datai > numd) << "\n\n";    
        
    return 0;
}

 

 

邏輯運算子:
當有更多的相關條件時,邏輯運算子就可以結合各個條件成一串的單一特定條件來做資料的比較,
邏輯運算子共有三個。

&&   邏輯 AND
||   邏輯 OR
!    邏輯否定  NOT

 

邏輯 AND

條件一    條件二    布林值
true      true      true
true      false     false
false     true      false
false     false     false

當然啦!也可以有一百個條件,只有所有的條件成立了,布林值才是 true,所以這是最難過關的條件。


邏輯 OR

條件一   條件二   布林值
true     true     true
true     false    true
false    true     true
false    false    false

這也可以有一百個條件,只有所有的條件不成立了,布林值才是 false,所以這是最容易過關的條件。

例:

#include<iostream>
using namespace std;

int main(int argc, char** argv) 
{
    int data1i = 0;
    int data2i = 0;
    
    cout << "請輸入兩個數字 : \n\n";
    cin >> data1i >> data2i;
    cout << "data1i > 85 || data2i > 7 :  ";
    cout << (data1i > 85 || data2i > 7) << "\n\n";    
        
    return 0;
    
}


邏輯否定  NOT
運算子 ! 是一元運算子,所以只用於一個布林型態(bool)的運算元,並產生布林值的結果,
就是會將運算元的布林值反轉,就是在布林值前面加上 ! ,如: !(true)=false。

例:

#include<iostream>
using namespace std;

int main(int argc, char** argv) 
{
    int data1i = 0;
    int data2i = 0;
    
    cout << "請輸入兩個數字 : \n\n";
    cin >> data1i >> data2i;
    cout << "data1i > 85 || data2i > 7 :  ";
    cout << !(data1i > 85 || data2i > 7) << "\n\n";  // 加入 ! 來否定原來布林值    
        
    return 0;
    
}

 

條件運算子:
條件運算子有時候稱為三元運算子,因為它含有三個運算元。
條件運算子有點類似 if-else 敘述,他會視條件值而在兩個選項中做選擇。
c = a > b ? a : b;
c 值等於多少呢?就問問 a 和 b 的比較
如果 a > b 則  c = a ,否則 c = b 。

例:

#include<iostream>
using namespace std;

int main(int argc, char** argv) 
{
    int data2i = 5;
    int data3i = 8;
    int data5i = 0;
    
    data5i = data2i > data3i ? data2i : data3i;
    
    cout << "取大數:  data5i =  " ;
    cout <<data5i << "\n\n";    
        
    return 0;
    
}

 

 

 

 

延伸閱讀

 

[做中學 dev c++] dev c++

 

[伊蒙 dev c++] 視窗程式學習筆記


.

arrow
arrow
    全站熱搜

    伊蒙‧普羅客 發表在 痞客邦 留言(0) 人氣()