中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

梅州網(wǎng)站建seo外鏈平臺(tái)熱狗

梅州網(wǎng)站建,seo外鏈平臺(tái)熱狗,四川建設(shè)廳報(bào)名網(wǎng)站,網(wǎng)站建設(shè)與管理規(guī)定大家好啊,我是小象?(?ω?)? 我的博客:Xiao Xiangζ????? 很高興見(jiàn)到大家,希望能夠和大家一起交流學(xué)習(xí),共同進(jìn)步。* 這一節(jié)內(nèi)容很多,文章字?jǐn)?shù)達(dá)到了史無(wú)前例的一萬(wàn)一,我們要來(lái)學(xué)習(xí)分支與循環(huán)結(jié)構(gòu)中…

在這里插入圖片描述

大家好啊,我是小象?(?òωó?)?
我的博客:Xiao Xiangζ?????

很高興見(jiàn)到大家,希望能夠和大家一起交流學(xué)習(xí),共同進(jìn)步。*
在這里插入圖片描述
這一節(jié)內(nèi)容很多,文章字?jǐn)?shù)達(dá)到了史無(wú)前例的一萬(wàn)一,我們要來(lái)學(xué)習(xí)分支與循環(huán)結(jié)構(gòu)中的分支,學(xué)習(xí)if和switch語(yǔ)句,了解各種操作符和運(yùn)算符的使用…

文章目錄

  • 開篇
  • 一、if語(yǔ)句
    • 1.1if
    • 1.2 else
    • 1.3 分支中包含多條語(yǔ)句
    • 1.4 嵌套if
    • 1.5 懸空else問(wèn)題
    • 2.關(guān)系操作符
    • 3.條件操作符
    • 4.邏輯操作符:&& , || , !
    • 4.1 邏輯取反運(yùn)算符 !
    • 4.2 邏輯與運(yùn)算符
    • 4.3 邏輯或運(yùn)算符
      • 來(lái)個(gè)小練習(xí):判斷閏年
    • 4.4 短路
  • 二、switch 語(yǔ)句
  • 5.1 if語(yǔ)句和switch語(yǔ)句的對(duì)比
    • 5.2 switch語(yǔ)句中的break
      • 來(lái)個(gè)練習(xí)
  • 5.3 switch語(yǔ)句中的default
    • 5.4 switch語(yǔ)句中的case和default的順序問(wèn)題
  • 結(jié)尾

開篇

前面我們說(shuō)過(guò),C語(yǔ)言是結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,這里的結(jié)構(gòu)指的是順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),C語(yǔ)言是能夠?qū)崿F(xiàn)這三種結(jié)構(gòu)的。
我們可以使用 if 、 switch 實(shí)現(xiàn)分支結(jié)構(gòu),使用 for 、 while 、 do while 實(shí)現(xiàn)循環(huán)結(jié)構(gòu)。

一、if語(yǔ)句

if語(yǔ)句是C語(yǔ)言中用于條件判斷和控制程序流程的基本結(jié)構(gòu)之一,理解并熟練使用if語(yǔ)句對(duì)于編寫有效的C語(yǔ)言程序至關(guān)重要。

1.1if

if 語(yǔ)句的語(yǔ)法形式如下:

if ( 表達(dá)式 )語(yǔ)句

表達(dá)式成立(為真),則語(yǔ)句執(zhí)行,表達(dá)式不成立(為假),則語(yǔ)句不執(zhí)行
之前在布爾類型說(shuō)過(guò),在C語(yǔ)言中,0為假,非0表示真,也就是表達(dá)式的結(jié)果如果是0,則語(yǔ)句不執(zhí)行,表達(dá)式的結(jié)果如果不是0,則語(yǔ)句執(zhí)行。
例?:輸入一個(gè)整數(shù),判斷是否為奇數(shù)

#include <stdio.h>
int main()
{int num = 0;scanf("%d", &num);if(num % 2 == 1)printf("%d 是奇數(shù)\n", num);return 0;
}

在這里插入圖片描述
舉個(gè)例子:
在這里插入圖片描述

1.2 else

