


下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、計算機等級C語言上機考試改錯題分類總結改錯題總的出錯分為兩大類:語法出錯和邏輯出錯,此類題目是比較簡單的題型,因此也是最容易把握的知識點。注意:錯誤都是出現在 /*fo un d*/下面的這一行。只是下面的這一行,其他行都沒有錯誤。不能修改其他行。做題方法:1. 首先拿到題目,先將題目詳細看看,看清題目對做題時很有幫助的,特別是一些邏輯性較強的題目很有用。有的同學可能會覺得題目太難了不想去讀,其實在做改錯題目時即便你不會也能把題目做對。2 按照以下的步驟解決題目中的錯誤的內容,對應著修改。修改完之后保存即可。一、語法錯誤1. 關鍵字出錯:在二級C語言考試中僅僅考查學生對基本的關鍵字掌握情況,比
2、如:整型就是int不是Int ,知識點簡單。2. 格式出錯:在考試中主要考查學生細心的程度,最喜歡考簡單的知識點。(1) 少分號:考查的知識點:分號是語句結束的標志。(2) for語句的格式:for(;)中間用分號隔開不是用逗號隔開。(3) if語句的格式:if(表達式),if后面必須加上小括號。(4) 命令行格式出錯:如in elude命令少了 #,正確的形式應該是#in elude“” ;(5) 常用函數格式:A. 函數名后面一定是花括號,不能是方括號,方括號只有在數組下標中用到。B. 要同時定義兩種以上不同的數據類型的時候必須在不同類型的數據中間加上分號。C. seanf( “%d ,a
3、ij);應該改為 seanf( “ %d,&aij)。考查 seanf 輸入函數的格式。(6) 數組:A. 數組下標引用時候只能用反括號。B. 二維數組中的列下標不能省略。(7) 常用符號出錯:A. C語言中大于等于符號是“ >=”,但是在考試的時候可能出現將它寫為“=>”非”記住判斷某個字符是否是大寫字母:char ch;if(ch>=' A&&ch<='Z')printf(“ %c ,ch);判斷某個字符是否是小寫字母:char ch;if(ch>=' a'&&ch<=
4、9;z') printf(“C ,ch);判斷某個字符是否是數字:char ch;if(ch>= ' O' &&ch<=' 9' )printf( “%c ,ch);判斷某個數字是否能同時被 5和7整除:int i=35; if(i%5=0&&i%7=0)printf(“ %d ,i);判斷某個數字是否能被5或7整除:int i=35; if(i%5=0|i%7=0)printf(“%d ,i);判斷某個數字是否是偶數或奇數:int i=35;if(i%2=0) printf(“ %d 是一個偶數” ,i);e
5、lse printf(“ %d 是一個奇數” ,i);二、邏輯錯誤1. 使用了沒有定義過的變量:這種題目可以通過編譯查找出出錯的地方并改之。(1)0 (零)和o (字母歐)的區別:(2)P (大)和p (小)的區別:(3)普通變量大小寫的區別:A. 有的變量在定義的時候是小寫但是在使用的時候是大寫,或是在定義的時候是大寫在使用 的時候卻是小寫。B. 大小寫沒有出錯,程序中直接使用了沒有定義過的變量,要求學生更加細心的讀題目。2. 運算符號出錯:(1)C語言中除號是“ /”不是“”(2) 賦值號(=)和等號(=)混淆,記住在if語句中出現賦值號(=)一般是講它改為等號(=)。3. 表達式的取值范
6、圍出錯:當遇到計算表達式的累加或是累減時,一定用到循環來完成相應的操作。例如:要求計算t=1-1/2怙1/3*3-.-1/m*m 這個表達式,在這個題目中第一空有這樣的for 語句:for(i=2;i<m;i+)y-=1/(i*i);從題目中不難發現i是一個變量,它的取值范圍從整數2開始到m-1結束,最終計算的結果為y=1-1/2*2-1/3*3- .-1/(m-1)*(m-1)和題目要求的不符,因此將i<m改為i<=m做這 樣的題目看兩點:一看題目中的表達式,二看 for 語句中變量的取值范圍。語言中的除法運算:這個考點同樣考查表達式的相關知識。例如:要求計算t=1-1/2
7、怙1/3*3- .-1/m*m這個表達式,在這個題目中第一空有這樣的 for 語句: for(i=2;i<m;i+)y-=1/(i*i);剛才我們將了表達式的范圍,現在我們考慮 y-=1/(i*i); 是否正確?賦值號左邊問題不大,我們看看右邊 1/(i*i) ,其中 i 是整數, 那么 i*i 也是整數,在 C 語言中 1 除以比它大的數時值為零。這樣和題目的要求就不相符。記住: 1/2 的值為零,只有 2 或是 的值為。5. 找最大值和排序問題:遇到這種題目在改錯題中最容易考查的是大于( >)、小于( <)等符號的變化,當你查找出錯的地 方沒有語法錯誤,也沒有使用了未定義
8、的變量時,記住這個口訣:將大于改為小于,將小于改為大于!6. 函數的返回值及其參數:重點int fun(int x,int y) main() if(x>y) return x;int a,b,c;else return y;scanf( “%d%d ”,&a,&b); c=fun(a,b);printf( “最大值為: %d ”,c);(1) 函數的返回類型: 在上面的例子中 fun 函數的返回值是 int ,如果將 int 改為 double ,很明 顯是錯誤的。 從兩個地方來看, 首先 return x; 中 x 的類型必須和 fun 函數中的返回值相同, x 是整
9、型。 其次c=fun(a,b);中fun函數將一個返回值賦值給了變量 C,說明函數返回的值一定是整型。記住:函 數調用、函數的返回值和 ruturn 中數據類型必須一致!(2) return 后面的表達式及其類型:(3) 函數傳遞的參數:int fun(int *x,int *y) main() if(*x>*y)return *x; int a,b,c;else return *y; scanf( “%d%d ” ,&a,&b); c=fun(&a,&b);printf( “最大值為: %d ”,c); 一定注意:傳遞的是值還是地址。比較上面兩個例子大家
10、很容易區別傳遞的是值還是地址,第一個 例子調用函數的時候傳遞的是值,因此在 fun 函數的形參中 x 和 y 僅僅是普通的變量,而第二個例子 中調用函數的時候傳遞的是地址,因此在 fun 函數的形參中 x 和 y 就是兩個指針變量。 5(4)指針的使用:int fun(int *x,int *y)if(*x>*y)return *x;else return *y;在此例中fun函數的形參是x和y,它們的類型是整型的指針,那么在 fun函數的函數體中使用 到 x 和 y 的值時一定要區分: x>y 比較的是 x 和 y 所存變量地址的大小, *x>*y 才是比較值的大小。 如果
11、存在 *x=x+y; 的類似情況一定是錯誤的,必須要將賦值號的左右兩邊的類型變為一致。7. 數組:(1)數組下標的初始值: 數組下標從零開始,到長度減一結束。考試技巧:當出錯行在定義部分 時,先檢查該定義語句有沒有語法錯誤,再看定義語句中的變量有沒有賦初始值,最后看變量賦的初始 值有沒有正確。 定義初始值有竅門, 遇到累加時, 用來存放累加和的變量一般賦值為零, 遇到求階乘時, 用來存放階乘值的變量一般賦值為一。(2)普通變量的初始值: 依照上面的技巧,我們同樣可以將它延伸到普通變量中。(3)數組和字符串長度減一: 當使用數組中的元素時,最大值只能到數組長度減一。字符串以'0 '
12、;作為字符串的結束標志,因此取值最大也只能到字符串長度減一(4)數組下標往后走: 當題目要求將一個數組中的元素直接賦值或是以某種方式復制到另一個數 組中時,接受數據的數組中的下標要自增。8特例:部分題目的解答很特殊,需要根據上下文中的內容來解答題目;9. 素數掌握求素數的格式: 判斷一個數是否是素數的方法很多,的是只用掌握一種即可,首先掌握判斷一個素數的方法; 素數的定義: 1、是自然數 2、只能被 1 和本身整除, 2 到本身減一之間的數不能整除該數。 判斷 m 是否為素數的格式:for(i=2;i<m;i+)if(m%i=0)break;if(m=i) 表明 m 是素數;素數只能被1和m那么用2到m-1之間的數除m,如果有一個數能整除m,說明m不是一個素 數,就不用再判斷后面的數值了, 用一條 break 語句提前結束函數; 如果一直都不能整除, 則說明 m 是 一個素數。那么用循環語句表示 2 到 m-1 之間的數的語句為: for(i=2;i<m;i+) ,如果在這個范圍內 的數值有一個數值能整除 m說明m不是一個素數,則可以提前結束循環,break;那么結束之后這個 循環中的變量I的值小于m,如果m是一個素數的時候,則一直都不執行 break語句;則循環語句結束的 時候是在i=m的時候退出循環。結束循環以后,進行i和m的比
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025合作方加工定做合同標準要求
- 2025正規小學教師勞動合同樣本
- 2025解除建筑工程的設計合同協議書
- 2025房地產項目合同文本
- 2025科技有限公司合同模板
- 2025建筑模板承包合同模板班組承包合同
- 2025年合作協議的合同范本
- 2025國有企業固定資產人民幣貸款合同
- 2025珠寶加盟的合同
- 《下肢深靜脈血栓形成》課件
- 2014—2015—2《刑法總論》教學大綱(修正版)
- 螺栓加工工序卡(共7頁)
- 《焦慮癥基礎知識》PPT課件.ppt
- 基于鉆石模型的南通紡織產業競爭力分析
- 多肉植物生長觀察日記小報
- 華銳SL1500風機發電機及水冷系統故障及解決對策
- 關于更換老師的申請書范文
- 發電廠電氣一次部分設計—2×300+2×200MW
- 基于深度學習的鳥類識別系統的設計與實現
- 實驗室安全-電水氣火的使用安全課件
- 【走向高考】(2013春季出版)高考物理總復習 模塊整合課件 新人教版選修3-5
評論
0/150
提交評論