• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      C語言中選擇結(jié)構(gòu)的使用探討

      2017-07-14 14:57肖紅德
      電腦知識與技術(shù) 2017年16期
      關(guān)鍵詞:流程圖表達式

      肖紅德

      摘要:C語言作為學生學習計算機程序設(shè)計語言的入門語言,對于順序、循環(huán)和分支結(jié)構(gòu)的學習和掌握是非常重要的。選擇結(jié)構(gòu)作為C語言中常用的一種基本結(jié)構(gòu),學生在進行學習時往往會困惑于怎樣使用選擇結(jié)構(gòu)、如何表達實際問題中的條件等。該文主要講解了選擇結(jié)構(gòu)中的if語句和switch語句的使用條件以及他們之間不同的執(zhí)行過程,并通過實例講解了他們之間的區(qū)別和聯(lián)系。

      關(guān)鍵詞:選擇結(jié)構(gòu);表達式;順序執(zhí)行;流程圖;算法設(shè)計

      1選擇結(jié)構(gòu)的地位和作用

      選擇結(jié)構(gòu)適用于某個操作需要滿足一定的前提條件的情況,在現(xiàn)實生活中,需要進行判斷和選擇的情況是很多的。選擇結(jié)構(gòu)作為程序設(shè)計中基本且重要的一種結(jié)構(gòu)被廣泛使用,任何一門計算機語言都會使用到選擇結(jié)構(gòu)。但是由于學生學習時的認知背景以及在講解選擇結(jié)構(gòu)時的案例選擇等方面的因素,使得學生在學習這部分內(nèi)容時往往缺乏深入的理解和思考,導(dǎo)致在遇到實際問題時出現(xiàn)困惑、不知道如何使用選擇結(jié)構(gòu)來解決實際中遇到的問題。

      作為結(jié)構(gòu)化程序設(shè)計中三種基本結(jié)構(gòu)其中之一,選擇結(jié)構(gòu)既不像順序結(jié)構(gòu)那樣規(guī)則簡單,也不像循環(huán)結(jié)構(gòu)那樣涉及循環(huán)變量的改變和循環(huán)體的設(shè)計,它是一種相對循序結(jié)構(gòu)更為簡單、相對順序結(jié)構(gòu)較為復(fù)雜的、在解決問題的過程中較為常見的一種結(jié)構(gòu)。因此,學生需要對這種結(jié)構(gòu)進行較為深入的理解才能在實際使用中靈活應(yīng)用、得心應(yīng)手。

      使用計算機語言在表示算法過程時要與接近自然語言的含義表達一致,使得語句簡潔、表達語義充分,選擇結(jié)構(gòu)也不例外。因此在使用選擇結(jié)構(gòu)的時候,要盡可能地使得每條語句有具體的使用背景和含義,有其背后的理論依據(jù)。

      本文以C語言作為基本語言來講解選擇結(jié)構(gòu)的適用條件以及if語句與switch語句的比較和使用問題。

      2選擇結(jié)構(gòu)的使用

      選擇結(jié)構(gòu)有兩種基本的實現(xiàn)形式:if語句和switch語句。if語句常用于實現(xiàn)兩個分支的選擇結(jié)構(gòu),switch語句常用于多個分支的選擇結(jié)構(gòu)。其中,if語句的基本形式如下:

      if(表達式)語句1;

      【else語句2;】

      其中,表達式就是一種判斷,if語句的執(zhí)行順序是先判斷表達式是否成立,若表達式成立,則執(zhí)行語句1,否則執(zhí)行else后面的語句2并結(jié)束if語句的執(zhí)行。表示else部分根據(jù)需要可以有也可以沒有,表達式的判斷一般是關(guān)系表達式(也就是比較大小的表達式),也可

      以是邏輯表達式或算術(shù)表達式等。

      switch語句注意事項:switch后面圓括號中的表達式的類型,在Visual C++6.0中只允許為整型、字符型或枚舉類型。case后面常量表達式的值必須互不相等,其類型應(yīng)該與switch后面表達式的類型相容。case和常量表達式之間要有空格。case和default可以出現(xiàn)在任何位置,習慣上將default放在switch結(jié)構(gòu)的底部。每個case語句的結(jié)尾不要忘了加break,否則將導(dǎo)致多個分支重疊;多個case可以執(zhí)行同一語句序列,只在最后一個case結(jié)束的地方加一個break。不要忘記最后的de-fault分支,即使程序真的不需要default處理,也應(yīng)該保留語句:default:break;以防程序中出現(xiàn)異常表達式。

      switch語句的執(zhí)行過程和if語句不同,在執(zhí)行switch語句時,直接執(zhí)行表達式與case后面的標號相同的標簽處,順序執(zhí)行switch語句中的語句,直到遇到break語句才結(jié)束switch語句的執(zhí)行。

      3選擇結(jié)構(gòu)應(yīng)用舉例

      在使用選擇結(jié)構(gòu)的時候主要是對涉及表達式中的變量進行處理。對于switch語句中的表達式比較常用的就是整型類型,這里主要以整型類型為例進行講解。在具體使用的時候也主要是對表達式中的變量進行設(shè)置初值和處理。對于表達式的使用,if語句和switch有比較明顯的區(qū)別,if語句在使用表達式的時候,使用關(guān)系表達式判斷變量處于某個區(qū)間的情況比較多,比如對于5

      if(x>5&&x<10)語句;

      而switch語句不能直接對區(qū)間進行判斷,它主要是對某些固定的整數(shù)進行判斷比如對于5

      下面以一個實例來說明if語句與switch語句在具體使用時候的區(qū)別和聯(lián)系。

      要求輸入一個整數(shù)n,判斷它能否被2、3、5整除,并輸出能否被其中的一個或多個整除。

      該問題可以通過選擇結(jié)構(gòu)來解決,具體的,既可以通過if語句來解決,又可以通過switch語句來解決。通過分析,可知對于一個整數(shù)能否被2、3、5整除,一共分為8種情況(因為對于每一個相除的結(jié)果都有能夠整除和不能整除兩種情況,所以一共有2^3=8種結(jié)果)。通過if語句解決該問題的流程圖如圖1。

      相比if語句的簡潔易懂,switch語句在使用的時候不太直觀,但其執(zhí)行效率更高,對于具有多個分支的情況,使用switch語句往往能夠提高程序的執(zhí)行效率。對于該問題的解決,在使用switch語句時,其中的結(jié)果表達式需要經(jīng)過處理,因為switch中的結(jié)果表達式只能表示為具體的某個整數(shù),也就是需要將結(jié)果表達式的數(shù)據(jù)表示為某幾個具體的整數(shù)。通過switch語句來解決這個問題,需要將8種結(jié)果轉(zhuǎn)換為具體的數(shù)值來進行解決,由于每種情況只有兩種狀態(tài),所以我們可以使用3位的二進制來表示每種情況,即:000、001、010,、011、100、101、110、111,二進制中的每一位對應(yīng)能否被2、3、5是否整除的結(jié)果,結(jié)果為0表示能夠整除,否則不能整除。由于每個二進制數(shù)都對應(yīng)一個十進制數(shù),我們在表示數(shù)據(jù)的時候通常都使用十進制數(shù)來表示,所以在處理數(shù)據(jù)的時候需要將這些二進制數(shù)據(jù)處理成十進制數(shù)進行處理,得到的十進制數(shù)分別為0、1、2、3、4、5、6、7。在處理n對2、3、5求余數(shù)的時候,只需要將對應(yīng)二進制位置處理為0或者1即可。由于不同的位置所對應(yīng)的位權(quán)不同,所以可以將對n對2求余的結(jié)果處理成0、1;n對3求余的結(jié)果處理成0、2;n對5求余的結(jié)果處理成0、4,通過這個處理后,將3個處理結(jié)果相加就得到了對應(yīng)每種情況的一個整數(shù),然后對每一種整數(shù)情況進行對應(yīng)的處理即可。

      通過switch語句解決該問題的流程圖如下:

      對于該問題的處理,還可以寫出通過if的嵌套結(jié)構(gòu)實現(xiàn)的算法或者通過switch的嵌套結(jié)構(gòu)實現(xiàn)的算法,比較而言,上述給出的通過switch語句給出的算法是更為簡單和簡潔的算法設(shè)計過程,這里對于其他的算法過程不再詳細說明。

      4結(jié)論

      If語句多用于變量區(qū)間的判斷(比如a>=5,a<0等),而switch語句用于變量(為整型類型,包括字符型)值在取單個值(即有限個點)的情況,在很多情況下,若想使用switch語句,一般需要將變量的取值情況先進行轉(zhuǎn)換,轉(zhuǎn)換成switch能夠處理的有限個點的情況,上面的例題即是先通過將n對2、3、5求余進行轉(zhuǎn)化為兩種取值進行累加后,再對累加后的值使用switch語句進行處理的。

      猜你喜歡
      流程圖表達式
      靈活選用二次函數(shù)表達式
      一個混合核Hilbert型積分不等式及其算子范數(shù)表達式
      表達式轉(zhuǎn)換及求值探析
      淺析C語言運算符及表達式的教學誤區(qū)
      專利申請審批流程圖
      專利申請審批流程圖
      寧??h村級權(quán)力清單36條
      《天津醫(yī)藥》稿件處理流程圖
      《天津醫(yī)藥》稿件處理流程圖
      《天津醫(yī)藥》稿件處理流程圖
      若羌县| 英山县| 遂宁市| 汶川县| 济南市| 华坪县| 合阳县| 宜宾市| 济南市| 丰原市| 朔州市| 耒阳市| 开江县| 汤阴县| 浦县| 库伦旗| 南阳市| 沂源县| 聂荣县| 左云县| 阿拉善盟| 镇江市| 鹤峰县| 绥阳县| 南宁市| 西贡区| 宣威市| 林州市| 平陆县| 教育| 旺苍县| 永胜县| 梓潼县| 三原县| 大田县| 公安县| 固镇县| 呼伦贝尔市| 彭泽县| 英德市| 讷河市|