您好,登錄后才能下訂單哦!
怎么分析C語言的選擇結構,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
單選擇通過if語句就可以實現,if語句的語法及執行流程如下:
if(表達式) { 代碼塊(表達式返回值為真時執行) }
當程序運行到if語句時,會由表達式進行判定,諾表達式的返回值為真,則進入代碼塊執行語句,為假便跳過代碼塊繼續執行。(當代碼塊語句僅有一句時,可以省略大括號。)
舉一個簡單的例子
例:判斷10是否為3的倍數
int main() { int i = 10; if (i % 3 == 0) //表達式結果為假 printf("是");//代碼塊內 未執行 return 0; }
雙選擇通過if-else語句實現,if-else語句的語法及執行流程如下:
(else的匹配:else是和它相距的最近的if匹配的)
if(表達式) { 語句一(表達式返回值為真時執行) } else { 語句二(表達式返回值為假時執行) }
當程序運行到if語句時,會由表達式進行判定,表達式的返回值為真,則執行語句1,為假便塊執行語句2。
舉一個簡單的例子
例:判斷學生分數及格
#include<stdio.h> int main() { int i = 0; scanf("%d", &i); if (i >= 60) printf("及格"); else printf("不及格"); return 0; }
通過else if語句實現的多選擇,else if語句的語法及執行流程如下:
if(表達式1) { 語句1 (表達式1返回值為真時執行) } else if(表達式2) { 語句2 (表達式返回值為真時執行) } else if(表達式3) { 語句3(表達式返回值為真時執行) } else { 代碼塊(以上表達式均為假時執行) }
當程序運行到if語句時,會由表達式進行判定,表達式1的返回值為真,則進入if下的代碼塊執行語句1,為假便進入表達式2。當然if-else可以實現的分支不止這四種,通過增加else if 語句的數量便可以實現更多的選擇。
舉一個簡單的例子
例:年齡分段
#include <stdio.h> int main() { int age = 0; scanf("%d", &age); if (age < 18) { printf("少年\n"); } else if (age >= 18 && age < 30) { printf("青年\n"); } else if (age >= 30 && age < 50) { printf("中年\n"); } else if (age >= 50 && age < 80) { printf("老年\n"); } else { printf("老壽星\n"); } return 0; }
switch語句也是一種分支語句。 常常用于多分支的情況。else if 語句也能實現多分支情況,但在某些情況下使用else if來實現,會使代碼過于復雜。
比如:
輸入1,輸出星期一
輸入2,輸出星期二
輸入3,輸出星期三
輸入4,輸出星期四
輸入5,輸出星期五
輸入6,輸出星期六
輸入7,輸出星期日
如果使用else if
#include<stdio.h> int main() { int day = 0; scanf("%d", &day); if (1 == day) printf("星期一"); else if (2 == day) printf("星期二"); else if (3 == day) printf("星期三"); else if (4 == day) printf("星期四"); else if (5 == day) printf("星期五"); else if (6 == day) printf("星期六"); else printf("星期日"); return 0; }
那么這個代碼便會太過復雜,而使用switch就會很多
switch語句的語法及執行流程如下:
switch(整型表達式) { //在一個 switch 中可以有任意數量的 case 語句。 case 整形常量表達式: 語句; }
case 是一個入口,按照輸入整型表達式的值進入,后按照順序依次運行。
單使用switch語句是無法實現分支的,需要搭配break使用才能實現真正的分支。
舉一個例子:
#include <stdio.h> int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期一\n"); case 2: printf("星期二\n"); case 3: printf("星期三\n"); case 4: printf("星期四\n"); case 5: printf("星期五\n"); case 6: printf("星期六\n"); case 7: printf("星期天\n"); } return 0; }
輸入值分別為2 4時,輸出結果如下:
與想要實現的效果相差甚遠,而搭配break使用就能解決這個問題。
#include <stdio.h> int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期一\n"); break; case 2: printf("星期二\n"); break; case 3: printf("星期三\n"); break; case 4: printf("星期四\n"); break; case 5: printf("星期五\n"); break; case 6: printf("星期六\n"); break; case 7: printf("星期天\n"); break; } return 0; }
break語句 的實際效果是把語句列表劃分為不同的分支部分。
switch除了搭配break語句使用,往往也會搭配 default語句
如果表達的值與所有的case標簽的值都不匹配時,所有的語句都會被跳過。程序并不會終止,也不會報錯,因為這種情況在C中并不認為是個錯誤。
諾并不想忽略不匹配所有標簽的表達式的值時,可以在語句列表中增加一條default子句。
當 switch 表達式的值并不匹配所有 case 標簽的值時,這個 default 子句后面的語句就會執行。
例如:
#include <stdio.h> int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期一\n"); break; case 2: printf("星期二\n"); break; case 3: printf("星期三\n"); break; case 4: printf("星期四\n"); break; case 5: printf("星期五\n"); break; case 6: printf("星期六\n"); break; case 7: printf("星期天\n"); break; default: printf("輸入錯誤"); } return 0; }
switch 語句可以有一個可選的 default case,出現在 switch 的結尾。default case 可用于在上面所有 case 都不為真時執行一個任務。default case 中的 break 語句不是必需的。
C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用于底層開發,使用C語言可以以簡易的方式編譯、處理低級存儲器。
看完上述內容,你們掌握怎么分析C語言的選擇結構的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。