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