日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C語(yǔ)言之選擇語(yǔ)句-創(chuàng)新互聯(lián)
在C語(yǔ)言中實(shí)現(xiàn)選擇結(jié)構(gòu)用選擇語(yǔ)句:
  • if語(yǔ)句
  • 條件運(yùn)算符? ? ?? :
  • switch語(yǔ)句
一.if語(yǔ)句
  1. 單分支:if(表達(dá)式)語(yǔ)句
  2. 雙分支:if(表達(dá)式) 語(yǔ)句1? ?else 語(yǔ)句2
  3. 多分支(?if else嵌套語(yǔ)句?,階梯式的if-else-if語(yǔ)句)
1.單分支:if(表達(dá)式)語(yǔ)句

a546e33311de4b86860bb2e162324cd3.jpg

創(chuàng)新互聯(lián)公司主營(yíng)烏恰網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,烏恰h5小程序設(shè)計(jì)搭建,烏恰網(wǎng)站營(yíng)銷推廣歡迎烏恰等地區(qū)企業(yè)咨詢
  • 若表達(dá)式值為True(或非0),則執(zhí)行表達(dá)式后面的語(yǔ)句,執(zhí)行完該語(yǔ)句后繼續(xù)執(zhí)行if語(yǔ)句后的語(yǔ)句。
  • 若表達(dá)式值為0,則不執(zhí)行表達(dá)式后面的語(yǔ)句而直接執(zhí)行if 語(yǔ)句后的語(yǔ)句。

if語(yǔ)句中的表達(dá)式可以是關(guān)系表達(dá)式、邏輯表達(dá)式,甚至還可以是數(shù)值表達(dá)式。在C語(yǔ)言中,表達(dá)式的值為非0時(shí),系統(tǒng)均按真值處理。

“表達(dá)式”后面的語(yǔ)句可以是復(fù)合語(yǔ)句。復(fù)合語(yǔ)句是指用一對(duì)花括號(hào)}包含起來(lái)的若干條語(yǔ)句。被當(dāng)作一條
語(yǔ)句來(lái)處理。

ps:復(fù)合語(yǔ)句

1. 在程序中應(yīng)把復(fù)合語(yǔ)句看成是單條語(yǔ)句,而不是多條語(yǔ)句;
2.復(fù)合語(yǔ)句內(nèi)的各條語(yǔ)句必須是以“;”結(jié)尾,最后一條語(yǔ)句的結(jié)尾也必須有分號(hào)“;”
3.復(fù)合語(yǔ)句還可以包含復(fù)合語(yǔ)句,即復(fù)合語(yǔ)句允許嵌套,但必須保證嵌套是完整的,不允許交叉嵌套。

應(yīng)用樣例:

例1:輸入任意三個(gè)整數(shù)a、b、c,求三個(gè)數(shù)中的大值。

2f11e1acfa8c4db4b43bdf1562e70108.jpg

思路:擂臺(tái)法

首先取一個(gè)數(shù)預(yù)置為max(大值),然后再用max依次與其余的數(shù)逐個(gè)比較,如果發(fā)現(xiàn)有比max大的,就用它給max重新賦值,比較完所有的數(shù)后,max中的數(shù)就是大值。

代碼如下:

#include
void main()
{
int a,b,c,max;
printf("請(qǐng)輸入三個(gè)整數(shù)a,b,c:");
scanf("%d%d%d",&a,&b,&c);
max=a;
if(max max=b;
if(max max=c;
printf("%d",max);
}

例2:輸入3個(gè)數(shù)a,b,c,要求按由小到大的順序輸出這3個(gè)數(shù)。

560280babbb648be8e47ae36bd979c60.jpg

思路:使用判斷交換法

分析:對(duì)于3個(gè)數(shù),有6種可能:

a
  • 若a>b,則交換a,b,此時(shí)a是兩者中較小的。

  • 若a>c,則交換a,c,此時(shí)a是兩者中較小的。

經(jīng)過以上兩步,得出a中存放的是三者中最小的。

  • 若b>c,則交換b,c,此時(shí)b是兩者中較小的。

經(jīng)過這一步得出b是三者中,次小的。

綜合以上三步,得出結(jié)果a

代碼如下:

#include
void main()
{
int a,b,c,t;
printf("請(qǐng)輸入三個(gè)整數(shù)a,b,c:");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}
printf("%d%2d%2d",a,b,c);
}

關(guān)于“單分支if語(yǔ)句”的常見錯(cuò)誤:

錯(cuò)誤1:關(guān)于分號(hào)的錯(cuò)誤

剛接觸if語(yǔ)句,不少初學(xué)者會(huì)在“if(表達(dá)式)”后面加分號(hào),由于一個(gè)單獨(dú)的分號(hào)屬于一條空語(yǔ)句,會(huì)被if結(jié)合,造成本來(lái)應(yīng)屬于if的語(yǔ)句體不能被if結(jié)合。

錯(cuò)誤2:關(guān)于復(fù)合語(yǔ)句的錯(cuò)誤

當(dāng)if的語(yǔ)句體有多條語(yǔ)句時(shí),沒有用花括號(hào)括起來(lái),引起邏輯錯(cuò)誤。

2.雙分支結(jié)構(gòu):if .....…else

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

else語(yǔ)句本身不能單獨(dú)存在,必須與if配對(duì)使用。

  • 如果表達(dá)式為真,執(zhí)行 if 后面的語(yǔ)句塊1;
  • 如果表達(dá)式為假,則執(zhí)行else 后面的語(yǔ)句塊2。

if...else結(jié)構(gòu)中的語(yǔ)句塊1與語(yǔ)句塊2都可以是復(fù)合語(yǔ)句。

在if...else結(jié)構(gòu)中,語(yǔ)句塊1與語(yǔ)句塊2都可以是空語(yǔ)句。

應(yīng)用樣例:

例1:判斷給出的一個(gè)三位整數(shù)是不是“回?cái)?shù)”。

