鄭州天梯網(wǎng)站制作青島網(wǎng)絡(luò)推廣公司哪家好
前言:
- C語(yǔ)言是用來(lái)解決問(wèn)題的,除了必要的數(shù)據(jù)輸入與輸出(見(jiàn)前文),還要有邏輯結(jié)構(gòu)。其中基本可以歸為三類:順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。
- 今天,杰哥提筆寫(xiě)的是關(guān)于選擇結(jié)構(gòu)(又叫“分支結(jié)構(gòu)”)的筆記。
- 👉在本博文中,將有對(duì) if 、else、switch使用場(chǎng)景的舉例,還有 關(guān)鍵字 case 、break的使用。
一、if 、?else? 引導(dǎo)的分支結(jié)構(gòu)
1、單分支?
場(chǎng)景示例:公司要么錄用你,要么沒(méi)有消息。(要么執(zhí)行,要么不執(zhí)行)👉?
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int score = 0;scanf("%d",&score);if(score > 90){printf("錄用\n");}return 0;
}
?2、雙分支
?場(chǎng)景示例1:
公司給大家都發(fā)獎(jiǎng)金,要么多發(fā),要么少發(fā)。(從兩個(gè)執(zhí)行的操作中選擇一個(gè)執(zhí)行)👉
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int score = 0;scanf("%d",&score);if(score > 90){printf("多發(fā)獎(jiǎng)金\n");}else{printf("少發(fā)獎(jiǎng)金\n");}return 0;
}
場(chǎng)景示例2:
成年與未成年👉?
tip:一條執(zhí)行內(nèi)容時(shí)可以不用花括號(hào),多條執(zhí)行內(nèi)容時(shí)看情景判斷是否用花括號(hào),但從代碼閱讀的體驗(yàn)感來(lái)說(shuō),一般來(lái)說(shuō),我們加上花括號(hào)比較好。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int age = 0;scanf("%d",&age);if(age >= 18){printf("成年\n");printf("可以自己辦銀行卡\n");}else{printf("未成年\n");}return 0;
}
3、多分支?
場(chǎng)景示例1:
成績(jī)?cè)u(píng)級(jí) ----> 60以下(不及格)、60~80(等級(jí)C)、80~90(等級(jí)B)、90~100(等級(jí)A)。👉?
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
int main()
{int score = 0;scanf("%d",&score);if(score < 60){printf("不及格\n");}else //此時(shí)前提變?yōu)閟core >= 60{if(score < 80){printf("C\n");}else //此時(shí)前提變?yōu)閟core >= 80{if(score <90){printf("B\n");}else //此時(shí)前提變?yōu)閟core >= 90{printf("A\n");}}}return 0;
}
但是,這樣看著觀感不好,這里我們可以寫(xiě)if - else 多重嵌套的省略版本。👉
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
int main()
{int score = 0;scanf("%d",&score);if(score < 60)printf("不及格\n");else if(score < 80)printf("C\n");else if(score <90)printf("B\n");else printf("A\n");return 0;
}
如何理解if - else 嵌套中if和else的關(guān)系呢?解答如下:
?
場(chǎng)景示例2:?年齡段的判斷👉
tip:以下執(zhí)行內(nèi)容為一條語(yǔ)句,可以省略花括號(hào)。
#define _CRT_SECURE_NO_WARNINGS 1
#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 引導(dǎo)的分支結(jié)構(gòu)?
- 關(guān)鍵字:case? --- "事件",用于各情況的羅列;break ---? 跳出switch 分支;default ---?提供一種處理意外情況的機(jī)制,確保在沒(méi)有匹配的case情況下程序仍有相應(yīng)的執(zhí)行邏輯。??
- switch --- 作用:使多分支結(jié)構(gòu)的可讀性加強(qiáng)。
- 注意:switch(input) --- 其中的input 只能為整型變量,不能是浮點(diǎn)型等。
- 注意:case后的情況只能是“整型常量表達(dá)式”,如:1、3+2
?場(chǎng)景示例:1---星期一 ······ 7---星期日👉
法一:if - else 嵌套 ---- 實(shí)現(xiàn)多分支?
#define _CRT_SECURE_NO_WARNINGS 1
#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 if (7 == day)printf("星期日");elseprintf("輸入錯(cuò)誤\n");return 0;
}
?法二:switch --- 實(shí)現(xiàn)多分支
?可讀性是不是比法一好呢?
#define _CRT_SECURE_NO_WARNINGS 1
#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("輸入錯(cuò)誤\n");break;}return 0;
}
另外,switch還 可以這樣用:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int day = 0;scanf("%d", &day);switch (day){case 1:case 2:case 3:case 4:case 5:printf("工作日\(chéng)n");break;case 6:case 7:printf("周末\n");break;default:printf("輸入錯(cuò)誤\n");break;}return 0;
}
?三、使用switch過(guò)程中容易發(fā)生的問(wèn)題
注意不要漏掉break !!!!!?
漏掉會(huì)怎么樣呢?示例如下:👉
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int day = 0;scanf("%d", &day);switch (day){case 1:printf("星期一\n");break;case 2:printf("星期二\n");//此處漏掉breakcase 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("輸入錯(cuò)誤\n");break;}return 0;
}
輸入:?
輸入 2
輸出(結(jié)果):?
星期二
星期三
分析:輸入2后,case? 2作為入口,開(kāi)始進(jìn)入執(zhí)行,然而剎不住“車”,直到遇到break才停止執(zhí)行。?
接著,看看以下這個(gè)會(huì)輸出什么👉,答案見(jiàn)下節(jié)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int n = 1;int m = 2;switch (n){case 1:m++;case 2:n++;case 3:switch (n)//switch可以嵌套使用{case 1:n++;case 2:m++; n++;break;}case 4:m++;break;default:break;}printf("m = %d,n = %d\n", m, n);return 0;
}