學習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(用於輸出), 這兩個函數位於頭文件iostream的std命名空間中, 所以要使用這兩個函數首先我們要
#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++ -> 變量、常量與運算符
