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