回?cái)?shù):所謂“回?cái)?shù)”是指一個(gè)數(shù)正著讀和反著讀都一樣。例如,121是回?cái)?shù),123則不是。

思路:我們當(dāng)然可以定義一個(gè)變量來(lái)存放倒過來(lái)的數(shù),但由于題目只要求是三位數(shù),那么只需個(gè)位和百位相同。

7410c353e3f94c58a74c9b6e5a7d7b55.jpg

代碼如下:

#include
#include
void main()
{
int a;
printf("請(qǐng)輸入一個(gè)三位數(shù):");
scanf("%d",&a);
if(a/100==a%10)
printf("是回?cái)?shù)");
else
printf("不是回?cái)?shù)");
}

關(guān)于“雙分支if語(yǔ)句”的常見錯(cuò)誤:

錯(cuò)誤1:關(guān)于分號(hào)的錯(cuò)誤

fe79c22853184eaa82c2ca34e20c431c.jpg

else不能單獨(dú)出現(xiàn)? ? ? ? ? ? ? ? ? ? ? ? ?max=b,一定執(zhí)行

錯(cuò)誤2:關(guān)于花括號(hào)的錯(cuò)誤

20cd8ec3ccd542a5870183bf671ec93e.jpg

else不能單獨(dú)出現(xiàn)? ? ? ? ? ? ? ? ? ? ? ?printf語(yǔ)句一定執(zhí)行

錯(cuò)誤3:關(guān)于表達(dá)式的錯(cuò)誤

53bb10303f0443f0966ee786ee81f2c5.jpg

else本身就是條件,后面不再有表達(dá)式

3.嵌套if語(yǔ)句

嵌套 if 語(yǔ)句就是將整個(gè) if 塊插入另一個(gè)if塊(else塊)中。

4dc80a5e993145d4bd65c14a7c1ec293.jpg

  • else總是與它前面最近的未配對(duì)的if配對(duì)使用。
  • 可通過增加花括號(hào){}來(lái)確定配對(duì)關(guān)系。

例:以下這個(gè)else部分屬于哪個(gè)if。

if(x>0)

if (y>1)? ? ?

z=1;
else
?z=2;

初學(xué)時(shí)容易將與else對(duì)齊的if默認(rèn)為是一對(duì),而事實(shí)else必須和前面最近的未配對(duì)的if配對(duì)。

應(yīng)用樣例:

例1:求一元二次方程ax*2+bx+c=0的根。

思路:

(1)a等于0,方程只有一個(gè)實(shí)根
(2)a不等于0,又分為3種情況:
(1)判別式b*2-4ac等于0,方程有兩個(gè)相等的實(shí)根;
(2)判別式b*2-4ac大于0,方程有兩個(gè)不等的實(shí)根;
(3)判別式b*2-4ac小于0,方程無(wú)實(shí)根:

ac0a0f0c0e0c41c3a48836ad1bc16101.jpg

代碼如下:

#include
#include
void main()
{
int a,b,c,x1,x2;
printf("請(qǐng)輸入此一元二次方程:");
scanf("%dx*2+%dx+%d",&a,&b,&c);
if(a==0)
printf("有一個(gè)實(shí)根,且為%d",-c/b);
else
{
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
if(b*b-4*a*c==0)
printf("有兩個(gè)相等的實(shí)根x1=x2=%d",x1);
else
{
if(b*b-4*a*c>0)
printf("有兩個(gè)不相等的實(shí)根x1=%d,x2=%d",x1,x2);
else
printf("無(wú)實(shí)根");
}
}
}