如果一個(gè)數(shù)不是奇數(shù),那就是偶數(shù)了,如果任意一個(gè)整數(shù),我們要清楚的判斷是奇數(shù)還是偶數(shù)怎么表示呢?
這里就需要 if…else… 語(yǔ)句了,語(yǔ)法形式如下:

if ( 表達(dá)式 )語(yǔ)句1
else語(yǔ)句2

例子:判斷整數(shù)是否為偶數(shù),是的話打印偶數(shù),否則奇數(shù)
很簡(jiǎn)單:

# include <stdio.h>
int main()
{int num = 0;scanf("%d", &num);  if (num % 2 == 0)    注意if第一句不能有逗號(hào)printf("%d 為偶數(shù)\n", num);elseprintf("%d 為奇數(shù)\n", num);return 0;
}

練習(xí):輸入一個(gè)年齡,>= 18歲就輸出:成年,否則就輸出:未成年
參考代碼:

#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age>=18)
printf("成年\n");
else
printf("未成年\n");
return 0;
}

1.3 分支中包含多條語(yǔ)句

默認(rèn)在 if 和 else 語(yǔ)句中默認(rèn)都只控制一條語(yǔ)句,比如:

#include <stdio.h>
int main()
{int age = 0;scanf("%d", &age);if(age >= 18)printf("成年了\n");printf("太好了\n");return 0;}

在這里插入圖片描述
在這里插入圖片描述

上面的代碼,你會(huì)發(fā)現(xiàn)輸入的值不管是>=18 還是<18,“太好了” 都會(huì)打印在屏幕上。

這是因?yàn)?if 語(yǔ)句只能控制一條語(yǔ)句,就是 printf(“成年了\n”); ,if語(yǔ)句為真,則打印成年了,if語(yǔ)句為假,則不打印,對(duì)于 printf(“太好了\n”); 是獨(dú)立存在的,不管if語(yǔ)句的條件的真假,都會(huì)被執(zhí)行。那如果我們要if語(yǔ)句同時(shí)控制2條語(yǔ)句,怎么辦呢?那就要使用 { } 將代碼括起來(lái),else 后也可以跟上大括號(hào)。如下:

#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if(age >= 18) //if 后使?{} 控制多條語(yǔ)句-這個(gè)塊也叫:程序塊,或者復(fù)合語(yǔ)句
{
printf("成年了\n");
printf("太好了\n");
}
return 0;
}

當(dāng)然,我們還能再優(yōu)化一下:

#include <stdio.h>
int main()
{int age = 0;scanf("%d", &age);if(age >= 18) //if 后使用{} 控制多條語(yǔ)句-這個(gè)塊也叫:程序塊,或者復(fù)合語(yǔ)句{printf("成年了\n");printf("太好了\n");}else //else 后使用{}控制多條語(yǔ)句-這個(gè)塊也叫:程序塊,或者復(fù)合語(yǔ)句{printf("未成年\n");printf("心碎?\n");}return 0;
}

1.4 嵌套if

在 if else 語(yǔ)句中, else 可以與另一個(gè) if 語(yǔ)句連用,構(gòu)成多重判斷。
比如:要求輸入一個(gè)整數(shù),判斷輸入的整數(shù)是0,還是正數(shù)或者負(fù)數(shù)。請(qǐng)看如下代碼:
我們來(lái)看第一種寫法:

int main()
{int num = 0;//輸入scanf("%d", &num);if (num == 0)printf("輸入的整數(shù)是0\n");else //正數(shù)或者負(fù)數(shù){if (num > 0)printf("輸入的整數(shù)是正數(shù)\n");elseprintf("輸入的整數(shù)是負(fù)數(shù)\n");}return 0;
}

我們也可以把else和if整合到一起,形成一條語(yǔ)句,第二種寫法:

#include <stdio.h>
int main()
{int num = 0;scanf("%d", &num);if(num == 0)printf("輸?的數(shù)字是0\n");else if(num > 0) //這?的if 相當(dāng)于嵌套在else語(yǔ)句中,形成了嵌套結(jié)構(gòu)printf("輸?的數(shù)字是正數(shù)\n");elseprintf("輸?的數(shù)字是負(fù)數(shù)\n");return 0;
}

