




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