- C程序設(shè)計(jì)語言
- 魏東平 朱連章 于廣斌編著
- 575字
- 2018-12-29 14:37:49
4.3.2 if語句的嵌套
當(dāng)if語句子句又是if語句時(shí),就構(gòu)成了if語句的嵌套。if語句既可以嵌套在then子句中,也可以嵌套在else子句中??梢杂腥缦滦问降那短祝?/p>
① if(表達(dá)式) if語句; ② if(表達(dá)式) if語句; else if語句;
嵌套的if語句可能又是if-else型的,這將會(huì)出現(xiàn)多個(gè)if和多個(gè)else重疊的情況,這時(shí)要特別注意if和else的配對(duì)問題。
if語句嵌套時(shí),else子句與if的匹配原則是與在它上面、距它最近且尚未匹配的if配對(duì)。為明確匹配關(guān)系,避免匹配錯(cuò)誤,強(qiáng)烈建議:將內(nèi)嵌的if語句,一律用大括號(hào)括起來。
另外,還要注意if語句的嵌套的層數(shù)不宜太多。在實(shí)際編程時(shí),應(yīng)適當(dāng)控制嵌套層數(shù)(一般為2~3層)。
【例4.6】 用嵌套的if語句改寫例4.4的程序:判斷一個(gè)年份是否閏年。
這里只給出源程序,請(qǐng)讀者對(duì)照例4.4的程序進(jìn)行分析。程序如下:
1 #include<stdio.h> 2 void main() 3 { 4 int year,leap=0; /* leap預(yù)置為0,非閏年 */ 5 printf("Please input the year:"); 6 scanf("%d",&year); 7 if(year%100!=0) 8 { if(year%4==0)leap=1; 9 } 10 else 11 { if(year%400==0)leap=1; 12 } 13 if(leap)printf("%d is a leap year.\n",year); 14 else printf("%d is not a leap year.\n",year); 15 }
請(qǐng)大家試一試,如果去掉第8~9行的大括號(hào)“{}”,會(huì)是什么結(jié)果?去掉第11~12行的“{}”又會(huì)怎樣呢?
【例4.7】 根據(jù)平面上一點(diǎn)M (x, y)的坐標(biāo)判斷點(diǎn)M所在的象限。
分析:將x和y的值分別與0進(jìn)行比較,即可判斷出點(diǎn)M (x, y)所處的象限。在這里,不考慮坐標(biāo)軸上的點(diǎn),認(rèn)為它們可以處于任意象限。
程序如下:
1 #include<stdio.h> 2 void main() 3 { 4 float x,y; 5 printf("input x,y:"); 6 scanf("%f,%f",&x,&y); 7 if(x)0) 8 if(y)0)printf("在第一象限\n"); 9 else printf("在第四象限\n"); 10 else 11 if(y)0)printf("在第二象限\n"); 12 else printf("在第三象限\n"); 13 }
推薦閱讀
- 南海潮音:一個(gè)學(xué)者官員的村居調(diào)研手記
- 設(shè)計(jì)概論
- 健康治理學(xué)導(dǎo)論
- 唐坪村:本土文化恢復(fù)推動(dòng)社區(qū)重建
- 軟件過程改進(jìn)案例教程
- 米什金《貨幣金融學(xué)》(第9版)筆記和課后習(xí)題(含考研真題)詳解[視頻講解]
- 現(xiàn)代保險(xiǎn)學(xué)教程
- ASP.NET 3.5實(shí)用教程
- 智能網(wǎng)聯(lián)汽車概論
- 傳感器技術(shù)
- 納稅籌劃實(shí)務(wù)(第2版)
- 藥物分析
- 音樂著作權(quán)概論
- 安全與急救:大學(xué)生安全教育(慕課版)
- TCP-IP協(xié)議及其應(yīng)用