上圖中else后面的代碼就是嵌套在前面的 else 子句中的,構(gòu)成了嵌套的if語(yǔ)句。

再比·如:
輸入一個(gè)整數(shù),如果是正數(shù),再判斷是奇數(shù)還是偶數(shù),并輸出;如果不是正數(shù)則輸出:非正數(shù)。

int main()
{int num = 0;scanf("%d", &num);if (num > 0)//正數(shù){if (num % 2 == 1)printf("奇數(shù)\n");elseprintf("偶數(shù)\n");}else{printf("非正數(shù)\n");}return 0;
}

我們可以再來(lái)看一個(gè)練習(xí):
輸入一人的年齡
如果年齡<18歲,打印"少年"
如果年齡在18歲至44歲打印"青年"
如果年齡在45歲至59歲打印"中老年"
如果年齡在60歲至89歲打印"老年"
如果90歲及以上打印"老壽星"

我們給大家兩種參考做法:

#include <stdio.h>
int main()
{int age = 0;scanf("%d", &age);if(age<18)printf("少年\n");else if(age<=44)printf("青年\n");else if(age<=59)printf("中老年\n");else if(age<=89)printf("老年\n");elseprintf("老壽星\n");return 0;
}

第二種:

int main()
{int age = 0;//輸入scanf("%d", &age);if (age < 18)printf("少年\n");else //>=18{if (age <= 44)//18~44printf("青年\n");else //>=45{if (age <= 59) //45~59printf("中老年\n");else //>=60{if (age <= 89)//60~89printf("老年\n");elseprintf("老壽星\n");}}}return 0;
}

1.5 懸空else問(wèn)題

如果有多個(gè) if 和 else ,可以記住這樣一條規(guī)則

else 總是跟最接近的 if 匹配。

我們首先從下面代碼開始

#include <stdio.h>
int main()
{int a = 0;int b = 2;if (a == 1)if (b == 2)printf("hehe\n");else printf("haha\n");return 0;
}

程序運(yùn)行的結(jié)果是啥?
很多新手,上來(lái)以判斷 a 是 0,不等于 1 ,那就執(zhí)行 else 子句,打印 haha
但是當(dāng)你去運(yùn)行代碼,輸出的結(jié)果是:啥都不輸出。

為什么呢?
這就是懸空 else 的問(wèn)題,如果有多個(gè) if 和 else ,可以記住這樣?條規(guī)則, else 總是跟最接近的 if 匹配
上面的代碼排版,讓 else 和第?個(gè) if 語(yǔ)句對(duì)齊,讓我們以為 else 是和第一個(gè)if匹配的,當(dāng) if語(yǔ)句不成立的時(shí)候,自然想到的就是執(zhí)行 else 子句,打印 haha ,但實(shí)際上 else 是和第二個(gè) if進(jìn)行匹配的,這樣后邊的 if…else 語(yǔ)句是嵌套在第一個(gè) if 語(yǔ)句中的,如果第一個(gè) if 語(yǔ)句就不成立,嵌套 if 和 else 就沒(méi)機(jī)會(huì)執(zhí)行了,最終啥都不打印。
如果代碼改成下面這樣就更加容易理解了

#include <stdio.h>
int main()
{int a = 0;int b = 2;if (a == 1){if (b == 2)printf("hehe\n");elseprintf("haha\n");}return 0;
}

或者如果我們希望else確實(shí)和第一個(gè)if匹配,可以這樣修改代碼:

#include <stdio.h>
int main()
{int a = 0;int b = 2;if (a == 1){if (b == 2)printf("hehe\n");}else{printf("haha\n");}return 0;
}

只要帶上適當(dāng)?shù)拇罄ㄌ?hào),代碼的邏輯就會(huì)更加的清晰,所以大家以后在寫代碼的時(shí)候要注意括號(hào)的使用,讓代碼的可讀性更高。

2.關(guān)系操作符

在C語(yǔ)言中,關(guān)系操作符(也稱為關(guān)系運(yùn)算符)用于比較兩個(gè)值之間的關(guān)系,并根據(jù)**比較結(jié)果返回布爾值(真或假)重要,要記住。
C 語(yǔ)言
用于比較的表達(dá)式,稱為 “關(guān)系表達(dá)式(relational expression)**,里面使用的運(yùn)算符就稱為“關(guān)系運(yùn)算符”(relational operator),主要有下面6個(gè)。

