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

?

C語言之switch語句教學(xué)研究

2019-03-07 05:22韓祥波
電腦知識(shí)與技術(shù) 2019年35期
關(guān)鍵詞:循環(huán)嵌套教學(xué)實(shí)踐

摘要:探討了switch分支結(jié)構(gòu)的常見錯(cuò)誤,分析了與嵌套、循環(huán)結(jié)構(gòu)的綜合使用,通過在計(jì)算機(jī)專業(yè)的卓越班和實(shí)驗(yàn)班的實(shí)踐證明,學(xué)生的綜合編程能力和動(dòng)手積極性得到進(jìn)一步提高。

關(guān)鍵詞:switch;嵌套;循環(huán);函數(shù)重載;教學(xué)實(shí)踐

中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2019)35-0157-01

1 概述

在卓越班和實(shí)驗(yàn)班等基礎(chǔ)較好班級(jí)的教學(xué)過程中經(jīng)常遇到學(xué)生對(duì)switch語句執(zhí)行順序的種種困惑,在多次的上機(jī)考試和期末考試中丟分較多,本文針對(duì)與之相關(guān)的各種難點(diǎn)分析探討。

2 教學(xué)實(shí)踐

2.1使用背景

在分支結(jié)構(gòu)中我們常用if…else結(jié)構(gòu)實(shí)現(xiàn),但對(duì)表達(dá)式相同的進(jìn)行多次重復(fù)計(jì)算而毫無意義,switch語句正是恰好的解決方案。通過計(jì)算表達(dá)式的值,結(jié)合case語句實(shí)現(xiàn)到分支語句地跳轉(zhuǎn)來高效完成了多分支結(jié)構(gòu)的選擇功能。其語法形式如下:

switch(變量表達(dá)式)

fcase常量1:語句;break;

case常量n:語句;break;

default:語句;break;

}

2.2常見錯(cuò)誤

1)switch(表達(dá)式)中的表達(dá)式類型只能為int、char等離散的整型式類型。如:double x=2.36; switch(x){case 2:...}不符合要求。

2)case表達(dá)式具有唯一性。如:case 2:...case 2:...則錯(cuò)。

3)case分支中要有break否則繼續(xù)執(zhí)行該分支后繼續(xù)執(zhí)行下句而不跳出。

4)缺少default,則當(dāng)找不到匹配的case時(shí)程序出錯(cuò)。

2.3綜合舉例

例1 #include

main()

{ int iVarA=11,iVarB=12,iVarC=16;

switch(iVarA)

{case 11: switch(iVarB)

{case 12:printf("A");break;

case 13:printf("B");break;

case 14:pnntf("C");break;)

case 15: switch(iVarC)

{case 16;printf("D");

case 17:printf("E");}

default: printf("F");}}

上題的輸出結(jié)果是"ADEF"。本題出現(xiàn)switch嵌套結(jié)構(gòu),即在"case"分支中又出現(xiàn)"switch"語句。只要把分支中的復(fù)雜語句當(dāng)作該分支的一句復(fù)合語句來處理,則由繁到簡、方便求解。具體過程為:"iVarA"=11使得選擇"case 11",此分支中的"switch四句作為整體來處理即iVarB的值選擇"case 12"輸出"A"后遇到"break"跳出執(zhí)行"case 15"。此時(shí)的跳出不是"case11"的跳出,此時(shí)的"break"在"1"前,屬于"case 14"。故"case 11"不能跳出后執(zhí)行"case 15",由于"case 16"和"case 17"兩個(gè)分支都沒有;"break"故相繼輸出"DE",最后無跳轉(zhuǎn)執(zhí)行缺省語句輸出"F"。

例2 #include main()

{ char cMyVar;

while((cMyVar=getchar())!='\n')

switch(cMyVar-'1')

{case 0:

case 1:putchar(cMyVar+l);

case 2:putchar(cMyVar+2); break;

case 3:putchar(cMyVar+3);

default:putchar(cMyVar+4); break;}

printf("\n");}

