重拾C語言 流程控制

2021-09-25 22:37:59 字數 3055 閱讀 2361

1、定義:

某些**可能執行,也可能不執行,有選擇的執行某些**。

2、分類:

(1)if:                 非零為真,是零則假

if(表示式)

語句1)範圍問題:

if(表示式)

語句a;

語句b;   //if成立則預設執行下一行 (語句a)

if(表示式)

語句a;

語句b;  

}                     //if成立執行大括號內所有的語句

2)if…else…

if(1)

a;else if (2)

b;else if (3)

c;else

d;3)if常見問題歸納:

if();   ——  if 空語句

if(表示式1)

a;else if (表示式2)

b;else if (表示式3)

c;else

d;   //即使表示式1和2都成立,也只會執行a語句

if(表示式1)

a;else if (表示式2)

b;else if (表示式3)

c;    //去掉else後,語法沒問題,邏輯有漏洞

if(表示式1)

a;else if (表示式2)

b;else if (表示式3)

c;else(表示式4)

d;   //錯誤寫法。要麼去掉(表示式4),要麼改為else if(表示式4)

if(表示式1)

a;else if (表示式2)

b;else if (表示式3)

c;else(表示式4);

d; //語法沒問題,邏輯上有錯誤,空語句

3、switch —— case(break)—— default(break)

(1)表示式:

switch(表示式)

case 常量表示式1:語句1;

case 常量表示式2:語句2;

case 常量表示式n:語句n;

default: 語句 n+1;

(2)知識考點:

1)所有的case後面的常量表示式為便與描述我們稱為——標籤,則標籤只能是:列舉常量(列舉元素)、數值常量、字元常量、常變數、巨集名中的一種普通變數;切記列舉變數不能作為標籤來使用。

2)switch後面的括號裡的「表示式」允許是任何型別;但vc++只允許 int 或 char;

3)執行完乙個case語句後,流程控制就轉移到下乙個case子句繼續執行。

例子:switch(i)

當i == 1時,從case1向下依次執行;當i == 2時,從case2向下依次執行;當i == 3時,只執行case 3 一句;當i == 4時,從default開始往下依次執行。

1、定義:某些**會被重複執行。

2、分類:

(1)for:

for(1; 2; 3)

語句a;

1)執行流程:單個for迴圈、多個for迴圈巢狀;

for(1; 2; 3)  //1

for(4; 5; 6)  //2

a; //3

b; //4                   整體是兩個語句,1/2/3為語句一,4為語句二

1完了執行2,2成立執行4,4完了執行5, 5成立執行6和a,5不成立執行3,3完了執行2,2不成立執行b

一句一句依次向下迴圈執行!

for(1; 2; 3)  //1

for(4; 5; 6)  //2

a; //3

b; //4              

}           //整體是乙個語句

for(7; 8; 9)

for(1; 2; 3) 

a;b;

for(4; 5; 6) 

c; //3

}          //整體是乙個語句

(2)while

while(表示式)

語句;1)與for比較

for(1; 2; 3)

a;等價於

1;while(2)

a;3;

(3) do…while…

dowhile(表示式);   //主要用於人機互動

(4)break和continue:

1)break:

如果用於迴圈是用來終止迴圈;如果用於switch,則用來終止switch;不能直接用於if,除非if屬於迴圈內部的乙個子句。

在多層迴圈中,break只能終止最裡面包裹它的那個迴圈。

在多層switch(迴圈)巢狀中,break只能終止距離它最近的switch(迴圈)。

2)continue:

用於跳過本次迴圈餘下的語句,轉去判斷是否需要執行下次迴圈。

《一》 強制型別轉換:

格式:(資料型別) (表示式)

功能: 把表示式的值強制轉化為前面所執行的資料型別

例子:  

( int ) (4.5 + 2.2)   //結果為6

( float ) ( 5 )   //結果為5.000000,float 型別必須用%f輸出

sum = sum + (float)( 1 / i ) 等價於 sum = sum + 1.0 / i;

《二》 浮點數的儲存帶來的問題:

float 和 double 都不能保證可以精確到的儲存乙個小數。

迴圈更新的變數不能定義成浮點型!

C語言流程控制

1迴圈 for while do while while 邏輯值的表示式 先判斷再執行 迴圈體do while 邏輯值的表示式 先執行再判斷 注 1 表示式為真,繼續迴圈 表示式為假,退出迴圈 2 表示式中值是否初始化。3 結束退出 運算子 8 逗號運算子 表示式1,表示式2,表示式3,表示式n 結...

C語言流程控制

當分支語句過多時,使用if語句會提高 閱讀難度。判斷浮點數大小時需通過區間來進行,浮點數在進行儲存的時候會喪失了一定的精度,而對比浮點數大小的時候比較的是他們二進位制的數值。判斷浮點數是否等於0 define epsinon 0.0000001 int main return 0 先判斷條件再執行循...

C語言 流程控制

流程控制內容主要由選擇控制和迴圈控制組成。一 選擇控制 一 if 選擇結構 1 if 表示式 語句1 2 if 表示式 語句1 else 語句2 3 if 表示式 為作用域,裡面可以放多個滿足條件的語句 4 if else if else 只有乙個表示式會被判斷執行 舉例 1 int a 6 2 3...