? > 大于運(yùn)算符
? < 小于運(yùn)算符
? >= 大于等于運(yùn)算符
? <= 小于等于運(yùn)算符
? == 相等運(yùn)算符
? != 不相等運(yùn)算符

下面是一些例子。

a == b;
a != b;
a < b;
a > b;
a <= b;
a >= b;

關(guān)系表達(dá)式通常返回 0 或 1 ,表示真假

C 語(yǔ)言中, 0 表示假,所有非零值表示真,比如, 20 > 12 返回 1 , 12 > 20 返回 0 。
關(guān)系表達(dá)式常用于 if 或 while 結(jié)構(gòu)。

**

注意:相等運(yùn)算符 == 與賦值運(yùn)算符 = 是兩個(gè)不?樣的運(yùn)算符,不要混淆。有時(shí)候,可能會(huì)不小心寫出下面的代碼,它可以運(yùn)行,但很容易出現(xiàn)意料之外的結(jié)果。

**

if (x = 3) ...

上面例子中,原意是 x == 3 ,但是不小心寫成 x = 3 。這個(gè)式子表示對(duì)變量 x 賦值 3 ,它的返回值為 3 ,所以 if 判斷總是為真。
為了防止出現(xiàn)這種錯(cuò)誤,有的程序員喜歡將變量寫在等號(hào)的右邊。

if (3 == x) ...

這樣的話,如果把 == 誤寫成 = ,編譯器就會(huì)報(bào)錯(cuò)。

/* 報(bào)錯(cuò) */
if (3 = x) ...

另一個(gè)需要避免的錯(cuò)誤是:多個(gè)關(guān)系運(yùn)算符不宜連用
舉個(gè)例子:

a < b < c

上面例子中,連續(xù)使用兩個(gè)小于運(yùn)算符。雖然這樣不會(huì)報(bào)錯(cuò),但是通常達(dá)不到想要的結(jié)果,即不是保證變量 b 的值在 a 和 c 之間。因?yàn)?mark>關(guān)系運(yùn)算符是從左到右計(jì)算,賦值是從右向左,所以實(shí)際執(zhí)行的是下面的表達(dá)式。

(a < b) < c

上面式子中, a < b 返回 0 或 1 ,所以最終是 0 或 1 與變量 k 進(jìn)行比較。如果想要判斷變量 b的值是否在 a 和 c 之間,應(yīng)該使用下面的寫法。

a < b && b < c

&&這個(gè)符后面會(huì)講到,這里是并且的意思
比如:我們輸入一個(gè)年齡,如果年齡在18歲~36歲之間,我們輸出?年。
如果我們這樣寫‘

#include <stdio.h>
int main()
{int age = 0;scanf("%d", &age);if (18 <= age <= 36){printf("?年\n");}return 0;
}

當(dāng)我們輸入9的時(shí)候,依然輸出青年,如下圖:
在這里插入圖片描述
這是因?yàn)?#xff0c;我們先拿18和age中存放的9比較,表達(dá)式18<=9為假, 18<=age 的結(jié)果是0,再拿0和36比較,0<=36為真,所以打印了青年 ,所以即使當(dāng)age是9的時(shí)候,也能打印青年 ,邏輯上是有問(wèn)題,這個(gè)代碼應(yīng)該怎么寫呢?
正確寫法:

#include<stdio.h>
int main()
{int age = 0;scanf("%d", &age);if (age >= 18 && age <= 36)printf("青年\n");return 0;
}

以上就是關(guān)于操作符,我們需要掌握的,剩下的只要按照字面意思理解使用就行,沒(méi)有特別注意的。

3.條件操作符

在C語(yǔ)言中,條件操作符(也稱為三元操作符)是唯一的三目操作符,它**允許根據(jù)一個(gè)條件的真假來(lái)選擇兩個(gè)值中的一個(gè)
條件操作符
需要接受三個(gè)操作數(shù)的**,形式如下:

exp1 ? exp2 : exp3

