版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機(jī)二級C上機(jī)考試攻略希望對各位有所幫助哈<!=程序調(diào)試題部分=!>一、 錯誤數(shù)量從第二十四次(2006年4月)考試開始至今,錯誤數(shù)量一致設(shè)為5處,改對一處得8分。二、 推薦改錯流程1、閱讀試題。(1)看清試卷上要求修改的程序名稱。正式考試時工作目錄下會出現(xiàn)多個C源程序,打開時不要弄錯了.(2)了解程序功能。試卷上有該程序功能說明,并且有時還會出現(xiàn)在程序中使用的一些變量、數(shù)組等的名稱,讀題時即可了解這些數(shù)據(jù)的作用,有助于等會兒更好地分析程序。(3)注意“注意”。試卷上改錯題一般會有“注意:不得增加行或刪除行,不得更改程序結(jié)構(gòu)?!弊謽?。但偶然還是有例外。曾在第二十次第二套題中,出現(xiàn)
2、了“注意:可以增加和修改程序行,但不得刪除程序中的整行。在一處增加的程序行不得超過兩行,不得更改程序的結(jié)構(gòu)?!?。改錯時增加了一行代碼。2、通讀程序。閱讀完試卷的說明后,先別急著去編譯、連接和運(yùn)行。應(yīng)先通讀整個程序,了解程序的整體結(jié)構(gòu)和算法實現(xiàn)。修改你能發(fā)現(xiàn)的錯誤,有些錯誤是相當(dāng)明顯的。C程序從主函數(shù)開始運(yùn)行,閱讀程序也需從主函數(shù)開始。當(dāng)發(fā)生函數(shù)調(diào)用時,再轉(zhuǎn)到被調(diào)用函數(shù)去閱讀,執(zhí)行結(jié)束或遇return語句返回。C常見錯誤地方(按一般程序流程):(1)輸入語句(相當(dāng)常見,基本每一次考試都有)常見錯誤為2種情況:a. 用scanf函數(shù)接收整型或其它數(shù)值型變量值。錯誤:scanf (“%d”, m )
3、 改正:m改為&m點評:在scanf函數(shù)后的接收參數(shù)均使用的是地址值。如果是一般變量,前加取地址運(yùn)算符&,如果是指針,直接使用指針變量名(指針本身代表地址),如果是字符數(shù)組接收字符串。則直接使用字符數(shù)組名(數(shù)組名代表數(shù)組首地址)。此外還要注意輸入格式控制是否正確。b. 用gets接收字符串時。錯誤:char a100; gets(a100); 改正:gets(a);點評:當(dāng)定義了一個數(shù)組例如a100, 在程序的執(zhí)行語句中再也不可能見到a100了,如果是訪問數(shù)組元素,其下標(biāo)只能是099。另外,當(dāng)數(shù)組用作函數(shù)實參時,一般都使用數(shù)組名,其意為:將數(shù)組首地址傳遞給形參。(2)函數(shù)調(diào)用時
4、(相當(dāng)常見,基本每套改錯題都在調(diào)用時有錯)函數(shù)調(diào)用格式:函數(shù)名(實參1,實參2。)。函數(shù)調(diào)用時的錯誤原因較為復(fù)雜。大致可分為以下幾種情況:a. 函數(shù)調(diào)用時參數(shù)個數(shù)不對。函數(shù)調(diào)用要求實參和形參(定義函數(shù)時首部括號里的參數(shù))個數(shù)要相等。這種錯誤一般是調(diào)用時缺少實參。最近在第25次考試第二套題中出現(xiàn)過。b. 函數(shù)調(diào)用時參數(shù)類型不匹配。函數(shù)調(diào)用要求實參和形參類型要一致。形參和實參類型如果不一致,則需修改其中一方。具體是哪一方出錯需結(jié)合具體題目判定。這種錯誤出現(xiàn)次數(shù)最多。c. 函數(shù)返回值出問題或與定義返回類型不一致。對于涉及到有返回值的被調(diào)用函數(shù),要注意幾個問題。1. return返回的值是否滿足題意要
5、求.例如第27次第一套題return后未返回mid.2. 返回值類型是否同函數(shù)名前的返回類型保持一致. 例如第27次第一套題函數(shù)返回了整型值,但函數(shù)返回類型卻定義為void類型.3. 如果在主函數(shù)中將函數(shù)返回值賦給了某變量,該變量類型是否和函數(shù)返回類型一致.這種出錯情形較少見。(3) 實現(xiàn)程序功能的核心代碼處在實現(xiàn)該程序功能的關(guān)鍵代碼部分,通常會設(shè)置1到2處,甚至有時會設(shè)置34處錯誤。這部份的錯誤需要仔細(xì)分析該算法才能找出錯誤的地方。這部分中的錯誤多為運(yùn)算符或表達(dá)式出錯。經(jīng)常出錯的運(yùn)算符:”<”和”<=”, ”>”和”>=”, ”=”和”=”, ”=”和”!=”, ”&
6、lt;”和”>”, ”+=”和”-=”, ”&&”和”|”, ”!”等。經(jīng)常出錯的表達(dá)式:如指針法訪問數(shù)組元素等。例如:在第26次考試第一套改錯題是選擇法對8個數(shù)由大到小排序。在實現(xiàn)選擇法這段代碼中一共出現(xiàn)了4處錯誤。原代碼:for(i=0;i<n-1;i+)p=i;for(j=1;j<n;j+) /* j=1改為j=i+1 */if(ap>aj) /* >改為<*/p=j;temp=ap;ap=aj; /* aj 改為 ai*/aj=temp; /* aj 改為 ai*/(4)輸出語句部分。輸出格式控制或輸出表達(dá)式有誤。如:第25次第3套,
7、針對長整型變量n.輸出代碼:printf(“ The result is:%d”,n); /* %d 改為 %ld*/第27次第5套:輸出整型數(shù)組a中的元素,原代碼:for(i=0; i<n; i+) printf(“%4d”,a); /* a改為ai */(5)其它地方:a. 數(shù)據(jù)定義及初始化。閱讀完畢后,對各數(shù)據(jù)含義應(yīng)該明確了,此時檢查各數(shù)據(jù)是否正確定義,尤其注意被調(diào)用函數(shù)形參定義部分(每一個形參都應(yīng)單獨(dú)定義),另外部分?jǐn)?shù)據(jù)可能要在定義時初始化。例如:在第27次第2套被調(diào)用函數(shù)中:int n,i=0; /*n應(yīng)改為n=0*/在第27次第3套中:int fun(int s , int
8、n ) /* int s 應(yīng)改為 int *s */b. 預(yù)處理命令。主要是頭文件包含可能不正確。例:第二十三次第一套題,在程序中使用了pow()函數(shù),錯誤代碼: #include <string.h> /* string.h 改為 math.h */3、編譯、連接;試運(yùn)行通讀并修改完程序后,按F9鍵編譯和連接(注意:請勿直接使用Ctrl+F9運(yùn)行程序,因為如果程序無錯(error)但有警告(warnning),直接運(yùn)行將無法看到警告)。如果編譯和連接過程報錯或警告,根據(jù)屏幕下方消息框中的提示信息進(jìn)行相應(yīng)修改,直到無錯和警告為止。然后再使用Ctrl+F9運(yùn)行程序,如果結(jié)果不正確,此
9、時有2種辦法:(1)回到第2步,繼續(xù)讀程序修改錯誤,然后再編譯、連接和試運(yùn)行。重復(fù)這2步一直到正確為止。(2)進(jìn)行第4步。4、使用跟蹤執(zhí)行功能,定位出錯位置。(此處操作較復(fù)雜,需教師結(jié)合具體試題講解示范一次)注意:在進(jìn)行這一步之前,你應(yīng)該要完成程序語法錯誤的修改,即這時程序是可以執(zhí)行的,只是執(zhí)行結(jié)果不正確。TurboC提供了一個跟蹤執(zhí)行(Trace into)的功能,快捷鍵F7。它是把程序的運(yùn)行分解為以行為單位,即每按一次F7,只執(zhí)行程序中一行代碼。同時配合菜單最后一項“Break/Watch”菜單中相應(yīng)命令,設(shè)置要觀察的變量或表達(dá)式。在每執(zhí)行完一行后,觀察屏幕下方“watch”框中你添加的要
10、觀察的各個數(shù)據(jù)的變化情況。如果在哪一行執(zhí)行完畢后,數(shù)據(jù)的變化和預(yù)期的不一致,那么錯誤地方肯定就在剛才執(zhí)行的這一行。如果碰到循環(huán)次數(shù)很多的循環(huán),還可配合Toggle breakpoint命令設(shè)置斷點。<!=編程題部分=!>、閱讀編程要求舉例:第27次第3套編程題:/*/編寫程序test3-2.c(60分)按要求編寫程序:(1)編寫函數(shù)fun,其功能是:統(tǒng)計形參s所指字符串中數(shù)字字符出現(xiàn)的次數(shù),并存放在形參t所指的變量中。例如:形參s所指字符串為:abcdef35agd3khe7,則數(shù)字出現(xiàn)的次數(shù)為4。(2)在main函數(shù)中,從已有文件test3-2.in中讀出一行字符(字符個數(shù)不超過
11、80個)到字符數(shù)組str中,調(diào)用函數(shù)fun,統(tǒng)計出數(shù)字出現(xiàn)的次數(shù),并在屏幕上輸出結(jié)果。/*/(1) 注意要求你編寫的程序文件名字,。文件名不能亂取,否則極有可能被判0分。(2) 了解程序功能和結(jié)構(gòu)。注意在題目中出現(xiàn)的變量、數(shù)組、函數(shù)和文件的名字,在編程時也應(yīng)采用這些名字。此題要求編寫main和fun兩個函數(shù),fun函數(shù)形參有s和t,main函數(shù)里要從文件”讀字符串到字符數(shù)組str里。進(jìn)一步分析還可知s應(yīng)為字符型指針,t為整型指針。程序結(jié)構(gòu)為main數(shù)執(zhí)行輸入、調(diào)用fun函數(shù)和輸出,fun函數(shù)完成統(tǒng)計。二、建立程序文件(1)新建文件。選擇“File”菜單>“new”命令,將新建一個名為的文
12、件。(2)修改文件名。選擇“File”菜單>“Write to”命令。直接輸入文件名,此題即直接輸入test3-2.c后回車。修改后可從屏幕右上角看到是否是“TEST”,如果不是,重新執(zhí)行“write to”命令。注意:(1)文件名大小寫無影響。(2)第2步也可用選擇“File”菜單>“Save”命令,不過此時可修改文件名以及路徑。而路徑在考試時是不允許修改的(未保存在考試工作目錄下的文件不能上傳至服務(wù)器)。(3)由于此前考試中有不少學(xué)生誤改了路徑或名字,造成編程題得0分。所以有時考試前機(jī)房工作人員好人做到底,已將編程題文件建好了,內(nèi)容為空,此時考生只需通過”File”菜單>
13、”Load”打開該文件進(jìn)行編寫即可。三、 編寫程序(好習(xí)慣:編寫過程中隨時按F2保存)首先要知道C語言編程是非常靈活的,同一道題給不同的人編程是不可能完全一樣的。所以無固定方法可循,不過在考試時,如果題目要求越多,限制條件越多,則編的程序應(yīng)該越接近。在第27次考試及以前,編程題均涉及文件,大多數(shù)時候還涉及函數(shù)調(diào)用。以此題為例:(1) 依據(jù)題意打好程序框架結(jié)構(gòu):定義已知道的數(shù)據(jù)和函數(shù),文件打開和關(guān)閉,數(shù)據(jù)輸入和輸出,函數(shù)調(diào)用。#打開頭文件 此題結(jié)構(gòu):#include <stdio.h> 頭文件可根據(jù)需要最后添加返回類型 fun(形參定義) void fun(char *s, int
14、*t) 定義數(shù)據(jù);功能實現(xiàn); void main() void main() char str80; 定義數(shù)據(jù); int n; /* 保存統(tǒng)計的數(shù)字字符個數(shù)*/打開文件; FILE *fp;輸入語句; fp=fopen(“”,”r”); /*打開出錯處理代碼略*/函數(shù)調(diào)用; fgets(str,80,fp);輸出語句; fun( str , &n );關(guān)閉文件; printf(“%dn”,n); fclose(fp);注意:如果涉及函數(shù)調(diào)用的編程,則最好將被調(diào)用函數(shù)定義放在主函數(shù)前,此舉可避免在主函數(shù)聲明被調(diào)用函數(shù)。(2)程序核心功能代碼編寫。此部分代碼是編程題的精華部分,各種功能的實
15、現(xiàn)是由一系列的運(yùn)算所組成。需要大家多多練習(xí),掌握一些基本功能算法實現(xiàn),再靈活加以運(yùn)用,才能編寫出正確的代碼。此部分無固定格式可言。附該題fun函數(shù)代碼:void fun(char *s,int *t) int i; *t=0; for(i=0;*(s+i)!='0'i+) if(*(s+i)>='0'&&*(s+i)<='9') (*t)+;四、 調(diào)試程序。剛剛編寫好的程序,保存完畢后即進(jìn)入調(diào)試階段(即修改程序錯誤),這時過程可參考第一部分改錯題。只是可以增加刪除行,也可修改結(jié)構(gòu)。<!=友情提醒=!>1、
16、為了考試需要。請熟練掌握TC菜單中的以下命令:FILE(文件)菜單:load 打開; save 保存; new 新建;write to 另存為;os shell 切換至DOS提示符下,輸命令行參數(shù)時需使用此命令。Quit 退出;RUN(運(yùn)行)菜單:run 運(yùn)行; user screen 切換至輸入輸出界面。為了更好調(diào)試程序的需要,請掌握以下菜單命令:RUN(運(yùn)行)菜單:trace into 跟蹤執(zhí)行;Break/Watch(斷點及觀察)菜單:Add watch 向觀察窗口添加待觀察的變量或表達(dá)式;Delete watch 從觀察窗口中刪除最新增加的觀察變量或表達(dá)式;Edit watch 在觀察
17、窗口中編輯最新增加的觀察變量或表達(dá)式;Remove all watches 從觀察窗口中刪除所有的觀察變量或表達(dá)式;Toggle breakpoint對光標(biāo)所在的行設(shè)置或清除斷點;Clear all breakpoints 清除所有斷點;View next breakpoint 將光標(biāo)移動到下一個斷點處。2、 C語言是大小寫嚴(yán)格區(qū)分的,請勿混用。3、 TC界面窗口和全屏切換:Alt+Enter。推薦使用全屏,有的符號在窗口下容易混淆。比如“<”和“(”,“>”和“)”。4、 如果程序運(yùn)行時發(fā)生死循環(huán)(癥狀為不停地輸出或光標(biāo)停住按任意鍵均無反應(yīng))。請使用Ctrl+Break組合鍵中止
18、程序運(yùn)行,再根據(jù)提示按一下Esc鍵即可返回到編輯狀態(tài)。此時你還會在屏幕上看到一根綠色橫條,綠條一定處在一個循環(huán)結(jié)構(gòu)中,并且死循環(huán)就發(fā)生在該循環(huán)結(jié)構(gòu)。5、 在改錯題修改過程中,修改過的地方最好在草稿上做好記錄。6、 程序在運(yùn)行之前應(yīng)先保存(切記)。如果程序中非法訪問了某內(nèi)存地址(如訪問數(shù)組越界),在運(yùn)行時可能會提示異常而自動關(guān)閉TC。如果程序沒保存?尤其是編程題,那只好重新再寫了。7、 編程題涉及的文件都是文本類型的文件。請注意以下幾點,應(yīng)該對編程有所幫助。a. 文件打開方式:由于都是文本類型,所以打開方式請區(qū)分并記住6種:“r”: 打開只讀文件,該文件必須存在;“r+”:打開可讀寫的文件,該文
19、件必須存在;“w”: 打開只寫文件,若文件存在則文件長度清為0,即該文件內(nèi)容會消失。若文件不存在則建立該文件;“w+”:打開可讀寫文件,若文件存在則文件長度清為零,即該文件內(nèi)容會消失。若文件不存在則建立該文件;“a”:以追加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾,即文件原先的內(nèi)容會被保留;“a+”:以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾后,即文件原先的內(nèi)容會被保留。其中較常用的是“r”, “w”, “r+”和“a”4種b. 文件讀寫:在文件一章,大家學(xué)到了不少關(guān)于文件的讀寫函數(shù)。針對文本類型的文件而言,記住以下3個函數(shù)足矣:(1) fprintf ( )函數(shù):用法和printf()極為類似,僅多一參數(shù)指向文件的指針fp,例如:往屏幕上輸出字符數(shù)組a中字符串:printf ( “ %s ”, a );往文件里輸出(寫入)字符數(shù)組a中字符串:fprintf (fp, “ %s ”, a);(2) fscanf ( )函數(shù):用法和scanf() 極為類似,僅多一參數(shù)指向文件的指針fp,例如:從鍵盤輸入2個整數(shù)存放到m和n里:scanf ( “%d, %d”, &m, &n);從文件輸入(讀出)2個整數(shù)存放到m和n里:fscanf (
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《初級會計講義》課件
- 《圍絕經(jīng)期出血》課件
- 小學(xué)一年級上冊青島版5年制數(shù)學(xué)3610以內(nèi)數(shù)的加減混合運(yùn)算同步教案
- 小學(xué)一年級100以內(nèi)數(shù)學(xué)口算練習(xí)題大全
- 外墻腳手架承包合同6篇
- 三校聯(lián)考生物試卷生物科期末考試試卷
- 高考語文綜合素質(zhì) 晨讀材料專題輔導(dǎo)之三
- 《分配式噴油泵》課件
- 《贏得歷史的機(jī)遇》課件
- 四川省部分名校2023-2024學(xué)年高三上學(xué)期期末聯(lián)合考試英語試題(音頻暫未更新)
- (八省聯(lián)考)河南省2025年高考綜合改革適應(yīng)性演練 化學(xué)試卷(含答案)
- 2025中國電信山東青島分公司校園招聘高頻重點提升(共500題)附帶答案詳解
- 2025年八省聯(lián)考高考語文作文真題及參考范文
- 新課標(biāo)(水平三)體育與健康《籃球》大單元教學(xué)計劃及配套教案(18課時)
- 開題報告-鑄牢中華民族共同體意識的學(xué)校教育研究
- 計件工勞務(wù)合同范例
- 2024年公交車開通儀式講話例文(4篇)
- 2024-2025學(xué)年八年級上冊物理 第五章 透鏡以及其應(yīng)用 測試卷(含答案)
- 《中華人民共和國政府采購法》專題培訓(xùn)
- 科研倫理與學(xué)術(shù)規(guī)范(研究生)期末試題庫及答案
- CTG-MBOSS CRM20 分總冊_普訓(xùn)版_圖文
評論
0/150
提交評論