国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C語言中if—else語句的嵌套分析

2012-04-29 00:44:03原立濤,李鳳玲,邸抗
軟件工程 2012年11期
關(guān)鍵詞:嵌套選擇分析

原立濤,李鳳玲,邸抗

摘要:選擇語句在C語言程序設(shè)計(jì)中廣泛使用,本文分析了C語言中選擇語句之間的關(guān)系,尤其對(duì)if-else語句的嵌套關(guān)系進(jìn)行了闡述說明,在分析復(fù)雜嵌套關(guān)系時(shí),強(qiáng)調(diào)else與if的對(duì)應(yīng)關(guān)系,從而可以更好地理解程序,得出準(zhǔn)確的結(jié)果。

關(guān)鍵詞:選擇;嵌套;分析

Select statement in C language program is widely used in design, this paper analyzes the C language statements in the relationship between the choice, especially for if-else statement nested relationship between explains, on the analysis of the complex nested relations, with emphasis on the corresponding shut if else, so as to better understand the program, draws accurate results.

在談及if語句嵌套時(shí),幾乎所有的教科書均給出一句經(jīng)典的說明,嵌套關(guān)系的if語句之間的配對(duì)關(guān)系的判斷方法為最里邊的if和它下面的最近的else是一對(duì)。這段話,對(duì)初學(xué)者來說不太容易理解。其實(shí),在研究if-else語句時(shí),最重要的是先解決if語句之間是并列關(guān)系還是嵌套關(guān)系。如果是并列關(guān)系,if語句之間沒有包含關(guān)系,但if語句的執(zhí)行順序會(huì)影響變量的當(dāng)前值。如果是嵌套關(guān)系,則要找到if和else之間的配對(duì)關(guān)系[1]。

由于在else語句中可以不斷地嵌套if-else語句,形成多層嵌套,因此可以將嵌套理解為從上到下逐一對(duì)if后的表達(dá)式進(jìn)行檢測(cè)。當(dāng)表達(dá)式為非0時(shí),執(zhí)行相關(guān)語句,階梯部分被越過,如果所有表達(dá)式為假,則執(zhí)行最后的else語句。這里需要注意的是,else不能省,因?yàn)槿绻麤]有else,情況可能完全不同。

看這樣一個(gè)簡單命題:

if (a

if (c= =d)y=0;

else y=1;

這三條語句是含義是什么呢?或許,我們可以得出這樣的結(jié)論,只要是滿足a小于b,并且滿足c與d相等條件的,結(jié)果y取值為零;不滿足的,y取值為1??此普_,仔細(xì)推敲起來就會(huì)發(fā)現(xiàn)問題[2]。首先看一下語句中唯一的else是哪一個(gè)if對(duì)應(yīng)的,雖然從書寫格式上看是與第一個(gè)if對(duì)應(yīng),其實(shí)不然,讓我們看一看N—S圖,就能很清楚地得到結(jié)論。所以,該語句所表達(dá)的是一個(gè)分段函數(shù),即:

很明顯,這里有關(guān)當(dāng)a大于或等于b的結(jié)果是不存在的,亦即程序壓根就沒有對(duì)這方面做出說明,因此語句中的elsey=1是針對(duì)if (c= =d)y=0;而言,如果沒有弄清關(guān)系,則會(huì)將其他結(jié)果摻雜其中,造成錯(cuò)誤。

如果再清晰一點(diǎn),我們可以在程序的后面再加上elsey=1;語句,這樣兩個(gè)else對(duì)應(yīng)各自的if就再清楚不過了。因此在嵌套的if-else語句中,如果內(nèi)嵌的if省略了else部分,可能在語義上產(chǎn)生二義性,在實(shí)際的應(yīng)用中要注意第一個(gè)else與哪一個(gè)if匹配[3]。

再比如嵌套的例子:

main()

{int a=8,b=6,c=4,d=2;

if (a>b>c)

{printf(“%d\n”,d);

else if (c-2>=d)

printf(“%d\n”,d+1);}

else

printf(“%d\n”,d+2);

}

本例中出現(xiàn)了多個(gè)if 和else,而且它們之間存在包含與被包含關(guān)系,即嵌套關(guān)系。很明顯第一個(gè)格式輸出函數(shù)到第二個(gè)格式輸出函數(shù)之間的語句是作為第一個(gè)if語句的真實(shí)存在的結(jié)果。而一旦首個(gè)if語句為假,那么只能執(zhí)行最后面的輸出語句。這里,雖說第二個(gè)else是與前面的else if離得最近,但由于其前面大括號(hào)的存在,也就使它與上面所提及的if沒有了任何的關(guān)系,它也只能與最先出現(xiàn)的if配成一對(duì),完成最外圍選擇的需要。這里還要特別注意的是第一個(gè)if語句的條件a>b>c判定的結(jié)果,往往錯(cuò)誤的產(chǎn)生,均由該條件沒有判定好而引起[4]。N—S流程如圖2所示。

綜上所述,無論是并列關(guān)系,還是嵌套關(guān)系,對(duì)于純粹的選擇語句,稍加用心是可以區(qū)分好if與else的關(guān)系的,而實(shí)際的情況是if語句中往往摻雜著關(guān)系,或是邏輯表達(dá)式,再加上自增減表達(dá)式的存在,同時(shí)對(duì)于else的缺省,以及大括號(hào)的使用,都給程序的讀取造成一定的困難。因此需要我們進(jìn)行經(jīng)常性地練習(xí),這樣才能做到熟能生巧。

參考文獻(xiàn)

[1] 李澤中.C語言程序設(shè)計(jì)[M].北京:清華大學(xué)出版,2008.

[2] 劉玉英.C語言學(xué)習(xí)指南與解題[M].北京:中國水利水電出版社,2002.

[3] 朝樂門.名師講堂——二級(jí)C語言[M].北京:人民郵電出版社,2007.

[4] 郭俊鳳.C程序設(shè)計(jì)案例教程[M].北京:清華大學(xué)出版社,2009.

猜你喜歡
嵌套選擇分析
基于嵌套Logit模型的競爭性選址問題研究
隱蔽失效適航要求符合性驗(yàn)證分析
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢(shì)分析
我國新材料產(chǎn)業(yè)技術(shù)創(chuàng)新方向的選擇探討
“互聯(lián)網(wǎng)+”時(shí)代新聞采訪教學(xué)的困境與出路
新聞前哨(2016年10期)2016-10-31 17:41:16
飛機(jī)燃油系統(tǒng)對(duì)多路輸入信號(hào)源選擇的方法
科技視界(2016年22期)2016-10-18 15:53:02
會(huì)計(jì)計(jì)量屬性的選擇及應(yīng)用
一種基于區(qū)分服務(wù)的嵌套隊(duì)列調(diào)度算法
無背景實(shí)驗(yàn)到有背景實(shí)驗(yàn)的多重嵌套在電氣專業(yè)應(yīng)用研究
河南科技(2014年23期)2014-02-27 14:19:17
台州市| 墨玉县| 依安县| 商都县| 共和县| 上高县| 阜康市| 南安市| 秀山| 鹤庆县| 赤城县| 沂水县| 临桂县| 苍溪县| 静宁县| 山西省| 澳门| 贞丰县| 聂拉木县| 宜兴市| 阿合奇县| 二手房| 华亭县| 紫金县| 交城县| 武隆县| 繁峙县| 都江堰市| 芜湖市| 荔波县| 含山县| 子长县| 松阳县| 沅陵县| 施秉县| 芦山县| 阳新县| 阿城市| 乐东| 仁怀市| 闽清县|