條件操作符的計(jì)算邏輯是:如果 exp1 為真, exp2 計(jì)算,計(jì)算的結(jié)果是整個(gè)表達(dá)式的結(jié)果;如果exp1 為假, exp3 計(jì)算,計(jì)算的結(jié)果是整個(gè)表達(dá)式的結(jié)果。
舉個(gè)例子:

#include <stdio.h>
int main()
{int a = 0;int b = 0;scanf("%d", &a);b = a > 5 ? 3 : -3;printf("%d",b);return 0;
}

練習(xí)2:使用條件表達(dá)式實(shí)現(xiàn)找兩個(gè)數(shù)中較大值。

#include <stdio.h>
int main()
{int a = 0;	int b = 0;scanf("%d%d", &a, &b);//%d空格中間不用空格,但輸入的時(shí)候要用空格分隔int m = a > b ? a : b;printf("%d\n", m);return 0;
}

4.邏輯操作符:&& , || , !

在C語(yǔ)言中,邏輯操作符用于執(zhí)行邏輯運(yùn)算,它們通常用于控制流語(yǔ)句中(如if和while循環(huán)),以根據(jù)給定的條件邏輯來(lái)決定程序的執(zhí)行路徑。

邏輯運(yùn)算符提供邏輯判斷功能,用于構(gòu)建更復(fù)雜的表達(dá)式,主要有下面三個(gè)運(yùn)算符。

? ! :邏輯取反運(yùn)算符(改變單個(gè)表達(dá)式的真假)。
? && :邏輯與運(yùn)算符,就是并且的意思(兩側(cè)的表達(dá)式都為真,則為真,否則為假)。
? || :邏輯或運(yùn)算符,就是或者的意思(兩側(cè)至少有一個(gè)表達(dá)式為真,則為真,否則為假)。

注意:C語(yǔ)言中零為假,非零為真

4.1 邏輯取反運(yùn)算符 !

在這里插入圖片描述
比如,我們有一個(gè)變量叫 flag ,如果flag為假,要做一個(gè)什么事情,就可以這樣寫代碼:

#include <stdio.h>
int main()
{int flat = 0;if (!flat)printf("xiaofeixiang\n");return 0;}

如果 flag 為真, !flag 就是假,如果 flag 為假, !flag 就是真
所以上面的代碼的意思就是 flag 為假,執(zhí)行if語(yǔ)句中的代碼。

4.2 邏輯與運(yùn)算符

有假則為假,只有兩個(gè)同時(shí)為真,才為真
在這里插入圖片描述
&& 就是與運(yùn)算符,也是并且的意思, && 是一個(gè)雙目操作符,使用的方式是 a&&b

&& 兩邊的表達(dá)式都是真的時(shí)候,整個(gè)表達(dá)式才為真,只要有一個(gè)是假,則整個(gè)表達(dá)式為假。

舉個(gè)例子:用代碼實(shí)現(xiàn)月份屬于3月到5月,是春天

#include <stdio.h>
int main()
{int month = 0;scanf("%d", &month);if (month >= 3 && month <= 5)printf("春季\n");return 0;
}

這里表達(dá)的意思就是month既要大于等于3,又要小于等于5,必須同時(shí)滿足。

4.3 邏輯或運(yùn)算符

有真則為真,同假才為假
在這里插入圖片描述
|| 就是或運(yùn)算符也就是或者的意思, || 也是?個(gè)雙目操作符,使用的方式是 a || b

||兩邊的表達(dá)式只要有一個(gè)是真,整個(gè)表達(dá)式就是真,兩邊的表達(dá)式都為假的時(shí)候,才為假。

比如:我們說(shuō)一年中月份是12月或者1月或者2月是冬天,那么我們?cè)趺词褂么a體現(xiàn)呢?

#include <stdio.h>
int main()
{int year = 0;scanf("%d", &year);if (year == 12 || year == 1 || year == 2);printf("冬季\n");return 0;
}

來(lái)個(gè)小練習(xí):判斷閏年

輸入一個(gè)年份year,判斷year是否是閏年
閏年判斷的規(guī)則:

  1. 能被4整除并且不能被100整除是閏年
  2. 能被400整除是閏年
