7. C 語言 -- 分支結構: if 語句
本部落格主要內容為 “小甲魚” 視訊課程《帶你學C帶你飛》【第一季】 學習筆記,文章的主題內容均來自該課程,在這裡僅作學習交流。在文章中可能出現一些錯誤或者不準確的地方,如發現請積極指出,十分感謝。
也歡迎大家一起討論交流,如果你覺得這篇文章對你有所幫助,記得評論、點贊哦 ~(。・∀・)ノ゙
在上一篇部落格中介紹了關係運算符和條件運算子,實際上這兩個運算子在很多時候會結合到分支結構中一起使用,那什麼是分支結構呢?
如下圖所示,左側是順序結構,右側是分支結構
順序結構的程式雖然能解決計算、輸出等問題,但不能做判斷再選擇。對於要先做判斷再選擇的問題就要使用分支結構。分支結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。
下面將主要介紹 if 語句。
1 if 結構
if 結構如下圖所示
這樣的結構使得程式在執行的時候,滿足條件的時候會執行某一個特定的語句塊,但是不滿足的時候就不會執行,具體的使用方法如下
…… // 其它語句
if (表示式)
{
…… // 邏輯值為真所執行的語句、程式塊
}
…… // 其它語句
下面對這種結構進行進行舉例說明
#include <stdio.h>
int main()
{
int a = 20;
if (a >= 18)
{
printf("滿足年齡要求!\n");
printf("歡迎光臨!\n");
}
return 0;
}
2 if…else 結構
if…else結構如下圖所示
這樣的結構使得程式在執行的時候,滿足條件的時候會執行某一個特定的語句塊1,不滿足的時候就會執行某一個特定的語句塊1,具體的使用方法如下
…… // 其它語句
if (表示式)
{
…… // 邏輯值為真所執行的語句、程式塊
}
else
{
…… // 邏輯值為假所執行的語句、程式塊
}
…… // 其它語句
下面對這種結構進行進行舉例說明
#include <stdio.h>
int main()
{
int i = 20;
if (i >= 18)
{
printf("滿足年齡要求!\n");
}
else
{
printf("您的年齡不滿足要求!\n");
}
return 0;
}
3 if…else if 結構(巢狀)
if…else if 結構如下圖所示
這樣的結構使得程式在執行的時候,滿足條件 1 的時候會執行某一個特定的語句塊1,如果不滿足條件 1 要判斷是否滿足條件 2 ,如果滿足條件 2 會執行對應的語句 2 ,如果不滿足(此時相當於同時不滿足條件 1 和條件 2 ),會接著判斷是否滿足下面的條件,……一直這樣判斷下去,直至最後一個條件,如果仍不滿足就執行語句 n+1。具體的使用方法如下
…… // 其它語句
if (表示式1)
{
……
}
else if (表示式2)
{
……
}
.
.
.
else if (表示式n)
{
……
}
else
{
……
}
…… // 其它語句
下面對這種結構進行進行舉例說明
#include <stdio.h>
int main()
{
int i;
printf("請輸入分數:");
scanf("%d", &i);
if (i >= 90)
{
printf("A\n");
}
else if (i >= 80 && i < 90)
{
printf("B\n");
}
else if (i >= 70 && i < 80)
{
printf("C\n");
}
else if (i >= 60 && i < 70)
{
printf("D\n");
}
else
{
printf("E\n");
}
return 0;
}
上面的這段程式對於輸入的成績進行判斷,90分及以上:A,80 ~ 90分:B,70 ~ 80分:C,60 ~ 70分:D,低於60分:E。
4 容易犯的錯誤
如上是 if…else if 結構的使用方法,但是有的時候為了投籃或者沒有注意,會寫成下面的這種形式
#include <stdio.h>
int main()
{
int i = 0;
if (i == 0){
i = i + 1;
printf("i 的值是:%d\n", i);
}
if (i == 1){
i = i + 2;
printf("i 的值是:%d\n", i);
}
else{
printf("i\n");
}
return 0;
}
執行上面的程式可以得到如下的結果
i 的值是:1
i 的值是:3
造成這個結果的原因在於上面你得程式首先了執行了第一個 if
中的語句,之後再執行第二個 if
中的語句;而不是像之前的 if…else if 中那樣,只執行一個條件分支中的語句,所以在使用的時候要尤為注意。
參考文獻
[1] 將暮未暮 《Java 分支結構》
[2] 百度百科 《分支結構》
[3] “小甲魚” 視訊課程《帶你學C帶你飛》【第一季】P11
歡迎大家關注我的知乎號(左側)和經常投稿的微信公眾號(右側)