C語言學習筆記(二) 流程控制 重點

2021-07-03 07:57:50 字數 4888 閱讀 8329



第二章  流程控制【重點】

if

的用法

if(表示式):對真假的處理

注意:if後括號內的表示式結果只有兩種,

true

或false

,為布林型,即成立或不成立。 if

預設的只能控制乙個語句的執行

如果想控制多個語句的執行或不執行,就必須用

{}括起來

if (

表示式)

注意else與if

的對應,

else與if

的對應是從中向兩頭的對應。 即:

if ()

if()

if()

else

else

else

else

只能對應上面離它最近的乙個

if語句 如:

if(1)

if(2) 3;

else

//else

對應的是

if(2)

語句。且此段**整體上是乙個語句,因為

if...else...

是乙個語句。 4;

if(1)

else

printf("

呵呵!\n"); //

要想else

對應第乙個

if,則必須在本應與其對應的

if語句上加大括號,使其單獨成句。

if... else if... else

語句即便有多個表示式成立,也只會執行第乙個成立的表示式

if... else if... else

語句必須相連在一起,中間不能用任何語句隔開。

float

與double

都不能保證可以精確地儲存乙個小數。

迴圈中的自增(自減)變數(更新變數)不能定義為浮點數,因為浮點數可能是乙個近似值,不能被準確儲存。 如:

floatx = 66.6;

printf("%f\n",x);

輸出結果為:

x = 66.599998

試題:看乙個浮點數是否為零

float i =0;

/*if(0 == 0)

printf("

是零!\n");

else

printf("

不是零!

\n"); //

此方法錯誤!*/

if(|i-0.000001| <= 0.000001) //

正確!

printf("

是零!\n");

else

printf("

不是零!

\n");

# include

int main(void)

/*結果為不是,浮點數實質上儲存的是乙個近似值! */

迴圈

迴圈中的執行順序一定要清楚

for (i=1;i<=100;++i) //for

迴圈控制

sum = sum + i;

語句,執行順序:

1. i=1; 2. i<=100; 3. sum = sum+ i; 4. ++i;

sum = sum + i;

(++i

標誌著一次迴圈結束)

5. i<=100

do...while

不等價於

while...

和for...

其最大區別在於:

do...while

至少會執行一次。

do...while

常用於人機互動。

while

可以用於無限迴圈,用

break

來終止。 如:

while(true)

for (i=0, j=6; i這樣寫也可以,分號為三段分隔,逗號為內部分隔,逗號運算子,不算作乙個語句。但這樣寫有些麻煩,可以使用

while寫

i = 0;

j = 6

while (i < j)

for迴圈與

while

迴圈可以相互轉換: 但

for迴圈的邏輯性更強,更不容易出錯,推薦多使用

for迴圈。

for(1;2;3) a;

等價於: 1;

while(2)

break

與continue

break

:用於終止並跳出

迴圈或switch

語句,不能直接用於

if語句,除非

if語句是迴圈或

switch

語句中的一部分。 雖然

break是if

內部語句,但

break

用於終止

for迴圈語句,而不是

if語句。同理,

continue

也只會對離它最近的迴圈生效。

注意:1.

for (1; 2; 3)

//break

與continue

的區別。

printf("");

2.

do }while(

表示式)

3.

int x = 1;

int y = 0;

int a = 0;

int b = 0;

switch (x)

//第乙個

switch

b = 100;

break;

case 2:

a++;

b++;

break; }

printf("a = %d b =%d\n", a, b);

例1:for(i=0;i<3;++i)

例2:for(i=0; i<3; ++i)

//多個

for迴圈的巢狀。

注意:break

終止的是它所在的語句的迴圈或

switch

語句,而不可能終止與它並列的迴圈或

switch

語句。 如:

for(1; 2; 3)

switch...case...default

語句不同於

if...else if...else

語句。 在

switch...case

語句中,

case

只起標記作用,以確定程式在哪開始執行,不起條件判斷選擇作用。

break

用於終止

switch

語句。如果

不加break

,將會繼續執行下面的語句。 而在

if語句中,即使有多個

if語句同時成立,也只會執行第乙個成立的語句,剩下的成立語句不會執行。

switch

格式:

switch(

形參或表示式)//

後跟引數值或表示式,用於找到入口。

case

引數值或表示式:

//注意一定要加冒號「:」

case

只起標記作用,不起條件判斷選擇作用。 語句

a;break

;//break

用於終止

switch

語句。如果不加

break

,將會繼續執行下面的語句。

case

引數值或表示式: 語句

b;break;

default

://default

相當於else

,用於前面情況不符合時,執行此語句。 語句

c;注意:default

一定要寫上,雖不會出現語法錯誤,但會以為你忘掉了。

break;

注意:switch

語句是選擇,不是迴圈,不能出現

continue

,除非switch

是for

或while

迴圈中的一部分。

printf("

您想繼續嗎?(

y/n)

\n");

scanf("%c", &ch);

//ch

前必須加一空格

(空白符問題!)

}while('y' == ch || 'y' == ch);

continue

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

for(i=0; i<3; i++)

j= 0

while(j<3)

應用:inti, j;

char ch;

printf("

請輸入i

的值:");

scanf("%d", &i);

printf("i = %d\n", i);

while ((ch=getchar()) != '\n') //對i

後的非法字元進行處理。

getchar()

是取字元函式,

'\n'

即是回車。

continue;

printf("

請輸入j

的值:");

scanf("%d", &j);

printf("j = %d\n", j); 

二 流程控制

1 復合語句 j a復合語句是以整個塊區為單位的語句,又稱塊語句。2 條件語句 1 if條件語句 if 表示式1 else if 表示式2 else 2 switch多分支語句 switch 表示式 case 常量值1 break case 常量值2 break default break 3 迴圈...

Go語言學習筆記 流程控制(二)

字典型別map 1 上節遺留 map字典型別 2 建立map make 例子 mymap make map string persioninfo 3 建立並初始化 mymap map string persioninfo,4 map賦值 mymap 1234 personinfo 5 刪除map元素...

C語言學習筆記 程式流程控制

順序結構 從前往後依次執行,沒有任何 拐彎抹角 不跳過任何一條語句,所有的語句都會被執行到。選擇結構 也叫分支結構。會被分成多個部分,程式會根據特定條件 某個表示式的運算結果 來判斷到底執行哪一部分。迴圈結構 程式會重新執行同一段 直到條件不再滿足,或者遇到強行跳出語句。關係運算子 含 義 數學中的...