#include<stdio.h>
int main()
{int year = 0;scanf("%d", &year);if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)printf("%d 是閏年\n", year);elseprintf("%d 不是閏年", year);return 0;}

4.4 短路

在C語(yǔ)言中,**短路(short-circuit)**是 邏輯運(yùn)算符&&(邏輯與)和||(邏輯或) 的一個(gè)特性。這種特性使得在邏輯表達(dá)式的求值過(guò)程中,如果根據(jù)已經(jīng)求值的部分就能夠確定整個(gè)表達(dá)式的結(jié)果,那么就不再對(duì)表達(dá)式的其余部分進(jìn)行求值。

C語(yǔ)言邏輯運(yùn)算符還有一個(gè)特點(diǎn),它總是先對(duì)左側(cè)的表達(dá)式求值,再對(duì)右邊的表達(dá)式求值,這個(gè)順序是保證的。

重要:如果左邊的表達(dá)式滿足邏輯運(yùn)算符的條件,就不再對(duì)右邊的表達(dá)式求值。這種情況稱為“短路”。

如前面的代碼:

if(month >= 3 && month <= 5)

表達(dá)式中&& 的左操作數(shù)是 month >= 3 ,右操作數(shù)是 month <= 5 ,當(dāng)左操作數(shù) month >= 3 的結(jié)果是0的時(shí)候,即使不判斷 month <= 5 ,整個(gè)表達(dá)式的結(jié)果也是0(不是春季)。
所以,對(duì)于&&操作符來(lái)說(shuō),左邊操作數(shù)的結(jié)果是0的時(shí)候,右邊操作數(shù)就不再執(zhí)行,簡(jiǎn)單來(lái)說(shuō),就是**前面的條件只要不符合就不再執(zhí)行了**
對(duì)于 || 操作符是怎么樣呢?我們結(jié)合前面的代碼:

if(month == 12 || month==1 || month == 2)

如果month == 12,則不用再判斷month是否等于1或者2,整個(gè)表達(dá)式的結(jié)果也是1(是冬季)。
所以, || 操作符的左操作數(shù)的結(jié)果不為0時(shí),就需執(zhí)行右操作數(shù),簡(jiǎn)單來(lái)說(shuō),即當(dāng)前面的條件為真時(shí),就不用再看后面的條件了
像這種僅僅根據(jù)左操作數(shù)的結(jié)果就能知道整個(gè)表達(dá)式的結(jié)果,不再對(duì)右操作數(shù)進(jìn)行計(jì)算的運(yùn)算稱為短路求值。

二、switch 語(yǔ)句

除了 if 語(yǔ)句外,C語(yǔ)言還提供了 switch 語(yǔ)句來(lái)實(shí)現(xiàn)分支結(jié)構(gòu),switch語(yǔ)句是一種多分支選擇結(jié)構(gòu),它允許程序根據(jù)一個(gè)變量的值執(zhí)行不同的代碼塊。switch語(yǔ)句通常用于替代多個(gè)if-else if-else語(yǔ)句,以使代碼更加簡(jiǎn)潔和易于維護(hù)。

switch 語(yǔ)句是一種特殊形式的 if…else 結(jié)構(gòu),用于判斷條件有多個(gè)結(jié)果的情況。它把多重的 else if 改成更易用、可讀性更好的形式。

switch (expression) 
{case value1: statementcase value2: statementdefault: statement
}

上面代碼中,根據(jù)表達(dá)式 expression 不同的值,執(zhí)行相應(yīng)的 case 分支。如果找不到對(duì)應(yīng)的值,就執(zhí)行 default 分支。

注:
? switch 后的 expression 必須是整型表達(dá)式
? case 后的值,必須是整形常量表達(dá)式

5.1 if語(yǔ)句和switch語(yǔ)句的對(duì)比

練習(xí):輸入任意一個(gè)整數(shù)值,計(jì)算除3之后的余數(shù)
如果使用if語(yǔ)句完成,如下:

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);if (n % 3 == 0)printf("整除,余數(shù)為0\n");else if (n % 3 == 1)printf("余數(shù)是1\n");elseprintf("余數(shù)是2\n");return 0;
}