4.多分支if語(yǔ)句

多分支if語(yǔ)句是嵌套if語(yǔ)句的另一種形式,這種形式也稱為階梯式 if-else-if 。

if(表達(dá)式1)
? 語(yǔ)句組1;
else if(表達(dá)式2)
? 語(yǔ)句組2;
else if(表達(dá)式3)
? 語(yǔ)句組3;
… …
else
? 語(yǔ)句組n;

流程圖:

bb614f4ee06b4bb29637868320b01ecd.jpg

應(yīng)用樣例:

例1:通過輸入年級(jí),得出你所處學(xué)段。

1~6年級(jí)? ? ?小學(xué)

7~9年級(jí)? ? ?初中

10~12年級(jí)? 高中

13~16年級(jí)? ? 大學(xué)

7d87a517c0c34a4c9a6375a45b9b5840.jpg

代碼如下:

#include
#include
void main()
{
int a;
printf("請(qǐng)輸入你的年級(jí)::");
scanf("%d",&a);
if(1<=a&&a<=6)
printf("小學(xué)");
else if(7<=a&&a<=9)
printf("初中");
else if(10<=a&&a<=12)
printf("高中");
else if(13<=a&&a<=16)
printf("大學(xué)");
}

二.條件表達(dá)式

主要解決兩個(gè)分支為同一個(gè)變量賦值的問題,可使程序簡(jiǎn)潔。

條件表達(dá)式的一般形式為:
表達(dá)式1?表達(dá)式2:表達(dá)式3
  • 先求出表達(dá)式1的值,若非0(真),則求出表達(dá)式2的值就是整個(gè)條件表達(dá)式的值。
  • 否則,求出表達(dá)式3的值就是整個(gè)條件表達(dá)式的值。

流程圖:

a022e22ddde64dd882bf524d200ac27e.jpg樣例:

614e5cc3b5b249328d7501a4aa0c455f.jpg

二者等價(jià),且更加簡(jiǎn)潔。

ps:

  1. 條件運(yùn)算符優(yōu)先級(jí)僅高于逗號(hào)運(yùn)算符和賦值運(yùn)算符。
  2. 條件運(yùn)算符的優(yōu)先級(jí)比關(guān)系運(yùn)算符與算術(shù)運(yùn)算符都要低。
  3. 條件運(yùn)算符的結(jié)合方向?yàn)椤皬挠业阶蟆薄?/li>

三.switch語(yǔ)句

switch-case語(yǔ)句是多路判斷語(yǔ)句,計(jì)算條件表達(dá)式并對(duì)照多個(gè)常數(shù)值進(jìn)行檢查。

ffd1a21b7b0b4d118d2138e3bd699ee5.jpg

用法:

  1. 各個(gè)case 和default出現(xiàn)的次序不影響執(zhí)行結(jié)果。
  2. 每個(gè)case語(yǔ)句后一般情況下應(yīng)有一個(gè)break語(yǔ)句,用于退出swith結(jié)構(gòu)。
  3. case后面的語(yǔ)句中如果沒有break語(yǔ)句,則執(zhí)行完本case后的語(yǔ)句會(huì)接著執(zhí)行下面的case 。
  4. 多個(gè)case可共用一組語(yǔ)句。
  5. 每?jī)蓚€(gè) case 標(biāo)簽之間的語(yǔ)句數(shù)不限,允許有多個(gè)語(yǔ)句,可以不用{ }括起來(lái)。

通常情況下,每個(gè)case子句后都會(huì)有一個(gè)break語(yǔ)句;如果case子句中沒有break語(yǔ)句,則會(huì)在執(zhí)行完匹配的case子句后,繼續(xù)向下執(zhí)行后面的case子句,直至switch語(yǔ)句結(jié)束。

b84d407b755e4033b19e6a5bc373798a.jpg

例如輸入的m為1,在此程序中,它在執(zhí)行完case 1后會(huì)繼續(xù)執(zhí)行case 2,case 3,直到遇到break,才會(huì)終止。

應(yīng)用樣例:

例1:要求用戶輸入一個(gè)小寫字母并檢查它是否為元音字母。

483d2c98a2d5464088e5fc3fe05fa733.jpg

代碼如下:

#include
#include
void main()
{
char a;
printf("請(qǐng)輸入一個(gè)小寫字母:");
scanf("%c",&a);
switch(a)
{
case 'a': printf("是元音字母");break;
case 'o': printf("是元音字母");break;
case 'e': printf("是元音字母");break;
case 'i': printf("是元音字母");break;
case 'u': printf("是元音字母");break;
default:? printf("不是元音字母");
}
}

四.多重if語(yǔ)句和switch 語(yǔ)句的比較
  • 多重if語(yǔ)句和switch語(yǔ)句都可以用來(lái)實(shí)現(xiàn)多路分支。
  • switch語(yǔ)句一般只能實(shí)現(xiàn)等值的比較,多重if語(yǔ)句可以處理范圍,某些范圍問題也可以通過將范圍通過某些方法轉(zhuǎn)化為確定值從而通過switch來(lái)實(shí)現(xiàn),而有些問題只能使用多重if語(yǔ)句來(lái)實(shí)現(xiàn),例如要判斷一個(gè)值是否處在某個(gè)區(qū)間的情況。

例1:要求按照百分制考試分?jǐn)?shù)輸出等級(jí)。分段原則如下:

90~100 為A級(jí)

80~89 為B級(jí)

70~79 為C級(jí)

60~69 為D級(jí)

其它為E級(jí)

1.用多分支if語(yǔ)句實(shí)現(xiàn)

2712ae68fec741fca7975bbb6d1ab0b1.jpg

利用多分支if的特點(diǎn),只要判斷出一個(gè)真值就不再執(zhí)行下面的判斷。那么其范圍的右端,由上一個(gè)判斷已經(jīng)確定,完全可以不寫。

c59e45b2918e428e8023f3c1eedf07e3.jpg

代碼如下:

#include
void main()
{
int a;
printf("請(qǐng)輸入你的分?jǐn)?shù)a:");
scanf("%d",&a);
if(a<0||a>100)
printf("輸入分?jǐn)?shù)錯(cuò)誤");
else if(a>=90)
printf("A");
else if(a>=80)
printf("B");
else if(a>=70)
printf("C");
else if(a>=60)
printf("D");
else
printf("E");
}

當(dāng)然對(duì)于此題而言,就算在每個(gè)括號(hào)內(nèi)加上每個(gè)的范圍區(qū)間,也不能說是多此一舉。這樣寫倒還可以顯得跟加直觀一些。

0c53986a4d9c40cf876cbe3362d455ef.jpg

代碼如下:

#include
void main()
{
int a;
printf("請(qǐng)輸入你的分?jǐn)?shù)a:");
scanf("%d",&a);
if(a>=90&&a<=100)
printf("A");
else if(a>=80&&a<90)
printf("B");
else if(a>=70&&a<80)
printf("C");
else if(a>=60&&a<70)
printf("D");
else
printf("E");
}

像此種范圍左右都確定的寫法,將else if改為if,就變成多個(gè)單分支語(yǔ)句。由于篇幅不再贅述,可以自行復(fù)制后修改。會(huì)發(fā)現(xiàn)一樣可以實(shí)現(xiàn)程序運(yùn)行。其二者的區(qū)別在于,對(duì)于多分支if一旦判斷出一個(gè)真值,以下分支將不再判斷。而這種多個(gè)單分支if,互不影響,你出真值跟下一個(gè)無(wú)關(guān),故每個(gè)都會(huì)進(jìn)行判斷。

2.用switch-case語(yǔ)句實(shí)現(xiàn)

case后面只能帶一個(gè)常數(shù),似乎不能直接實(shí)現(xiàn),所以需要我們進(jìn)行轉(zhuǎn)換一下:

分析這些分?jǐn)?shù)段可發(fā)現(xiàn),分?jǐn)?shù)段的變化點(diǎn)都是10的整數(shù)倍,如果將分?jǐn)?shù)整除10,則可以轉(zhuǎn)化為整數(shù)。

758a7076700b46b8b989fc9b8de30902.jpg

為使用switch語(yǔ)句,必須將分?jǐn)?shù)段與等級(jí)的關(guān)系,轉(zhuǎn)換成某些整數(shù)與等級(jí)的關(guān)系。
代碼如下:

#include
void main()
{
int a,b;
printf("請(qǐng)輸入你的分?jǐn)?shù)a:");
scanf("%d",&a);
b=a/10;
switch(b)
{
case 10:?
case 9:?? printf("A");break;
case 8:?? printf("B");break;
case 7:?? printf("C");break;
case 6:?? printf("D");break;
default:? printf("E");break;
}
}

你是否還在尋找穩(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)查看詳情吧


網(wǎng)站題目:C語(yǔ)言之選擇語(yǔ)句-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://www.dlmjj.cn/article/ppgjh.html