【從飲水機到名人堂之c語言】詳解分支語句-創(chuàng)新互聯(lián)

目錄

創(chuàng)新互聯(lián)公司專注于羅定網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供羅定營銷型網(wǎng)站建設,羅定網(wǎng)站制作、羅定網(wǎng)頁設計、羅定網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務,打造羅定網(wǎng)絡公司原創(chuàng)品牌,更為您提供羅定網(wǎng)站排名全網(wǎng)營銷落地服務。

前言

一、if 語句

1.語法結構

2.懸空else?

二、switch語句?

1.語句結構

2.在switch語句中的 break

3. default子句

總結


前言

在前面章節(jié)的學習中,我們只是對C語言有了一個大致的了解,讓我們可以看懂一些簡單的程序,從今天開始,我們就要深入的學習C語言的內(nèi)容。

C 語句可分為以下五類: 1. 表達式語句 2. 函數(shù)調(diào)用語句 3. 控制語句 4. 復合語句 5. 空語句 而控制語句又分為 條件語句,循環(huán)語句和轉(zhuǎn)向語句,我們今天要學習的是控制語句中的 條件語句。
一、if 語句 1.語法結構
//半選擇結構
if () {
   表達式;
}
//if else 結構
if () {
   表達式1;
}
else {
   表達式2;
}
//多選擇結構
if(表達式1)
 ? ?語句1;
else if(表達式2)
 ? ?語句2;
else
 ? ?語句3;

if 語句的結構,如果if后面的表達式為真時,執(zhí)行后邊的語句,如果表達式為0即為假,當不為0時即為真,如表達式為-1時為真。?

如果執(zhí)行單條語句時,我們我們可以不帶{ },但是我們要輸入多條語句時,必須帶上大括號{ }。

#includeint main()
{
 ? ?if(表達式)
 ? {
 ? ? ? ?語句列表1;
 ? }
 ? ?else
 ? {
 ? ? ? ?語句列表2;
 ? }
 ? ?return 0

為了更好地掌握if語句,我們可以過下邊的幾段代碼來分析。

代碼1中,我們輸入age,通過if判斷,當age<18時,即說明判斷為真,即輸出未成年,當我們age>=18時,判斷為假,不輸出。

#include//代碼1
int main()
{
 int age = 0;
 ? ?scanf("%d", &age);
 ? ?if(age<18)
 ? {
 ? ? ? ?printf("未成年\n");
 ? }
}

代碼2中,輸出age,當age<18時輸出未成年,else在這里相當于age>=18,即輸出成年。

//代碼2
#includeint main()
{
 int age = 0;
 ? ?scanf("%d", &age);
 ? ?if(age<18)
 ? {
 ? ? ? ?printf("未成年\n");
 ? }
 ? ?else
 ? {
 ? ? ? ?printf("成年\n");
 ? }
}

代碼3中?,這是多分支的條件語句,通過多組else if語句來控制輸出,else if和if一樣,后邊的判斷語句為真時,大括號內(nèi)的語句成立,否則不成立。

//代碼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");
 ? }
 ? ?
}

2.懸空else?

我們先來看這樣一段代碼。

#includeint main()
{
 ? ?int a = 0;
 ? ?int b = 2;
 ? ?if(a == 1)
 ? ? ? ?if(b == 2)
 ? ? ? ? ? ?printf("hehe\n");
 ? ?else
 ? ? ? ?printf("haha\n");
 ? ?return 0;
}

你是否以為這個程序最終輸出 haha ,那就大錯特錯了,我們可以看到這里有兩個if表達式,卻只有一個else 表達式,這個時候我們就要考慮到if 和 else 的配對問題,我們C語言的語法中,else會和離它最近的一個if配對,故當?shù)谝粋€if不成立后,不會進行第二個if的判斷,故程序的結果應該是沒有輸出。

我們可以調(diào)整一下程序的風格和大括號的使用,這樣我們就可以更清楚的理解了。

//適當?shù)氖褂脅}可以使代碼的邏輯更加清楚。
//代碼風格很重要
#includeint main()
{
 ? ?int a = 0;
 ? ?int b = 2;
 ? ?if(a == 1)
 ? {
 ? ? ? ?if(b == 2)
 ? ? ? {
 ? ? ? ? ? ?printf("hehe\n");
 ? ? ? }
 ? }
 ? ?else
 ? {
 ? ? ? ? printf("haha\n");
 ? } ? ? ? 
 ? ?return 0;
}

二、switch語句?
switch 語句也是一種分支語句。 常常用于多分支的情況。 比如: 輸入 1 ,輸出星期一 輸入 2 ,輸出星期二 輸入 3 ,輸出星期三 輸入 4 ,輸出星期四 輸入 5 ,輸出星期五 輸入 6 ,輸出星期六 輸入 7 ,輸出星期日 那我沒寫成 if...else if ...else if 的形式太復雜,那我們就得有不一樣的語法形式。 這就是 switch 語句。
1.語句結構
switch ( 整型表達式 ) {

?case 整形常量表達式:

? ? 語句 ; }

2.在switch語句中的 break

這是我們的一段輸出周幾的程序,我們來看看效果。

#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;
}

但是輸出結果為什么是星期三,星期四,星期五,星期六,星期天呢,哪里出了問題呢??

在switch語句中,我們沒辦法直接實現(xiàn)分支,搭配break使用才能實現(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;
}

這樣的話,我們就可以正確的輸出了。


3. default子句
如果表達的值與所有的 case 標簽的值都不匹配怎么辦? 其實也沒什么,結構就是所有的語句都被跳過而已。 程序并不會終止,也不會報錯,因為這種情況在 C 中并不認為是個錯誤。 但是,如果你并不想忽略不匹配所有標簽的表達式的值時該怎么辦呢? 你可以在語句列表中增加一條default子句,把下面的標簽 default: 寫在任何一個 case 標簽可以出現(xiàn)的位置。 當 switch 表達式的值并不匹配所有 case 標簽的值時,這個 default 子句后面的語句就會執(zhí)行。 所以,每個switch語句中只能出現(xiàn)一條default子句。 但是它可以出現(xiàn)在語句列表的任何位置,而且語句流會像執(zhí)行一個 case 標簽一樣執(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("休息日\n");
			break;
	}
	return 0;
}

在每個 switch 語句中都放一條default子句是個好習慣,甚至可以在后邊再加一個 break 。


總結

通過今天的學習,我們要熟練的掌握幾種條件判斷語句的用法,并明白背后的道理。

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

分享標題:【從飲水機到名人堂之c語言】詳解分支語句-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://www.muchs.cn/article0/dsocoo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站、網(wǎng)站策劃自適應網(wǎng)站、網(wǎng)站建設營銷型網(wǎng)站建設、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化