第三次課程:常用算法與上機(jī)注意事項(xiàng) 在實(shí)際的考試中,筆試中的補(bǔ)充代碼與上機(jī)中的改錯、編程是學(xué)生普遍感到畏懼的,也是歷年得分率很低的,在此,給大家說明一下關(guān)于這方面解答題目的思路: 一:要想取得好成績,第一要搞清楚題目意思,不能亂猜 例題:(2007年春填空第7題) 下面程序功能是:將文本框中用逗號分割的數(shù)據(jù)(文本框中必須要有數(shù)據(jù)),分別賦值給二維數(shù)組B的各個元素,并將B數(shù)組各個元素分行顯示在文本框中,程序界面參見下圖
private sub Command1_click() dim b(3,3) as single, I as integer, Pos1 as integer dim Pos2 as Integer, S as string, J as integer S=text1 if S=”” then Text1=”請輸入數(shù)據(jù)” ___________________ end if For I=1 to 3 For j=1 to 3 Pos1=_____________________ pos2=Instr(Pos1,S,”,”) If _____________________then B(I,J)=Val(Mid(S, Pos1, Pos2-Pos1)) Else B(I,J)=Val(Mid(S,Pos1)) End If Text2=Text2 & Str(B(I,J)) Next J ______________________ Next i End Sub 分析:拿到題目后,要分步驟,首先根據(jù)題目找出題目中的關(guān)鍵字眼 (1)逗號分割的數(shù)據(jù) (2)文本框中必須要有數(shù)據(jù) (3)賦值給二維數(shù)組B (4) 各個元素分行顯示 根據(jù)關(guān)鍵字眼找代碼中的實(shí)現(xiàn)部分 文本框中必須要有數(shù)據(jù)實(shí)現(xiàn)代碼: if S=”” then Text1=”請輸入數(shù)據(jù)” ___________________ end if 逗號分割的數(shù)據(jù):實(shí)現(xiàn)代碼 pos2=Instr(Pos1,S,”,”) 賦值給二維數(shù)組實(shí)現(xiàn)代碼 If _____________________then B(I,J)=Val(Mid(S, Pos1, Pos2-Pos1)) Else B(I,J)=Val(Mid(S,Pos1)) End If 各個元素分行顯示實(shí)現(xiàn)代碼: Next J ______________________ Next i
(二)一是加深對For循環(huán)程序的理解,每一個題目都涉及到了for循環(huán)的使用,始終要記住,每一個題目都是有規(guī)律可尋的 (1)務(wù)必熟悉For循環(huán)執(zhí)行流程(請查書,此處不多說) (2)循環(huán)體中循環(huán)變量的改變影響循環(huán)次數(shù),而初值、終值和步長的改變不會影響循環(huán)次數(shù)
(三)常見算法: (1)窮舉法: 基本思想:不重復(fù),不遺漏的列舉出所有可能的情況,從中尋找滿足條件的結(jié)果 適合用窮舉法來解決的問題應(yīng)具有下面兩個特點(diǎn): 1有明顯的窮舉范圍且窮舉的數(shù)目應(yīng)該是有限的 2可能按某種規(guī)則列舉窮舉對象 例題: <2004—2007年歷年真題>P168頁編程題目 (2)素?cái)?shù)問題: 素?cái)?shù)是指只能被自己與1整除的數(shù),最小的素?cái)?shù)是2 例題: <2004—2007年歷年真題>P169頁改錯題目 (3)整數(shù)拆分: 整數(shù)拆分就是將一個整數(shù)的個位、十位、百分位一一分離出來 例題:<2004—2007年歷年真題>P172頁改錯題目 (4)交換 將兩個變量的值互相交換,交換時(shí)一般采用中間變量的方法: 例題:<2004—2007年歷年真題>P173頁編程題目 (5)最大公約數(shù) 歐幾里得算法:輾轉(zhuǎn)相除法(詳細(xì)可參考書) 例題:<2004—2007年歷年真題>P174頁編程題目 (6)進(jìn)制轉(zhuǎn)換 十進(jìn)制轉(zhuǎn)換為二進(jìn)制:除二取余,直到商是0為止,再反轉(zhuǎn) 十進(jìn)制轉(zhuǎn)換為八進(jìn)制:除八取余,直到商是0為止,再反轉(zhuǎn) 十進(jìn)制轉(zhuǎn)換為十六進(jìn)制:與取二、八進(jìn)制是一樣的,所不同的是會遇到大于等于10的余數(shù),需要轉(zhuǎn)化成字母: 10-A 11->B 12->C 13->D 14->E 15->F 二進(jìn)制轉(zhuǎn)換成十進(jìn)制:按位權(quán)展開,展開時(shí)乘以2的次冪即可,如:(10101)=1*2^4+0*2^3+1*2^2+0*2^1+1*2^0=21 八、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制:按位權(quán)展開,展開時(shí)乘以8、16的次冪即可 例題:<2004—2007年歷年真題>P147頁編程題目 (7)遞歸調(diào)用: 詳細(xì)見書說明 (8)迭代算法 特點(diǎn):(1)問題中由一個不斷由舊數(shù)值推出新值的過程 (2)迭代過程有終止的條件 例題:2007年春筆試試題填空第六題 (9)冒泡法排序(詳細(xì)見書) 特點(diǎn):(1)首先進(jìn)行第一趟冒泡,從數(shù)組的第一個元素開始,每一個元素都與它的下一個元素進(jìn)行比較,如果小于等于下一個元素則位置不變,否則交換兩個位置,這樣最大的元素肯定就到了最后一個位置 (2)然后進(jìn)行第二趟冒泡,從數(shù)組的第一個元素開始,到n-1個元素結(jié)束,循環(huán)繼續(xù)上述過程完成冒泡過程 (10)累加與累乘 特點(diǎn):重復(fù)的在一個變量上做相加或相乘運(yùn)算 do while true sum=sum+1 loop (11)最大最小值問題 特點(diǎn):通過比較,確定最大或最小值 dim a(10) as integer max=a(1) for i=2 to 10 if a(i)>max then max=a(i) next (12)矩陣問題 例題:2007年春填空第八題 特點(diǎn):利用二維數(shù)組來解決 上機(jī)考試注意事項(xiàng) 上機(jī)考試最忌諱緊張,應(yīng)該沉著。一般首先應(yīng)該把第1道改錯題的代碼按原樣輸入進(jìn)去,輸入時(shí)要細(xì)心,不要自己制造新錯誤。輸人完畢應(yīng)先按文件名要求保存;再試著運(yùn)行看看系統(tǒng)提示什么錯誤,不要先急于運(yùn)行,以免遇到死循環(huán)的詩嶄。一旦出現(xiàn)死循環(huán)可能會前功盡棄,可以用Ctrl++[Break】鍵退出死循環(huán)。如果死循環(huán)后采用重新啟動vb的做法,這樣先前還沒有保存的文件就丟失了。最后根據(jù)報(bào)錯或試運(yùn)行結(jié)果來判斷出錯原因,進(jìn)行修改。記。喊l(fā)現(xiàn)有實(shí)在改不出來的錯誤,可先擱一擱,接著去做編程題目,,等做完編程題的基本部分后,再回過來改錯上機(jī)考試的試題及評分標(biāo)準(zhǔn) 上機(jī)題總分占40分,其中改錯題占14分,編程題占26分。 (1)改錯題:題目中都是設(shè)3個錯誤點(diǎn)(在歷年上機(jī)考題中也出現(xiàn)過只有2個錯誤點(diǎn)的試題),一般分別是語法錯誤(如數(shù)組的聲明、重復(fù)定義等略有難度的語法錯誤)、運(yùn)行錨誤、邏輯錯誤等,這些錯誤基本上都是平時(shí)編程時(shí)比較容易犯的錯誤,錯誤點(diǎn)不重復(fù)。 評分標(biāo)準(zhǔn):錄入原題:2分。改錯:4分/個。根據(jù)改錯點(diǎn)給分,新錯誤不扣分。 (2)編程題:按照題目要求的功能,根據(jù)參考界面編程,程序中都涉及一定難度的算法。 評分標(biāo)準(zhǔn):界面設(shè)計(jì):根據(jù)界面元素的復(fù)雜程度,給5~8分,每個元素得一定的分?jǐn)?shù)。“清除”按鈕:2分。“退出”按鈕:1分。含算法的按鈕:根據(jù)代碼多少按步驟給分。編程時(shí)注意:首先應(yīng)該進(jìn)行變量的說明,然后按輸入_處理一輸出的順序來設(shè)計(jì)程序的邏輯結(jié)構(gòu)。寫程序時(shí)一定要記住采用規(guī)范的書寫方法,這樣既不容易出錯,又能輕松地拿到基本分。即根據(jù)邏輯關(guān)系采用縮進(jìn)的形式來寫,注意層次感,讓人一看一目了然。需要用到程序控制結(jié)構(gòu)時(shí),先把前后配套的代碼(如For I=…Next I,If…Then…End If)寫出來,然后再在其中添加其他代碼。 從歷年的考試情況看,Visual Basic的上機(jī)部分雖然只考兩道題,試題類型和知識點(diǎn)也基本固定,但并不容易拿分,很多同學(xué)只能拿到基本分。建議考前多做針對性訓(xùn)練,熟練掌握以往上機(jī)考試題中涉及的各類算法題目。第1題爭取能改對2個錯誤,第2題除設(shè)計(jì)出程序界面、清除及退出(或結(jié)束)按鈕外,爭取把含算法按鈕的基本代碼(如變量的定義、基本算法結(jié)構(gòu)、基本輸入/輸出語句等)寫出來,這樣就可以拿到25分以上了,上機(jī)考試成績也就一定合格啦!
|