目錄
創(chuàng)新互聯(lián)公司專注于羅定網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供羅定營(yíng)銷型網(wǎng)站建設(shè),羅定網(wǎng)站制作、羅定網(wǎng)頁(yè)設(shè)計(jì)、羅定網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造羅定網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供羅定網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。前言
一、if 語(yǔ)句
1.語(yǔ)法結(jié)構(gòu)
2.懸空else?
二、switch語(yǔ)句?
1.語(yǔ)句結(jié)構(gòu)
2.在switch語(yǔ)句中的 break
3. default子句
總結(jié)
在前面章節(jié)的學(xué)習(xí)中,我們只是對(duì)C語(yǔ)言有了一個(gè)大致的了解,讓我們可以看懂一些簡(jiǎn)單的程序,從今天開始,我們就要深入的學(xué)習(xí)C語(yǔ)言的內(nèi)容。
C 語(yǔ)句可分為以下五類: 1. 表達(dá)式語(yǔ)句 2. 函數(shù)調(diào)用語(yǔ)句 3. 控制語(yǔ)句 4. 復(fù)合語(yǔ)句 5. 空語(yǔ)句 而控制語(yǔ)句又分為 條件語(yǔ)句,循環(huán)語(yǔ)句和轉(zhuǎn)向語(yǔ)句,我們今天要學(xué)習(xí)的是控制語(yǔ)句中的 條件語(yǔ)句。//半選擇結(jié)構(gòu)
if () {
表達(dá)式;
}
//if else 結(jié)構(gòu)
if () {
表達(dá)式1;
}
else {
表達(dá)式2;
}
//多選擇結(jié)構(gòu)
if(表達(dá)式1)
? ?語(yǔ)句1;
else if(表達(dá)式2)
? ?語(yǔ)句2;
else
? ?語(yǔ)句3;
if 語(yǔ)句的結(jié)構(gòu),如果if后面的表達(dá)式為真時(shí),執(zhí)行后邊的語(yǔ)句,如果表達(dá)式為0即為假,當(dāng)不為0時(shí)即為真,如表達(dá)式為-1時(shí)為真。?
如果執(zhí)行單條語(yǔ)句時(shí),我們我們可以不帶{ },但是我們要輸入多條語(yǔ)句時(shí),必須帶上大括號(hào){ }。
#includeint main()
{
? ?if(表達(dá)式)
? {
? ? ? ?語(yǔ)句列表1;
? }
? ?else
? {
? ? ? ?語(yǔ)句列表2;
? }
? ?return 0
為了更好地掌握if語(yǔ)句,我們可以過下邊的幾段代碼來分析。
代碼1中,我們輸入age,通過if判斷,當(dāng)age<18時(shí),即說明判斷為真,即輸出未成年,當(dāng)我們age>=18時(shí),判斷為假,不輸出。
#include//代碼1
int main()
{
int age = 0;
? ?scanf("%d", &age);
? ?if(age<18)
? {
? ? ? ?printf("未成年\n");
? }
}
代碼2中,輸出age,當(dāng)age<18時(shí)輸出未成年,else在這里相當(dāng)于age>=18,即輸出成年。
//代碼2
#includeint main()
{
int age = 0;
? ?scanf("%d", &age);
? ?if(age<18)
? {
? ? ? ?printf("未成年\n");
? }
? ?else
? {
? ? ? ?printf("成年\n");
? }
}
代碼3中?,這是多分支的條件語(yǔ)句,通過多組else if語(yǔ)句來控制輸出,else if和if一樣,后邊的判斷語(yǔ)句為真時(shí),大括號(hào)內(nèi)的語(yǔ)句成立,否則不成立。
//代碼3
#includeint 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");
? }
? ?
}
我們先來看這樣一段代碼。
#includeint main()
{
? ?int a = 0;
? ?int b = 2;
? ?if(a == 1)
? ? ? ?if(b == 2)
? ? ? ? ? ?printf("hehe\n");
? ?else
? ? ? ?printf("haha\n");
? ?return 0;
}
你是否以為這個(gè)程序最終輸出 haha ,那就大錯(cuò)特錯(cuò)了,我們可以看到這里有兩個(gè)if表達(dá)式,卻只有一個(gè)else 表達(dá)式,這個(gè)時(shí)候我們就要考慮到if 和 else 的配對(duì)問題,我們C語(yǔ)言的語(yǔ)法中,else會(huì)和離它最近的一個(gè)if配對(duì),故當(dāng)?shù)谝粋€(gè)if不成立后,不會(huì)進(jìn)行第二個(gè)if的判斷,故程序的結(jié)果應(yīng)該是沒有輸出。
我們可以調(diào)整一下程序的風(fēng)格和大括號(hào)的使用,這樣我們就可以更清楚的理解了。
//適當(dāng)?shù)氖褂脅}可以使代碼的邏輯更加清楚。
//代碼風(fēng)格很重要
#includeint main()
{
? ?int a = 0;
? ?int b = 2;
? ?if(a == 1)
? {
? ? ? ?if(b == 2)
? ? ? {
? ? ? ? ? ?printf("hehe\n");
? ? ? }
? }
? ?else
? {
? ? ? ? printf("haha\n");
? } ? ? ?
? ?return 0;
}
switch 語(yǔ)句也是一種分支語(yǔ)句。 常常用于多分支的情況。 比如: 輸入 1 ,輸出星期一 輸入 2 ,輸出星期二 輸入 3 ,輸出星期三 輸入 4 ,輸出星期四 輸入 5 ,輸出星期五 輸入 6 ,輸出星期六 輸入 7 ,輸出星期日 那我沒寫成 if...else if ...else if 的形式太復(fù)雜,那我們就得有不一樣的語(yǔ)法形式。 這就是 switch 語(yǔ)句。1.語(yǔ)句結(jié)構(gòu)
switch ( 整型表達(dá)式 ) {?case 整形常量表達(dá)式:
? ? 語(yǔ)句 ; }
這是我們的一段輸出周幾的程序,我們來看看效果。
#includeint 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;
}
但是輸出結(jié)果為什么是星期三,星期四,星期五,星期六,星期天呢,哪里出了問題呢??
在switch語(yǔ)句中,我們沒辦法直接實(shí)現(xiàn)分支,搭配break使用才能實(shí)現(xiàn)真正的分支。
#includeint 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;
}
這樣的話,我們就可以正確的輸出了。
如果表達(dá)的值與所有的 case 標(biāo)簽的值都不匹配怎么辦? 其實(shí)也沒什么,結(jié)構(gòu)就是所有的語(yǔ)句都被跳過而已。 程序并不會(huì)終止,也不會(huì)報(bào)錯(cuò),因?yàn)檫@種情況在 C 中并不認(rèn)為是個(gè)錯(cuò)誤。 但是,如果你并不想忽略不匹配所有標(biāo)簽的表達(dá)式的值時(shí)該怎么辦呢? 你可以在語(yǔ)句列表中增加一條default子句,把下面的標(biāo)簽 default: 寫在任何一個(gè) case 標(biāo)簽可以出現(xiàn)的位置。 當(dāng) switch 表達(dá)式的值并不匹配所有 case 標(biāo)簽的值時(shí),這個(gè) default 子句后面的語(yǔ)句就會(huì)執(zhí)行。 所以,每個(gè)switch語(yǔ)句中只能出現(xiàn)一條default子句。 但是它可以出現(xiàn)在語(yǔ)句列表的任何位置,而且語(yǔ)句流會(huì)像執(zhí)行一個(gè) case 標(biāo)簽一樣執(zhí)行 default 子句。
#includeint main()
{
int day = 0;
scanf_s("%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;
default:
printf("休息日\(chéng)n");
break;
}
return 0;
}
在每個(gè) switch 語(yǔ)句中都放一條default子句是個(gè)好習(xí)慣,甚至可以在后邊再加一個(gè) break 。
通過今天的學(xué)習(xí),我們要熟練的掌握幾種條件判斷語(yǔ)句的用法,并明白背后的道理。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