如果使用switch語(yǔ)句改寫,就可以是這樣的:

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);switch (n % 3){case 0:printf("整除,余數(shù)為0\n");break;case 1:printf("余數(shù)是1\n");break;case 2:printf("余數(shù)是2\n");break;}return 0;
}

上述的代碼中,我們要注意的點(diǎn)有:

  1. case 和后邊的數(shù)字之間必須有空格
  2. 每一個(gè) case 語(yǔ)句中的代碼執(zhí)行完成后,需要加上 break ,才能跳出這個(gè)switch語(yǔ)句。
    3.case 后面用的是冒號(hào),不是分號(hào)

5.2 switch語(yǔ)句中的break

前面的代碼中,如果我們?nèi)サ鬰ase語(yǔ)句中的break,會(huì)出現(xiàn)什么情況呢?

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);switch (n % 3){case 0:printf("整除,余數(shù)為0\n");case 1:printf("余數(shù)是1\n");case 2:printf("余數(shù)是2\n");}return 0;
}

輸一組數(shù)據(jù)看看結(jié)果:
在這里插入圖片描述
我們發(fā)現(xiàn),7除以3本來(lái)余數(shù)是1,但是我們發(fā)現(xiàn)程序運(yùn)行的結(jié)果多了一行“余數(shù)是2”的打印。
這是為什么呢?
原因是 switch 語(yǔ)句也是分支效果的,

只有在 switch 語(yǔ)句中使用 break 才能在跳出 switch 語(yǔ)句
如果某一個(gè) case 語(yǔ)句的后邊沒(méi)有 break語(yǔ)句,代碼會(huì)繼續(xù)往下執(zhí)行,有可能執(zhí)行其他 case語(yǔ)句中的代碼,直到遇到 break 語(yǔ)句或者 switch 語(yǔ)句結(jié)束。

就比如上面的代碼就執(zhí)行了 case 2 中的語(yǔ)句。

所以在 switch 語(yǔ)句中 break 語(yǔ)句是非常重要的,能實(shí)現(xiàn)真正的分支效果。
當(dāng)然, break 也不是每個(gè) case 語(yǔ)句都得有,這就得根據(jù)實(shí)際情況來(lái)看了。

來(lái)個(gè)練習(xí)

輸入?個(gè)1~7的數(shù)字,打印對(duì)應(yīng)的星期幾
例如:
輸入:1 輸出:星期一
輸入:2 輸出:星期二
輸入:3 輸出:星期三
輸入:4 輸出:星期四
輸入:5 輸出:星期五
輸入:6 輸出:星期六
輸入:7 輸出:星期天

看看操作:

#include <stdio.h>
int main()
{int day = 0;scanf("%d", &day);switch (day){case 1printf("星期?\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;
}

如果需求發(fā)生變化,變?yōu)?#xff1a;

  1. 輸?1~5,輸出的是“工作日”;
  2. 輸?6~7,輸出“休息日”
    那參考代碼如下:
#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("休息日\(chéng)n");break;}return 0;
}

上面的練習(xí)中,我們發(fā)現(xiàn)應(yīng)該根據(jù)實(shí)際的情況,來(lái)在代碼中覺(jué)得是否使用 break ,或者在哪里使用break ,才能正確完成實(shí)際的需求。

5.3 switch語(yǔ)句中的default

在使用 switch 語(yǔ)句的時(shí)候,我們經(jīng)常可能遇到?種情況,比如 switch 后的表達(dá)式中的值無(wú)法匹配代碼中的 case 語(yǔ)句的時(shí)候,這時(shí)候要不就不做處理,要不就得在 switch 語(yǔ)句中加入default 子句。

switch (expression) {case value1: statementcase value2: statementdefault: statement
}

switch 后邊的 expression 的結(jié)果不是 value1 ,也不是 value2 的時(shí)候,就會(huì)執(zhí)行default子句。
就比如前面做的打印星期的練習(xí),如果 day 的輸入不是1~7的值,如果我們要提示:輸入錯(cuò)誤,則可以這樣完成代碼:

#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("休息日\(chéng)n");break;default:printf("輸入錯(cuò)誤\n");break;}return 0;
}