上題是出錯(cuò)率很高的試題,當(dāng)輸入"2345"時(shí)輸出"345789"。下面分析解題過程:

"cMyVar"獲取輸入變量的第1個(gè)字符2,switch表達(dá)式計(jì)算得1此時(shí)分支對(duì)應(yīng)"case 1"輸出3,但該分支沒跳出語句故繼續(xù)執(zhí)行"case 2"輸出4遇到break而完成本次循環(huán);"cMyVar"獲取輸入的第2個(gè)字符3,計(jì)算后執(zhí)行"case 2"輸出5,遇到"break"而完成本次循環(huán);同理下2次循環(huán)依次得解。本題錯(cuò)點(diǎn):1)沒注意case分支中有的無break而提前跳出本次循環(huán);2)switch表達(dá)式中"cMyVar"減1但變量本身沒變,在處理分支結(jié)構(gòu)時(shí)有的把該變量減1后再輸出。

3 結(jié)論

switch分支結(jié)構(gòu)的跳轉(zhuǎn)語句讓不少初學(xué)者頭疼不已、錯(cuò)誤不斷,究其原因還是對(duì)缺省語句、"break"語句以及變量更改等不熟悉引起,本文結(jié)合幾個(gè)具體的綜合例子分析了上述易錯(cuò)原因。

參考文獻(xiàn):

[1]胡玲潔.《C++程序設(shè)計(jì)》中職教學(xué)中的易錯(cuò)分析[J].電腦知識(shí)與技術(shù),2019(02).

[2]譚浩強(qiáng).C++面向?qū)ο蟪绦蛟O(shè)計(jì)[M].北京:清華大學(xué)出版社,2006.

[3]呂鳳翥.C++語言基礎(chǔ)教程[M].北京:清華大學(xué)出版社.1999.

[4]Bjarne Stroustrup.C++程序設(shè)計(jì)語言:特別版[M].裘宗燕,譯.北京:機(jī)械工業(yè)出版社,2010.

[5]錢能.C++程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,1999.

[6]Stanley,B.Lippman,Barbara E.Moo.C++Primer中文版:第四版[M].李師賢,等譯.北京:人民郵電出版社,2006.

[7]陳維興,林小茶.C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程[M].北京:清華大學(xué)出版社,2000.

[8]胡金錦.編程:一種觀察世界的新視角——以《冒泡排序》一課為例談?dòng)?jì)算思維[J].電腦知識(shí)與技術(shù),2017(35).

[9]張敏輝.將案例驅(qū)動(dòng)教學(xué)法運(yùn)用于程序設(shè)計(jì)類課程的實(shí)踐與成效[J].高等教育研究,2012,29(2).

【通聯(lián)編輯:王力】

收稿日期:2019-09-10

作者簡介:韓祥波(1975-),男,山東淄博人,講師,碩士,研究方向?yàn)橛?jì)算機(jī)軟件與理論。

猜你喜歡
循環(huán)嵌套教學(xué)實(shí)踐
基于嵌套Logit模型的競爭性選址問題研究
淺析英語詞匯記憶策略
分層、過濾、循環(huán)教學(xué)法初探*
淺論高中化學(xué)生活化教學(xué)的實(shí)踐與思考
淺談初中物理實(shí)驗(yàn)教學(xué)與學(xué)生創(chuàng)新能力的培養(yǎng)
測(cè)量平差課程教學(xué)改革探討與實(shí)踐
一種基于區(qū)分服務(wù)的嵌套隊(duì)列調(diào)度算法
無背景實(shí)驗(yàn)到有背景實(shí)驗(yàn)的多重嵌套在電氣專業(yè)應(yīng)用研究
連續(xù)批加工過程中嵌套自相關(guān)數(shù)據(jù)的控制圖設(shè)計(jì)