C 輔導教程(2) 分支結構

2021-09-05 10:00:18 字數 3511 閱讀 8877

第二章  分支語句

在前面的內容中,介紹了關係運算和邏輯運算。在程式設計中可以通過賦值語句,給乙個變數賦值來得到是否成立,但是單純依靠前面的語句是無法達到按照這個邏輯值的不同而執行不同的語句。

一、分支語句

在程式設計中,為了實現前面的情況,定義了一種結構叫做選擇結構。if語句是選擇結構中,最常用的一種,它可以根據條件的成立和不成立,來把程式分為兩個部分,所以if語句有叫做雙分支語句。

if語句主要有以下幾種形式:

形式1:

if (條件)

只有條件成立時需要執行的語句,而沒有條件不成立時的部分。而條件成立時需要執行的語句如果多於1條時,則必須放在{}之間;而如果需要執行的語句只有一條,則{}可以省略,具體如下。

形式1簡化:

if (條件)

執行語句;

形式2:

if (條件)

else

既有條件成立時需要執行的語句,也有條件不成立時的語句。但如形式1一樣,如果語句段中的語句超過1句,也必須使用{}。還有一點特別需要指出的,c/c++中if語句的()是不能夠省略的,一定要把條件放在()之間。

【例11】求兩個數中的最大數

#include

#include

using namespace std;

int main(int argc, char *argv)

【例11】是乙個簡單的使用if語句來求出兩個值中間的最大值的例子。if語句的條件是a>b,當這個條件成立時將執行if語句下面的cout<

二、分支語句的巢狀

if語句雖然可以實現按照條件的成立與否,來分別執行不同的語句,但是有的時候複雜的條件容易,會讓單純的if語句顯得不易理解,所以在使用if語句時,有一種技巧讓乙個if語句巢狀在另外乙個if語句中。這樣就可以讓if語句判斷的條件更清晰。

【例12】求三個數中的最大數

(1)用三個if來實現找最大數

#include

#include

using namespace std;

int main(int argc, char *argv)

這是乙個看似很清晰的程式,如果a對b和c的關係都是大於或等於,則輸出a;如果b對a和c的關係都是大於或等於,則輸出b;如果c對a和b的關係都是大於或等於,則輸出c。但細分析起來,會發現,當a,b,c出現重複時,會出現顯示多個數值的情況。但如果為了避免顯示多個數值而去掉條件中的所有「=」號,則發現,當出現數值相等時,是無法判斷出正確結果的。而如果把每一中可能等於,可能大於的情況單獨列出的話,則不是能夠很容易想的明白的。

在這種情況下,不如使用下面的方法:

(2)使用if語句的巢狀

#include

#include

using namespace std;

int main(int argc, char *argv)

在這種處理中,不但迴避了等於問題,且是逐漸把問題分成兩種情況,就把三個數的問題簡化到了兩個數的問題,最後再加以解決。整個解題的過程清晰簡明,很容易理解。

三、條件表示式

在c/c++中,有一種很有趣的表示式叫做條件表示式,用乙個語句就可以根據條件的成立與否,給表示式不同的值。如【例11】題目的條件,則可以用下面的條件表示式完成。

c=(a>b)?a:b;

這個表示式的條件就是()中的a>b,如果成立則值為「:」號前面的值(即a);如果不成立則值為「:」號後面的值。而這裡面的「?:」被成為條件運算子。

四、多分支語句

在分支結構中,不僅僅有像if語句這樣的雙分支語句,更有另外一種switch()語句,可以根據表示式的值,將執行的語句分成很多很多種。

switch()語句的結構如下:

switch(表示式)

switch()語句和case語句搭配和形成的多分支語句,是根據switch()語句括號中的表示式的值,搭配case語句後面的常量表示式的值,形成一種對應關係。從而判斷到底從哪條語句開始執行。但有幾點特別需要注意:

1、switch()語句「( )」中的表示式的值必須為有序型別,如整數、字元等;

2、case語句其實只是決定switch語句的執行入口,也就是決定從哪條語句開始執行,而並不是單獨執行那條語句。

3、default語句是表示除了其他條件外的其他所有值的情況,所以,一定要把default語句放在所有case語句的後面。

【例12】case語句的入口效應

#include

#include

using namespace std;

int main(int argc, char *argv)

system("pause");

return exit_success; }

如上面這個程式,是乙個最簡單的翻譯程式,在輸入阿拉伯數字後,程式會給你翻譯成英文輸出。但是,實際程式實現的效果是,如果輸入1,則顯示出所有語句。這就是因為a的值對應了case後面值為「1」的情況。所以程式執行是從這一條case開始執行,但是由於執行了這一行的cout<<」one」<

case 2:cout<<"two"<

case 3:cout<<"three"<

case 4:cout<<"four"<

default:cout<<"unknow!"<

這一系列語句。直達所有語句都執行完了,才能結束。而其實在c/c++中是有這樣的結束語句的,叫做break;只要將break;語句放在要執行的語句後,就可以只執行滿足值條件的那一行程式。

【例13】break語句與switch語句的出口

#include

#include

using namespace std;

int main(int argc, char *argv)

system("pause");

return exit_success; }

只是簡單在cout後面新增了break語句,這就相當與給switch語句開了一扇出門的門。只要在switch語句中遇到break語句則程式就會跳過switch語句中,滿足條件以外的其他語句,而直接跳出if語句外,執行其他部分。

當然不加break;也是可以理解的,如下面的例題就用的很好。

【例14】按照分數劃分成績等級

#include

#include

using namespace std;

int main(int argc, char *argv)

system("pause");

return exit_success; }

這個程式是以60為界,以下為不及格;而60以上(含60)到80(不含80),都屬於及格;而80以上(含80)到100(含100),都屬於優秀。在處理0,1,2的值時,0和1後面不但沒有break語句,更是連乙個處理語句都沒有。其實,也就是應用了case語句入口效應,和break的出口作用,讓程式從合適的地方進來,並不段執行,再從合理的地方出去,完成乙個完整的出入過程。這也就是switch語句的靈活之處。

C 2 分支結構

裡邊一定有考試題 c 2 分支結構 it李大澤 bool資料型別 bool表示的是一種非真即假的資料型別 bool型別的變數只有yes和no兩個值 yes表示真,no表示假 在c語言中,非0即是真 bool b1 true bool b2 yes bool型別的變數,在我們的分支語句和迴圈語句中是很...

C2 分支結構

一 布林型別 bool 1.bool中值只有0 1 2.布林型別變數用來存表示式的返回值 1 當表示式為真,返回1 2 當表示式為假,返回0.二 運算子 1.關係運算子 2.邏輯運算子 1 邏輯與 表示式兩端同時為真,整個表示式才為真 一假即假 短路現象 當第乙個表示式為假,不再需要執行第二個表示式...

C語言程式設計2 分支結構

第一題 1.輸入乙個整數,判斷奇偶,並輸出 某某是奇數 或者 某某是偶數 import int main int argc,const char argv 2.輸入乙個數,判斷符號。如果大於0,輸出 正數 如果小於0,輸出 負數 如果等於0,輸出 0 import int main int argc...