5.4 switch語(yǔ)句中的case和default的順序問(wèn)題

在 switch 語(yǔ)句中 case 子句和 default 子句有要求順序嗎? default 只能放在最后嗎?
其實(shí),

在 switch 語(yǔ)句中 case 語(yǔ)句和 default 語(yǔ)句是沒(méi)有順序要求的,只要你的順序是滿足實(shí)際需求的就可以。

不過(guò)我們**通常是把 default 子句放在最后處理的**。

結(jié)尾

這一課的內(nèi)容就到這里了,下節(jié)課繼續(xù)學(xué)習(xí)C語(yǔ)言的循環(huán)
如果內(nèi)容有什么問(wèn)題的話歡迎指正,有什么問(wèn)題也可以問(wèn)我!
在這里插入圖片描述

http://www.risenshineclean.com/news/6642.html

相關(guān)文章:

  • 怎么做情侶網(wǎng)站百度權(quán)重是什么意思
  • 做正版電子書下載網(wǎng)站福州網(wǎng)站排名
  • 獻(xiàn)縣網(wǎng)站甲馬營(yíng)seo網(wǎng)站優(yōu)化的
  • php做的商城網(wǎng)站設(shè)計(jì)論文網(wǎng)站排行榜查詢
  • 企業(yè)網(wǎng)站管理系統(tǒng)演示平臺(tái)查詢網(wǎng) 域名查詢
  • 禪城區(qū)建設(shè)局網(wǎng)站個(gè)人如何加入百度推廣
  • 網(wǎng)站如何做性能測(cè)試關(guān)鍵詞排名點(diǎn)擊軟件怎樣
  • 門戶網(wǎng)站建設(shè)方案公司企業(yè)培訓(xùn)課程表
  • 網(wǎng)站被百度降權(quán)對(duì)百度競(jìng)價(jià)排名的看法
  • 上海網(wǎng)站建設(shè)不好經(jīng)典廣告推廣詞
  • 網(wǎng)站備案需要什么東西互聯(lián)網(wǎng)營(yíng)銷模式有哪些
  • 做木工網(wǎng)站近期熱點(diǎn)新聞事件50個(gè)
  • 網(wǎng)站 頭尾調(diào)用學(xué)校網(wǎng)站建設(shè)
  • 各類網(wǎng)站建設(shè)信息流廣告模板
  • 如何做1個(gè)手機(jī)網(wǎng)站廣東網(wǎng)絡(luò)推廣運(yùn)營(yíng)
  • 建設(shè)pc端網(wǎng)站是什么意思網(wǎng)絡(luò)策劃書范文
  • 高端網(wǎng)站建設(shè) 杭州百度快速排名技術(shù)培訓(xùn)
  • 臨沂市建設(shè)局網(wǎng)站品牌廣告語(yǔ)經(jīng)典100條
  • 微信創(chuàng)建小程序怎么弄seo工資待遇 seo工資多少
  • 怎么用wordpress做企業(yè)網(wǎng)站有什么平臺(tái)可以發(fā)布推廣信息
  • 宜昌模板網(wǎng)站建設(shè)北京百度seo工作室
  • 電費(fèi)由誰(shuí)承擔(dān)seo排名優(yōu)化培訓(xùn)價(jià)格
  • 電子商務(wù)網(wǎng)站功能設(shè)計(jì)seo做的比較牛的公司
  • 網(wǎng)站備案要營(yíng)業(yè)執(zhí)照原件嗎上海網(wǎng)絡(luò)營(yíng)銷上海網(wǎng)絡(luò)推廣
  • 外地公司做的網(wǎng)站能備案預(yù)防電信網(wǎng)絡(luò)詐騙
  • 哈爾濱站建筑濟(jì)南seo官網(wǎng)優(yōu)化
  • 企業(yè)網(wǎng)站建設(shè)聯(lián)系網(wǎng)站流量查詢工具
  • 網(wǎng)站流量外流站長(zhǎng)推薦黃色
  • 深圳做網(wǎng)站的公seo快速軟件
  • 易企互聯(lián)網(wǎng)站建設(shè)南寧seo結(jié)算