版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
二級(jí)C語(yǔ)言強(qiáng)化班上機(jī)培訓(xùn)講義第一頁(yè),共七十九頁(yè),2022年,8月28日二級(jí)C應(yīng)試輔導(dǎo)2NCRE簡(jiǎn)介NCRENationalComputerRankExamination
第二頁(yè),共七十九頁(yè),2022年,8月28日31、考生開考前30前鐘進(jìn)入候考室,交驗(yàn)準(zhǔn)考證和身份證。2、開考之前,先運(yùn)行一下VC和看一下輸入法是否符合自己的習(xí)慣。3、記得保存一份試題目錄中的所有文件,以免出錯(cuò)或去掉注釋符后自己都不知道自己改了什么。4、調(diào)試程序的時(shí)候,可以在調(diào)試窗口設(shè)變量顯示中間值看正不正確。5、如果調(diào)試運(yùn)行時(shí)死循環(huán),可以按Ctrl+Break中斷死循環(huán),不需要重新啟動(dòng)機(jī)器。6、出現(xiàn)異常應(yīng)該舉手報(bào)告監(jiān)考老師,他們有各種密碼,包括抽題密碼、重抽密碼和延時(shí)密碼。
上機(jī)考試注意事項(xiàng)第三頁(yè),共七十九頁(yè),2022年,8月28日4考生文件夾是放置題目提供的源程序、考生存放答題結(jié)果的唯一位置??忌鐾觐}目后必須將結(jié)果存放在考生文件夾中,否則結(jié)果必然是零分??忌募A的命名是系統(tǒng)默認(rèn)的,一般為準(zhǔn)考證號(hào)的前四位和后四位。單機(jī)版路徑為“C:\WEXAM\準(zhǔn)考證號(hào)前四位+后四位”;而網(wǎng)絡(luò)版的路徑為“K:\用戶目錄文件夾\準(zhǔn)考證號(hào)前四位+后四位”。考生文件夾第四頁(yè),共七十九頁(yè),2022年,8月28日5最好控制在60分鐘內(nèi)完成上機(jī)題類型18分18分24分填空題改錯(cuò)題編程題第五頁(yè),共七十九頁(yè),2022年,8月28日6改錯(cuò)題目的錯(cuò)誤之處的前一行都有*****found******標(biāo)志!其實(shí),評(píng)分程序就是根據(jù)這個(gè)標(biāo)志,從考生的modi.*(擴(kuò)展名隨程序語(yǔ)言的不同而有所不同)文件中抽取它的下一行(或第二行)信息,和標(biāo)準(zhǔn)答案進(jìn)行比較。通常,標(biāo)準(zhǔn)答案會(huì)有多種,只要考生的答案和其中一個(gè)對(duì)應(yīng)上了即可得到相應(yīng)的分?jǐn)?shù)。結(jié)論:A、即使你的改錯(cuò)程序能夠正確執(zhí)行,也未必可以得分??!B、改錯(cuò)程序修改完畢后,無(wú)所謂運(yùn)行與否,這與得分無(wú)關(guān)!上機(jī)題打分方法第六頁(yè),共七十九頁(yè),2022年,8月28日7對(duì)于題空題,評(píng)分程序先是讀取考生文件夾下的BLAN.C文件,再找到其中需要填空的代碼所在的行數(shù),然后將考生填寫的答案和題庫(kù)中的事先給出答案進(jìn)行對(duì)比,正確就得分,不正確就不得分;但是存在這樣一個(gè)問題,如果一個(gè)題有多個(gè)答案,題庫(kù)中不可能把所有答案都列舉得出來(lái),所以考生最好用最常見的一個(gè),確保正確;需要提醒考生注意的是,填空題和改錯(cuò)題的要求中明確聲明:不得刪減或增加程序行,就是這個(gè)道理;第七頁(yè),共七十九頁(yè),2022年,8月28日8對(duì)于編程題,評(píng)分程序先是讀取考生文件夾下的擴(kuò)展名為.DAT的文件,再其中的數(shù)據(jù)與評(píng)分程序中的提供的數(shù)據(jù)進(jìn)行對(duì)比,因此,考生在編程后,一定要運(yùn)行程序,以生成擴(kuò)展名為.DAT的輸出文件??!評(píng)分程序是按照最終生成的文件給分的!且:只要考生能生成最終答案文件,均可得分!很多最終答案文件只有少數(shù)若干行數(shù)據(jù),分?jǐn)?shù)由正確答案的行數(shù)決定!例如,真考題庫(kù)中有這樣一道題,要求計(jì)算cos(x)-x=0的一個(gè)近似根,其答案是0.739085,最終要求生成的文件OUT.DAT中只有一行數(shù)據(jù)。有這個(gè)文件,并且該文件只有一行數(shù)據(jù)0.739085的話,就可以得到100分!當(dāng)然,有多行答案的文件的格式是由程序中的輸出部分決定的(而這個(gè)部分是不允許考生修改的!),考生必須能夠看懂輸出程序段的輸出格式,否則會(huì)適得其反!第八頁(yè),共七十九頁(yè),2022年,8月28日9第1章程序改錯(cuò)題改錯(cuò)題解題技巧常見錯(cuò)誤分類典型改錯(cuò)題舉例第九頁(yè),共七十九頁(yè),2022年,8月28日10改錯(cuò)題解題技巧做題方法:(1)首先仔細(xì)審題,了解試題的要求,看清楚試題給出的輸入和輸出例示,以便檢驗(yàn)改錯(cuò)后程序運(yùn)行的結(jié)果是否正確。(2)當(dāng)在VC環(huán)境下調(diào)出源程序后,審視"/******found******/“所在函數(shù),根據(jù)題義理解程序所采用的基本算法,做到心里有數(shù)。(3)對(duì)測(cè)試程序進(jìn)行編譯,看是否有語(yǔ)法錯(cuò)誤。當(dāng)編譯提示有語(yǔ)法錯(cuò)時(shí),可參考編譯提示來(lái)查找并改正錯(cuò)誤。第十頁(yè),共七十九頁(yè),2022年,8月28日11(4)當(dāng)不再出現(xiàn)語(yǔ)法錯(cuò)時(shí),使用執(zhí)行程序,按照試題的示例給出的數(shù)據(jù)進(jìn)行試算,若試算的結(jié)果與給出的輸出結(jié)果相同時(shí),該題就做對(duì)了;若試算的結(jié)果與給出的輸出結(jié)果不同,就應(yīng)進(jìn)一步檢查程序中的邏輯錯(cuò)誤。(5)當(dāng)程序存在邏輯錯(cuò)誤時(shí),首先應(yīng)當(dāng)理解題意、讀懂程序的算法,必要時(shí)可按步檢查數(shù)據(jù)的流程,以便確定錯(cuò)誤所在。(6)修改完成,得到正確結(jié)果后,一定不要忘記把修改后的程序存盤。第十一頁(yè),共七十九頁(yè),2022年,8月28日12改錯(cuò)題的特點(diǎn)和注意事項(xiàng)求分?jǐn)?shù)和的時(shí)候請(qǐng)注意整除問題。如2-2循環(huán)的初值、條件、和終值問題。如3-2注意關(guān)鍵詞:如NULL與Null的區(qū)別,如9-2;“\0”與’\0’的區(qū)別,如8-2。大小寫問題:For與for,Int與int,如8-2、14-2。形態(tài)相似字符:小寫字符l與數(shù)字1的區(qū)別如1-2,字符o與數(shù)字0的區(qū)別。符號(hào)問題:(1)“\”與“/”的區(qū)別,如4-2,5-2;(2)“=”與“==”的區(qū)別,如4-2。加漏符號(hào)(*或;)問題:如6-2,7-2,9-2,10-2,11-2,12-2,13-2,15-2,19-2第十二頁(yè),共七十九頁(yè),2022年,8月28日13注意比較值時(shí),指針(位置)與指針值(內(nèi)容)的問題。如1-2,19-2注意理解題意,如:14-2參數(shù)或變量類型不一致的問題,參數(shù)及函數(shù)名前面的類型一般不可以省。如指針與普通變量。如2-2,6-2,9-2,10-2,19-2兩個(gè)數(shù)相互交換應(yīng)該借助臨時(shí)變量來(lái)實(shí)現(xiàn),而不能直接賦值。如x與y互換,借助t,則:t=x;x=y;y=t;帶參宏定義的時(shí)候展開的時(shí)候有括號(hào)就有括號(hào),沒括號(hào)不要畫蛇添足。反過來(lái),如果展開的時(shí)候必需要有括號(hào),那個(gè)在定義的時(shí)候請(qǐng)加上括號(hào)。IF語(yǔ)句的條件加括號(hào)。如10-2第十三頁(yè),共七十九頁(yè),2022年,8月28日14變量有沒有定義及賦初值。如5-2如s為指針變量,請(qǐng)注意s與*s的區(qū)別及用法。如10-2,15-2C語(yǔ)言的結(jié)束標(biāo)志為分號(hào)(;),寫在同一行上的一段代碼,如果是尾于不同的語(yǔ)句應(yīng)用分號(hào)隔開。如inta,b,floatc;應(yīng)改為:inta,b;floatc;是否漏寫了C語(yǔ)言的結(jié)束標(biāo)志為分號(hào)(;),如10-2是否多寫C語(yǔ)言的結(jié)束標(biāo)志為分號(hào)(;),如12-2如:"switch(a);",應(yīng)改為"switch(a)""intf(intn);",應(yīng)改為"intf(intn)""for(i=1;i<=5;i++;)",應(yīng)改為"for(i=1;i<=5;i++)"第十四頁(yè),共七十九頁(yè),2022年,8月28日15賦值運(yùn)算符左右類型不一致如:實(shí)型變量"x=1/i",應(yīng)改為"x=1.0/i"字符變量"c="\0"",應(yīng)改為"c='\0'"指針變量"p=10",應(yīng)改為"*p=10"
表達(dá)式格式錯(cuò)誤或次序錯(cuò)誤如:"if!(x>y)",應(yīng)改為"if(!(x>y))"
變量1=變量2,如:"p=q",應(yīng)改為"q=p"交換兩個(gè)變量的值,如:"t=x,y=x,y=t",應(yīng)改為"t=x,x=y,y=t“變量初值或類型錯(cuò)誤如:"intx=1",應(yīng)改為"doublex=0"第十五頁(yè),共七十九頁(yè),2022年,8月28日16函數(shù)類型或形參類型說(shuō)明錯(cuò)誤"intf(inta)",應(yīng)改為"doublef(inta)"
實(shí)參是地址(數(shù)組名),形參應(yīng)是指針或數(shù)組名"intf(intp)",應(yīng)改為"intf(int*p)"或者改為"intf(intp[])";其他錯(cuò)誤如:"a=c-'o'",應(yīng)改為"a=c-'0'""scanf("%f",i)",應(yīng)改為"scanf("%d",&i)""case0;",應(yīng)改為"case0:"第十六頁(yè),共七十九頁(yè),2022年,8月28日17例1:給定程序MODI1.C中函數(shù)fun的功能是:用冒泡法對(duì)6個(gè)字符串按由小到大的順序進(jìn)行排序。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<string.h>#defineMAXLINE20fun(char*pstr[6]){inti,j;char*p;for(i=0;i<5;i++){/**************found**************/for(j=i+1,j<6,j++){if(strcmp(*(pstr+i),*(pstr+j))>0){p=*(pstr+i);/**************found**************/*(pstr+i)=pstr+j;*(pstr+j)=p;}}}}main(){inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=str[i];printf("\nEnter6string(1stringateachline):\n");for(i=0;i<6;i++)scanf("%s",pstr[i]);fun(pstr);printf("Thestringsaftersorting:\n");for(i=0;i<6;i++)printf("%s\n",pstr[i]);}第十七頁(yè),共七十九頁(yè),2022年,8月28日18例2:給定程序MODI1.C中函數(shù)fun的功能是:求出數(shù)組中最大數(shù)和次最大數(shù),并把最大數(shù)和a[0]中的數(shù)對(duì)調(diào)、次最大數(shù)和a[1]中的數(shù)對(duì)調(diào)。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#defineN20voidfun(int*a,intn){inti,m,t,k;for(i=0;i<2;i++){/**********found**********/m=0;for(k=i+1;k<n;k++)/**********found**********/if(a[k]>a[m])k=m;t=a[i];a[i]=a[m];a[m]=t;}}main(){intb[N]={11,5,12,0,3,6,9,7,10,8},n=10,i;for(i=0;i<n;i++)printf("%d",b[i]);printf("\n");fun(b,n);for(i=0;i<n;i++)printf("%d",b[i]);printf("\n");}第十八頁(yè),共七十九頁(yè),2022年,8月28日19常見錯(cuò)誤分類上機(jī)改錯(cuò)題通常有兩個(gè)(或三個(gè))錯(cuò)誤需要修改。試題中用“/******found******/”來(lái)提示在下一行(或下面第二行)有錯(cuò)。錯(cuò)誤的性質(zhì)基本分為語(yǔ)法錯(cuò)誤和邏輯錯(cuò)誤兩種,也有些試題要求把語(yǔ)句添加在下劃線處。特別要注意的是:只能在出錯(cuò)的行上進(jìn)行修改,不要添行、刪行、合并或分解行,不要改動(dòng)程序的順序,更不要自己另編程序。第十九頁(yè),共七十九頁(yè),2022年,8月28日20若錯(cuò)誤行是函數(shù)首部,可分為以下幾種情況:A、該行最后若有分號(hào)則刪除,中間若有分號(hào)則改成逗號(hào)B、形參類型不一致的問題,特別是指針類型,若后面用到某形參時(shí)有指針運(yùn)算則該形參必為指針類型;若形參是二維數(shù)組或指向m個(gè)元素的指針變量,則第二維的長(zhǎng)度必須與main中對(duì)應(yīng)數(shù)組的第二維長(zhǎng)度相同C、函數(shù)類型不一致的問題,若函數(shù)中沒有return語(yǔ)句則函數(shù)類型為void,若有return語(yǔ)句則函數(shù)的類型必須與return后變量的類型一致。1、函數(shù)首部第二十頁(yè),共七十九頁(yè),2022年,8月28日21若錯(cuò)誤行是if或者while語(yǔ)句,則要注意以下點(diǎn):1)首先判斷是否正確書寫if或while關(guān)鍵字;2)然后看有沒有用小括號(hào)把整個(gè)表達(dá)式括起來(lái),若沒有則加上小括號(hào);3)若條件表達(dá)式中有指針變量而且沒有指針運(yùn)算符時(shí),則加上指針運(yùn)算符*;4)若if條件表達(dá)式中只有一個(gè)等于號(hào)即數(shù)學(xué)等號(hào)(=),則要改寫成兩個(gè)等于號(hào)即邏輯等號(hào)(==)。2、if或while語(yǔ)句第二十一頁(yè),共七十九頁(yè),2022年,8月28日22若錯(cuò)誤行是for語(yǔ)句,則要注意以下幾點(diǎn):1)首先判斷for有沒有書寫正確;2)然后看for中的表達(dá)式是不是用分號(hào)(;)隔開,若不是則改為分號(hào)。記住是分號(hào)(;),不是逗號(hào)(,)!3)再者,分析for中的三個(gè)表達(dá)式,是否符合題意;第一個(gè)表達(dá)式表示起始條件,第二個(gè)表達(dá)式表示終止條件,第三個(gè)表達(dá)式表示循環(huán)變量的變化3、for語(yǔ)句第二十二頁(yè),共七十九頁(yè),2022年,8月28日23若錯(cuò)誤行為return語(yǔ)句,則要注意以下幾點(diǎn):1)首先看是不是正確書寫return關(guān)鍵字;2)然后看是不是缺少分號(hào),若是則加上分號(hào)即可;3)再者判斷return后的變量或表達(dá)式是否正確;這種錯(cuò)誤需要根據(jù)題意來(lái)分析,分析返回變量或表達(dá)式的值和類型5、return語(yǔ)句第二十三頁(yè),共七十九頁(yè),2022年,8月28日24若錯(cuò)誤行為return語(yǔ)句,則要注意以下幾點(diǎn):1)首先看是不是正確書寫return關(guān)鍵字;2)然后看是不是缺少分號(hào),若是則加上分號(hào)即可;3)再者判斷return后的變量或表達(dá)式是否正確;這種錯(cuò)誤需要根據(jù)題意來(lái)分析,分析返回變量或表達(dá)式的值和類型4、return語(yǔ)句第二十四頁(yè),共七十九頁(yè),2022年,8月28日255、語(yǔ)法錯(cuò)誤A、語(yǔ)句缺少分號(hào),若錯(cuò)誤行中有語(yǔ)句沒有用分號(hào)結(jié)束,則加上分號(hào)。B、大小寫不對(duì),若錯(cuò)誤行中有大寫字母則一般都改成小寫字母。C、變量未定義D、變量類型不匹配E、字符常量與字符串常量混淆第二十五頁(yè),共七十九頁(yè),2022年,8月28日266、指針變量的運(yùn)用,若錯(cuò)誤行中有指針變量,并且該變量名前沒有指針運(yùn)算符則一般都是加上指針運(yùn)算符7、若錯(cuò)誤行中見到整型1除以某個(gè)表達(dá)式時(shí),一概改成1.0。但若是整型變量或表達(dá)式則只能用強(qiáng)制轉(zhuǎn)換8、復(fù)合運(yùn)算符寫錯(cuò)第二十六頁(yè),共七十九頁(yè),2022年,8月28日279、字符串結(jié)束符寫錯(cuò),若有字符串結(jié)束符則要特別注意有沒有寫錯(cuò),注意要區(qū)分字符‘o’和數(shù)字’0’。但第11題例外,因?yàn)樵擃}是要將數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)字。10、若錯(cuò)誤行是定義語(yǔ)句,則首先看類型是否符合;再看所賦初值是否正確;若以上均不是,則看是否少定義了某個(gè)變量或少了花括號(hào)。11、表達(dá)式錯(cuò)誤(占的份量最多,并且沒有統(tǒng)一的改法,我們只能通過題目要求來(lái)分析并修改)第二十七頁(yè),共七十九頁(yè),2022年,8月28日28常見語(yǔ)法錯(cuò)誤1.關(guān)鍵字出錯(cuò):在二級(jí)C語(yǔ)言考試中僅僅考查學(xué)生對(duì)基本的關(guān)鍵字掌握情況,比如:整型就是int不是Int,知識(shí)點(diǎn)簡(jiǎn)單。(1)6題第二個(gè)空:If應(yīng)該改為if;(2)12題第二個(gè)空:If應(yīng)該改為if;(3)23題第一空:dounle應(yīng)該改為double;(4)35題第二空:If應(yīng)該改為if;(5)36題第二空:Double應(yīng)該改為double。(6)2題第二空:wihle應(yīng)該改為while。第二十八頁(yè),共七十九頁(yè),2022年,8月28日292.格式出錯(cuò):在考試中主要考查學(xué)生細(xì)心的程度,最喜歡考簡(jiǎn)單的知識(shí)點(diǎn)。(1)少分號(hào):2題第一空、28題第一空、29題第一空、34題第二空、37題第二空、48題第二空。考查的知識(shí)點(diǎn):分號(hào)是語(yǔ)句結(jié)束的標(biāo)志。(2)for語(yǔ)句的格式:for(;;)中間用分號(hào)隔開不是用逗號(hào)隔開。3題第二空、6題第一空、14題第二空都是出現(xiàn)了for語(yǔ)句格式出錯(cuò)的問題。(3)if語(yǔ)句的格式:if(表達(dá)式),if后面必須加上小括號(hào)。37題第一空if后面必須加上小括號(hào)。(4)命令行格式出錯(cuò):17題第一空中include命令少了#,正確的形式應(yīng)該是#include“stdio.h”;第二十九頁(yè),共七十九頁(yè),2022年,8月28日30(5)常用函數(shù)格式:A22題第一空中n=strlen[aa]應(yīng)該改為n=strlen(aa),記住函數(shù)名后面一定是花括號(hào),不能是方括號(hào),方括號(hào)只有在數(shù)組下標(biāo)中用到。B49題第一空intj,c,floatxa=0.0;應(yīng)該改為intj,c;floatxa=0.0;記?。阂瑫r(shí)定義兩種以上不同的數(shù)據(jù)類型的時(shí)候必須在不同類型的數(shù)據(jù)中間加上分號(hào)。C41題第二空scanf(“%d”,a[i][j]);應(yīng)該改為scanf(“%d”,&a[i][j])??疾镾canf輸入函數(shù)的格式。第三十頁(yè),共七十九頁(yè),2022年,8月28日31(6)數(shù)組:所有老師講到數(shù)組時(shí)候必須統(tǒng)一將此知識(shí)點(diǎn)給學(xué)生回顧一遍!A數(shù)組下標(biāo)引用時(shí)候只能用反括號(hào)。28題第二空t(k)=b(j)應(yīng)該改為t[k]=b[j]。B二維數(shù)組中的列下標(biāo)不能省略。46題第一空必須將數(shù)組列下標(biāo)補(bǔ)充完整。第三十一頁(yè),共七十九頁(yè),2022年,8月28日32(7)常用符號(hào)出錯(cuò):AC語(yǔ)言中大于等于符號(hào)是“>=”,但是在考試的時(shí)候可能出現(xiàn)將它寫為“=>”,49題第二空就是這樣的錯(cuò)誤。B當(dāng)題目中需要比較某個(gè)字符是否是大寫字母或是小寫字母、數(shù)字時(shí),必須將“與”、“或”、“非”記住。第三十二頁(yè),共七十九頁(yè),2022年,8月28日33判斷某個(gè)字符是否是大寫字母:charch;if(ch>=’A’&&ch<=’Z’)printf(“%c”,ch);判斷某個(gè)字符是否是小寫字母:charch;if(ch>=’a’&&ch<=’z’)printf(“%c”,ch);判斷某個(gè)字符是否是數(shù)字:charch;if(ch>=’0’&&ch<=’9’)printf(“%c”,ch);判斷某個(gè)數(shù)字是否能同時(shí)被5和7整除:inti=35;if(i%5==0&&i%7==0)printf(“%d”,i);判斷某個(gè)數(shù)字是否能被5或7整除:inti=35;if(i%5==0||i%7==0)printf(“%d”,i);判斷某個(gè)數(shù)字是否是偶數(shù)或奇數(shù):inti=35;if(i%2==0)printf(“%d是一個(gè)偶數(shù)”,i);elseprintf(“%d是一個(gè)奇數(shù)”,i);第三十三頁(yè),共七十九頁(yè),2022年,8月28日341.使用了沒有定義過的變量:這種題目可以通過編譯查找出出錯(cuò)的地方并改之。(1)0(零)和o(字母歐)的區(qū)別:19題第一空、23題第二空、43題第二空。(2)P(大)和p(?。┑膮^(qū)別:33題第一空。(3)普通變量大小寫的區(qū)別:A定義和使用時(shí)的字母大小寫不一致;如:"I",應(yīng)改為"i"B大小寫沒有出錯(cuò),程序中直接使用了沒有定義過的變量,要求學(xué)生更加細(xì)心的讀題目。45題第二空使用到了i這個(gè)變量,但是我們?cè)诙x行中沒有找到i的定義,因此在做題時(shí)候要上下結(jié)合來(lái)分析題目。22題第二空c=aa[j]中的c沒有定義過,參看定義的語(yǔ)句不能發(fā)現(xiàn)應(yīng)該是ch=aa[j]。常見邏輯錯(cuò)誤第三十四頁(yè),共七十九頁(yè),2022年,8月28日352.運(yùn)算符號(hào)出錯(cuò):"a\=10",應(yīng)改為"a/=10""a=b/10",應(yīng)改為"a=b%10""a=b",應(yīng)改為"a+=b""if(a=b)",應(yīng)改為"if(a==b)""if(a>0||b>0)",應(yīng)改為"if(a>0&&b>0)""a<10",應(yīng)改為"a<=10"第三十五頁(yè),共七十九頁(yè),2022年,8月28日363.表達(dá)式的取值范圍出錯(cuò):當(dāng)遇到計(jì)算表達(dá)式的累加或是累減時(shí),一定用到循環(huán)來(lái)完成相應(yīng)的操作。例如:改錯(cuò)題第七題中要求計(jì)算t=1-1/2*2-1/3*3-….-1/m*m這個(gè)表達(dá)式,在這個(gè)題目中第一空有這樣的for語(yǔ)句for(i=2;i<m;i++)y-=1/(i*i);從題目中不難發(fā)現(xiàn)i是一個(gè)變量,它的取值范圍從整數(shù)2開始到m-1結(jié)束,最終計(jì)算的結(jié)果為y=1-1/2*2-1/3*3-….-1/(m-1)*(m-1)和題目要求的不符,因此將i<m改為i<=m。做這樣的題目看兩點(diǎn):一看題目中的表達(dá)式,二看for語(yǔ)句中變量的取值范圍。31題第二空同樣的考點(diǎn)。第三十六頁(yè),共七十九頁(yè),2022年,8月28日374.C語(yǔ)言中的除法運(yùn)算:這個(gè)考點(diǎn)同樣考查表達(dá)式的相關(guān)知識(shí)。例如:改錯(cuò)題第七題中要求計(jì)算t=1-1/2*2-1/3*3-….-1/m*m這個(gè)表達(dá)式,在這個(gè)題目中第一空有這樣的for語(yǔ)句for(i=2;i<m;i++)y-=1/(i*i);剛才我們將了表達(dá)式的范圍,現(xiàn)在我們考慮y-=1/(i*i);是否正確?賦值號(hào)左邊問題不大,我們看看右邊1/(i*i),其中i是整數(shù),那么i*i也是整數(shù),在C語(yǔ)言中1除以比它大的數(shù)時(shí)值為零。這樣和題目的要求就不相符。記住:1/2的值為零,只有1.0/2或是1.0/2.0的值為0.5。39題第一空也同樣是這種錯(cuò)誤。第三十七頁(yè),共七十九頁(yè),2022年,8月28日385.找最大值和排序問題:遇到這種題目在改錯(cuò)題中最容易考查的是大于(>)、小于(<)等符號(hào)的變化,當(dāng)你查找出錯(cuò)的地方?jīng)]有語(yǔ)法錯(cuò)誤,也沒有使用了未定義的變量時(shí),記住這個(gè)口訣:將大于改為小于,將小于改為大于!11題第二空、12題第一空和13題第二空、4題第二空都可以用這樣的方法。第三十八頁(yè),共七十九頁(yè),2022年,8月28日396.函數(shù)的返回值及其參數(shù):重點(diǎn)函數(shù)調(diào)用、函數(shù)的返回值和return中數(shù)據(jù)類型不一致,例如:1.1、3.1、16.1、19.2、34.1、36.1、40.1、48.1都死這樣的錯(cuò)誤;return后面的表達(dá)式及其類型:19.2、30.2、39.2形參和實(shí)參類型不一致,例如:5.1、13.1、17.2、20.1、25.2依據(jù)剛剛講的方法很快就能找出出錯(cuò)點(diǎn)。賦值號(hào)的左右兩邊的類型不一致,例如:5.2、5.3、20.2、24.2、35.1、44.1一定特別注意!第三十九頁(yè),共七十九頁(yè),2022年,8月28日407.數(shù)組:(1)數(shù)組下標(biāo)的初始值:數(shù)組下標(biāo)從零開始,到長(zhǎng)度減一結(jié)束。考試技巧:當(dāng)出錯(cuò)行在定義部分時(shí),先檢查該定義語(yǔ)句有沒有語(yǔ)法錯(cuò)誤,再看定義語(yǔ)句中的變量有沒有賦初始值,最后看變量賦的初始值有沒有正確。定義初始值有竅門,遇到累加時(shí),用來(lái)存放累加和的變量一般賦值為零,遇到求階乘時(shí),用來(lái)存放階乘值的變量一般賦值為一。8.1中的變量k賦值為1,但是我們說(shuō)了數(shù)組的下標(biāo)只能從0開始,因此將1改為0就行了。第四十頁(yè),共七十九頁(yè),2022年,8月28日41(2)數(shù)組和字符串長(zhǎng)度減一:當(dāng)使用數(shù)組中的元素時(shí),最大值只能到數(shù)組長(zhǎng)度減一。字符串以’\0’作為字符串的結(jié)束標(biāo)志,因此取值最大也只能到字符串長(zhǎng)度減一。25.2中輸出printf(“%d”,aa[i]);分析程序知道i在此時(shí)就是數(shù)組的長(zhǎng)度,我們要輸出數(shù)組中的元素,最大就只能到aa[i-1],因此改為printf(“%d”,aa[i-1]);就行了。4.1和38.2中考查的是字符串長(zhǎng)度減一的問題。第四十一頁(yè),共七十九頁(yè),2022年,8月28日42(3)數(shù)組下標(biāo)往后走:當(dāng)題目要求將一個(gè)數(shù)組中的元素直接賦值或是以某種方式復(fù)制到另一個(gè)數(shù)組中時(shí),接受數(shù)據(jù)的數(shù)組中的下標(biāo)要自增。9.1中s[j]=s[i];將s[i]中的值復(fù)制給s[j],聯(lián)系上下函數(shù)段發(fā)現(xiàn)i是一個(gè)變量被for語(yǔ)句控制,從0開始直到遇到’\0’結(jié)束。i一直在加。但是j沒有變化,因此改為s[j++]=s[i];即可。類似的題目有:25.2、26.2、32.1、50.2。第四十二頁(yè),共七十九頁(yè),2022年,8月28日43(4)字符數(shù)組復(fù)制操作:若程序中的循環(huán)中有s[j++]=s[i];循環(huán)后面一般應(yīng)有語(yǔ)句s[j]=‘\0’;常見的錯(cuò)誤時(shí)題目[]內(nèi)寫的是i而不是j;s[j]=‘\0’在填空題中也常被作為備選項(xiàng)讓大家填。第四十三頁(yè),共七十九頁(yè),2022年,8月28日448.特例:部分題目的解答很特殊,需要根據(jù)上下文中的內(nèi)容來(lái)解答題目;例如10.1,在此題目中,定義了變量t=0;根據(jù)下面程序中的循環(huán),s=0.0,首先加的是變量t的值,即s的值是從0.0開始的,s得到的值是:s=0.0+0.0+1.0/3+……,觀察表達(dá)式的值,這個(gè)少加了第一項(xiàng)1.0的值,所以變量t的初值不能是0.0,只能是1.0,或者是1;類似的題目有:21.2,33.2、40.2、43.1、47.1、50.1第四十四頁(yè),共七十九頁(yè),2022年,8月28日459.鏈表鏈表的題目分為帶頭結(jié)點(diǎn)的和不帶頭結(jié)點(diǎn)的鏈表;1、帶頭結(jié)點(diǎn)的鏈表帶頭結(jié)點(diǎn)的鏈表的第一個(gè)空的改為:p=h->next;第二個(gè)空改為:p=p->next;.2、不帶頭結(jié)點(diǎn)的鏈表不帶頭結(jié)點(diǎn)的鏈表的第一個(gè)空的改為:p=h;第二個(gè)空改為:p=p->next;.第四十五頁(yè),共七十九頁(yè),2022年,8月28日4610.其它循環(huán)語(yǔ)句、if語(yǔ)句、復(fù)合語(yǔ)句的花括號(hào)后多加了分號(hào)賦值號(hào)與等號(hào)混淆引號(hào)或括號(hào)不對(duì)稱(只有一邊)復(fù)合語(yǔ)句少了“{}”變量的初值不正確或未賦初值第四十六頁(yè),共七十九頁(yè),2022年,8月28日47利用scanf()函數(shù)給變量賦值時(shí)忘記加地址運(yùn)算符“&”輸入輸出的數(shù)據(jù)類型與所用格式說(shuō)明符不一致輸入數(shù)據(jù)時(shí),企圖規(guī)定精度,如:scanf("%7.2f",&a);switch語(yǔ)句中漏寫break語(yǔ)句在引用數(shù)組元素時(shí),將定義數(shù)組時(shí)的下標(biāo)值作為數(shù)組最后一個(gè)元素的下標(biāo)使用scanf()函數(shù)時(shí),輸入數(shù)值型數(shù)據(jù)的方式與要求不符,或輸入字符格式與要求不一致(此類錯(cuò)誤雖不方便出改錯(cuò)題,但對(duì)任何C程序設(shè)計(jì)的學(xué)習(xí)者來(lái)說(shuō)卻是必須注意的地方)第四十七頁(yè),共七十九頁(yè),2022年,8月28日48#include<stdio.h>voidfun(char*s){inti,j;for(i=j=0;s[i]!=‘\0’;i++)if(s[i]!=‘c’)/**********found*********/s[j]=s[i];/**********found*********/s[i]=‘\0’;}
main(){chars[80];printf(“enterastring:”);gets(s);
printf(“Theoriginalstring:”);put(s);fun(s);
printf(“Thestringafterdeleted:”);puts(s);printf(“\n”);}s[j++]=s[i]s[j]=‘\0’這是前移問題,請(qǐng)注意賦值號(hào)左右兩端的數(shù)組下標(biāo)(或指針)都得往后移,同時(shí)注意字符串的末尾手動(dòng)加一個(gè)結(jié)束標(biāo)志‘\0’。例3.在給定的程序中,函數(shù)fun的功能是:從s所指字符串中刪除所有小寫字母c。第四十八頁(yè),共七十九頁(yè),2022年,8月28日49例4:下列給定程序的功能是:讀入一個(gè)整數(shù)k(2<=k<=10000),打印它的所有質(zhì)因子(即所有為素?cái)?shù)的因子)。例如,若輸入整數(shù)2310,則應(yīng)輸出:2、3、5、7、11。請(qǐng)改正程序中的錯(cuò)誤,使程序能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<conio.h>#include<stdio.h>/********found********/IsPrime(intn);{inti,m;
m=1;
for(i=2;i<n;i++)/********found********/if!(n%i)
{m=0;break;}
return(m);}(1)去掉;(2)if后加括號(hào)main(){intj,k;
clrscr();
printf(“\nPleaseenteranintegernumberbetween2and10000:”);
scanf(“%d”,&k);
printf(“\n\nTheprimefactor(s)of%dis(are):”,
k);
for(j=2;j<=k;j++)
if((!(k%j))&&(IsPrime(j)))
printf(“\n%4d”,j);
printf(”\n”);第四十九頁(yè),共七十九頁(yè),2022年,8月28日50例6:下列給定程序中,函數(shù)fun的功能是:將a所指字符串中的字符和b所指字符串中的字符,按排列的順序交叉合并到c所指數(shù)組中,過長(zhǎng)的字符放在c的尾部,如:a=“abcdefg”,b=“1234”,則c="a1b2c3d4efg"#include<conio.h>#include<stdio.h>#include<string.h>/**********found********/fun(chara,charb,charc){while(*a&&*b){*c=*a;c++;a++;*c=*b;c++;b++;}if(*a=='\0')/*********found*********/while(*b)*c=*b;c++;b++;}else/*********found*********/while(*a)*c=*a;c++;a++;}*c='\0';}main(){chars1[100],s2[100],t[200];clrscr();printf("\nEnters1string:);scanf("%s",s1);printf("\nEnters2string:);scanf("%s",s2);fun(s1,s2,t);printf("\nresultis:%s\n",t);}改正方法:voidfun(char*a,char*b,char*c)while(*b){*c=*b;c++;b++;}while(*a){*c=*a;c++;a++;}第五十頁(yè),共七十九頁(yè),2022年,8月28日51例6:下列給定程序中,函數(shù)fun的功能是:根據(jù)形參m(9=>m>=2)的值,在mXm的二維數(shù)組中存放如下所示的數(shù)據(jù),由main()函數(shù)輸出例如:若輸入2若輸入4
則輸出12則輸出1234
242468
36912
481216請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!第五十一頁(yè),共七十九頁(yè),2022年,8月28日52#include<stdio.h>#include<conio.h>#defineM10inta[M][M]={0};/********found*******/fun(int**a,intm){intj,k;for(j=0;j<m;j++)for(k=0;k<m;k++)/********found*******/a[j][k]=k*j;}main(){inti,j,n;clrscr();printf("Entern:");scanf("%d",&n);fun(a,n);for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%4d",a[i][j]);printf("\n");}}voidfun(inta[M][M],intm)a[j][k]=(k+1)*(j+1);第五十二頁(yè),共七十九頁(yè),2022年,8月28日二級(jí)C應(yīng)試輔導(dǎo)53例7:下列給定程序中,函數(shù)fun的功能是:刪除數(shù)列中值為x的元素,n中存放的是數(shù)列元素的個(gè)數(shù)。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。#include<stdio.h>#defineN20fun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])p=p+1;/********found*******/if(P==n)return-1;else{for(i=p;i<n;i++)/********found******/a[i+1]=a[i];returnn-1;}}第五十三頁(yè),共七十九頁(yè),2022年,8月28日54#include<stdio.h>#defineN20fun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])p=p+1;/********found*******/if(P==n)return-1;else{for(i=p;i<n;i++)/********found******/a[i+1]=a[i];returnn-1;}}main(){intw[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i;n=10;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf("%5d",w[i]);printf("\nInputx(todelete):");scanf("%d",&x);printf("Delete:%d\n",x);n=fun(w,n,x);if(n==-1)printf("***Notbefound!***\n\n");else{printf("Thedataafterdeleted:\n");for(i=0;i<n;i++)printf("%5d",w[i]);printf("\n\n");}}if(p==n)return-1;a[i]=a[i+1];第五十四頁(yè),共七十九頁(yè),2022年,8月28日55第2章程序填空題填空題是計(jì)算機(jī)等級(jí)考試中的難點(diǎn),占有的分值為20分。填空題答題技巧:若需要填的空出現(xiàn)在程序前面部分,多數(shù)是定義變量,此時(shí)需要觀察后續(xù)那個(gè)變量尚未定義;若出現(xiàn)在中間部分,則賦值號(hào)左邊填的內(nèi)容和該語(yǔ)句之后的語(yǔ)句相關(guān);賦值號(hào)右邊填的內(nèi)容和該語(yǔ)句之前的語(yǔ)句相關(guān);若出現(xiàn)在打印語(yǔ)句之前,則填空內(nèi)容和打印項(xiàng)相關(guān);若出現(xiàn)在打印語(yǔ)句中,則填空內(nèi)容和該語(yǔ)句前面最后一條可執(zhí)行語(yǔ)句中賦值號(hào)左邊的變量相關(guān)。第五十五頁(yè),共七十九頁(yè),2022年,8月28日56填空題上機(jī)填空題一般包含三個(gè)空。試題中用“/******found******/”來(lái)提示在下一行在有填空。要填空的位置用1、2、3表示。考生在考試時(shí)應(yīng)刪除標(biāo)識(shí)1、2、3及下劃線并填入相應(yīng)的代碼。特別要注意的是:只能在要填空的位置上進(jìn)行修改,不要添行、刪行、合并或分解行,不要改動(dòng)程序的順序,不要自己另編程序。
第五十六頁(yè),共七十九頁(yè),2022年,8月28日注意事項(xiàng)1.填寫參數(shù)時(shí)注意主調(diào)函數(shù)與被調(diào)函數(shù)類型一致。數(shù)組名作形參可以不指定大小。如:1-1,2-1,10-12.根據(jù)題目意思,再?gòu)暮瘮?shù)中找出對(duì)應(yīng)的變量填寫表達(dá)式。如:3-1,4-1,5-1,6-1,7-1,8-1,9-1,11-1,12-1,13-1,14-13.可以根據(jù)上下文的函數(shù)形式找出相應(yīng)填寫內(nèi)容。如:5-1,6-1,7-1,8-1,9-1,10-1,16-1第五十七頁(yè),共七十九頁(yè),2022年,8月28日58填空題解題步驟Step1:仔細(xì)閱讀題目要求和功能,尤其是題目給出的輸入和輸出示例,以便檢驗(yàn)填空后程序運(yùn)行結(jié)果是否正確。Step2:在VC++6.0環(huán)境下調(diào)出源程序,讀懂程序代碼,根據(jù)“(數(shù)字)”出現(xiàn)的位置和題目要求填寫空白內(nèi)容。Step3:按F7鍵編譯源程序,若發(fā)現(xiàn)有語(yǔ)法錯(cuò)誤,重新檢查或調(diào)整答題思路。Step4:按Ctrl+F5執(zhí)行程序,按照試題示例中給出的數(shù)據(jù)進(jìn)行測(cè)試,如果結(jié)果與給出的輸出結(jié)果相同,該題就完成了;如果測(cè)試的結(jié)果與給出的結(jié)果不同,就需要進(jìn)一步檢查程序的邏輯錯(cuò)誤。Step5:最后得到正確結(jié)果后,一定保存程序,否則不得分。第五十八頁(yè),共七十九頁(yè),2022年,8月28日59填空題分類(一)、數(shù)學(xué)題目例如:6、13、25、29、36、37、38、44、461.如果在函數(shù)中定義變量,但是沒有定義成靜態(tài)存儲(chǔ)變量,即變量前面沒有static,應(yīng)給變量賦初值,如果以后用到的是加減運(yùn)算,則賦初值為0或者是0.0;如果以后用到的是乘除運(yùn)算,則賦初值為1或者是1.0;2.循環(huán)條件的填空,分析表達(dá)式的規(guī)律,看表達(dá)式中的最后一項(xiàng)的值是否到了第m項(xiàng)或者是第n項(xiàng),如果到了第m或者第n項(xiàng),則在循環(huán)中的第二個(gè)表達(dá)式中用到的是i<=m或者是i<=n;第五十九頁(yè),共七十九頁(yè),2022年,8月28日603.循環(huán)條件中如果用的是while語(yǔ)句,則循環(huán)變量的初值應(yīng)該在while的外面定義和賦初值,在循環(huán)語(yǔ)句中必須給變量自加或者是自減。如果沒有則一般填的是i++;4.看表達(dá)式中的每一項(xiàng)的運(yùn)算規(guī)則,按照運(yùn)算的規(guī)則把每一項(xiàng)中的n值替換為i,特殊情況例外。如果是表達(dá)式中用到的是間隔相加減的運(yùn)算時(shí),注意給中間變量賦初值為1或者是1.0;在后面的運(yùn)算中給變量乘以一個(gè)-1,以改變中間變量的符號(hào)。第六十頁(yè),共七十九頁(yè),2022年,8月28日61(二)字符串題目例如:8、10、11、12、14、18、19、21、35、45、48、491、循環(huán)的條件是判斷該字符是否和結(jié)束符相等,如果相等,循環(huán)結(jié)束,否則繼續(xù)循環(huán)。2、把一個(gè)數(shù)字字符轉(zhuǎn)變成對(duì)應(yīng)的數(shù)值的格式:ch=ch-‘0’;把大寫字母轉(zhuǎn)變?yōu)樾懽帜傅母袷剑篶h=ch+32;把小寫字母轉(zhuǎn)變?yōu)榇髮懽帜傅母袷剑篶h=ch-32;第六十一頁(yè),共七十九頁(yè),2022年,8月28日623、區(qū)分好字符數(shù)組中的指針和指針?biāo)傅闹档年P(guān)系。在循環(huán)語(yǔ)句中,當(dāng)指針往后走一個(gè)位置的時(shí)候,用的是指針的自加,而不是指針?biāo)傅闹档淖约印?、掌握字符數(shù)組中的函數(shù)的使用的格式。即:strlen、strcmp、strcpy、sizeof、strcat的使用格式。注意里面的格式中使用的都是和指針。5、字符數(shù)組結(jié)束時(shí)都有一個(gè)結(jié)束符:‘\0’;在字符數(shù)組中的題目中的結(jié)束后要加上一個(gè)結(jié)束符。第六十二頁(yè),共七十九頁(yè),2022年,8月28日63(三)結(jié)構(gòu)體題目例如:2、3、16、22、23、331、看清題目的意思。2、定義結(jié)構(gòu)體變量時(shí)的格式。3、結(jié)構(gòu)體中成員的調(diào)用格式。結(jié)構(gòu)題體中的成員分為多種類型,調(diào)用結(jié)構(gòu)體重的成員,使用的是“.”或者是“—>”運(yùn)算符。如16.2。得到結(jié)構(gòu)體中學(xué)生分?jǐn)?shù),a—>score[i]。4、如果返回的是結(jié)構(gòu)體的話,函數(shù)的返回類型必須是結(jié)構(gòu)體類型。調(diào)用函數(shù)的格式中,調(diào)用的若是結(jié)構(gòu)體數(shù)組,則只用寫結(jié)構(gòu)體數(shù)組名。23.3第六十三頁(yè),共七十九頁(yè),2022年,8月28日64(四)函數(shù)題目1、271、看函數(shù)的返回類型,函數(shù)的返回類型必須和return語(yǔ)句返回的表達(dá)式的類型一致。2、函數(shù)的調(diào)用的情況,函數(shù)調(diào)用時(shí)只用寫函數(shù)的名稱,以及函數(shù)的參數(shù)。如:第一題中的第二和第三空的內(nèi)容就是調(diào)用函數(shù),填寫時(shí)只用填寫函數(shù)的名稱和參數(shù),故填f1(x)和f2(x,y);3、函數(shù)指針的調(diào)用格式,類型名(*f)();27題中第一空。4、函數(shù)參數(shù)的傳遞時(shí)的調(diào)用的格式,如果函數(shù)傳遞的是二維數(shù)組,則在函數(shù)的傳遞過程中形式參數(shù)必須使用的是由m個(gè)元素組成一行的指針變量。第10題中的第一個(gè)答案:(*ss)[M]。第六十四頁(yè),共七十九頁(yè),2022年,8月28日65(五)鏈表題目:15、42、43、501、首先看清楚題目要求和意思??辞宄湵碛袥]有帶頭結(jié)點(diǎn),如果帶有頭結(jié)點(diǎn),第一空填的內(nèi)容是p=h—>next;如果是不帶有頭結(jié)點(diǎn),則第一個(gè)空填寫的是p=h;2、如果第二個(gè)空是在循環(huán)語(yǔ)句while的括號(hào)中的時(shí)候里面的內(nèi)容填寫的是p或者是q,以最近出現(xiàn)的為主;如果是在循環(huán)語(yǔ)句的里面的時(shí)候,填寫的是q=p—>next;3、如果是排序的時(shí)候,從小到大的時(shí)候是大于號(hào),從大到小的時(shí)候是小于號(hào)。如果出現(xiàn)了r,則在后面的空中填的是r。第六十五頁(yè),共七十九頁(yè),2022年,8月28日66(六)文件類型的填空28、30、32、471、文件類型的題目,看清楚題目意思,定義一個(gè)文件的指針,第一個(gè)位置出現(xiàn)fp的時(shí)候要填FILE*;2、掌握文件中fopen、fprintf、fscanf、fputs、fputc、fgets、fgetc、fseek、fwrite、fread、rewind函數(shù)的使用的格式。fopen(“文件名”,“打開方式”);fclose(文件指針);fscanf(文件指針,格式控制字符串,輸入列表項(xiàng))fprintf(文件指針,格式控制字符串,輸出列表項(xiàng))第六十六頁(yè),共七十九頁(yè),2022年,8月28日67fwrite(存入數(shù)據(jù)的指針,每一個(gè)數(shù)據(jù)占有的字節(jié),輸入數(shù)據(jù)的個(gè)數(shù),文件指針);fread(讀出數(shù)據(jù)的指針,每一個(gè)數(shù)據(jù)占有的字節(jié),輸出數(shù)據(jù)的個(gè)數(shù),文件指針);3、文件打開之后要注意關(guān)閉文件,關(guān)閉文件的函數(shù)fclose(文件指針);4、在循環(huán)語(yǔ)句中如果使用到的是while(!feof())空格中填寫的文件指針,表明判斷的是文件指針是否已經(jīng)指到了文件的末尾。備注:如果文件指針指到了文件的末尾,則feof返回的是非零值,如果沒有指在文件的末尾,返回的是0值。第六十七頁(yè),共七十九頁(yè),2022年,8月28日68(七)、數(shù)組題目例如:3、4、7、17、20、24、26、31、34、39、40、41數(shù)組填空題在C語(yǔ)言考試中出現(xiàn)的頻率很高,數(shù)組分為一維數(shù)組和二維數(shù)組。一維數(shù)組較二維數(shù)組來(lái)說(shuō)簡(jiǎn)單一些。一維數(shù)組中存在這樣一些類型:3、17、20、24、31、411、求一個(gè)數(shù)值數(shù)組中的所有值的平均值和把大于或者小于平均值的數(shù)輔導(dǎo)例外一個(gè)數(shù)組中。在計(jì)算機(jī)平均值時(shí),首先定義一個(gè)變量來(lái)存放平均分,平均分一般用av變量來(lái)代替,如果av已經(jīng)定義但是沒有賦初值,那么這個(gè)空填寫的內(nèi)容的為:av=0;第六十八頁(yè),共七十九頁(yè),2022年,8月28日692、求算平均值值時(shí)有兩種方法:第一種是算出總的分?jǐn)?shù),最后再除以總的個(gè)數(shù)即可,如算1到6之間的數(shù)的平均值,首先算出1到6的和,其次用綜合除以總的個(gè)數(shù)6,即可以得到平均值;第二種方法是用每一個(gè)數(shù)除以6再把所有的和加起來(lái)。即1/6+2/6+3/6+4/6+5/6+6/6;所以在執(zhí)行的一維數(shù)組中算平均值時(shí)也是存在來(lái)中情況,如果在for語(yǔ)句的后面有av=av/N;則第二個(gè)空一般的填寫時(shí)av+=s[i];如果說(shuō)沒有av=av/N;則填寫的是:av+=s[i]/N;第六十九頁(yè),共七十九頁(yè),2022年,8月28日703、在后面的一個(gè)空的填寫的時(shí)候要注意變量的使用情況,如果變量使用了j和i,那么這一個(gè)空的填寫的內(nèi)容為:j++;4、如果一維數(shù)組中求的是把大于或者是小于平均值的數(shù)移動(dòng)到數(shù)組的首部的時(shí)候,這種題目的解答時(shí)這樣的,第一個(gè)空一般填寫的內(nèi)容為:j++;第二個(gè)空填寫的內(nèi)容是-1;5、對(duì)數(shù)組進(jìn)行排序時(shí):如果是從大到小的排序的時(shí)候,用的是小于符號(hào),如果是從小到大排序時(shí)使用的是大于符號(hào)。第七十頁(yè),共七十九頁(yè),2022年,8月28日71二維數(shù)組中的題目類型以及解決的技巧:例如:4、7、26、34、39、401、二維數(shù)組的題目,填空的時(shí)候一般是填在函數(shù)調(diào)用,函數(shù)在調(diào)用時(shí)候?qū)懙膽?yīng)該是而為數(shù)組的名字;在定義函數(shù)的時(shí)候使用的是函數(shù)的類型和由m各元素組成一行的指針變量,假設(shè)二維數(shù)組的名字是ss,那么填寫的內(nèi)容是:(*ss)[M];如果調(diào)用的是普通變量則填寫的內(nèi)容為:intn;2、二維數(shù)組遍歷時(shí),使用的是兩個(gè)循環(huán),使用的是循環(huán)的嵌套使用,第二個(gè)循環(huán)的使用的時(shí)候填寫的內(nèi)容為:j=0;(特殊的特殊處理)第七十一頁(yè),共七十九頁(yè),2022年,8月28日723、交換兩個(gè)變量的值的使用的格式為:t=a;a=b;b=t;記住交換變量的格式和順序。4、如果二維數(shù)組是字符串的題目的時(shí)候,要記住字符串中函數(shù)的使用的格式;即:strlen、strcmp、strcpy、sizeof、strcat的使用格式。注意里面的格式中使用的都是和指針。5、特殊的特殊處理。第7題的填空的內(nèi)容記住。第七十二頁(yè),共七十九頁(yè),2022年,8月28日73例1:給定程序中,函數(shù)fun的功能是:計(jì)算x所指數(shù)組中N個(gè)數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),平均值通過形參返回主函數(shù),將小于平均值且最接近平均值的數(shù)作為函數(shù)值返回,在主函數(shù)中輸出。例如,有10個(gè)正數(shù):4630324061745154826,平均值為:30.500000主函數(shù)中輸出:m=30請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdlib.h>#include<stdio.h>#defineN10doublefun(doublex[],double*av){inti,j;doubled,s;s=0;for(i=0;i<N;i++)s=s+x[i];/**********found**********/__1__=s/N;d=32767;for(i=0;i<N;i++)if(x[i]<*av&&*av-x[i]<=d){/**********found**********/d=*av-x[i];j=__2__;}/**********found**********/return__3__;}main(){inti;doublex[N]={46,30,32,40,6,17,45,15,48,26};doubleav,m;for(i=0;i<N;i++)printf("%4.0f",x[i]);printf("\n");m=fun(x,&av);printf("\nTheaverageis:%f\n",av);printf("m=%5.0f",m);printf("\n");}1:*av2.i3.a[j]第七十三頁(yè),共七十九頁(yè),2022年,8月28日74例2:給定程序中,函數(shù)fun的功能是將參數(shù)給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本文件中,再用字符串方式從此文本文件中逐個(gè)讀入,并調(diào)用庫(kù)函數(shù)atoi和atof將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點(diǎn)數(shù),然后將其顯示在屏幕上。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<stdlib.h>voidfun(char*s,inta,doublef){/**********found**********/__1__fp;charstr[100],str1[100],str2[100];inta1;doublef1;fp=fopen("file1.txt","w");fprintf(fp,"%s%d%f\n",s,a,f);/**********found**********/__2__;fp=fopen("file1.txt","r");/**********found**********/fscanf(__3__,"%s%s%s",str,str1,str2);fclose(fp);a1=atoi(str1);f1=atof(str2);printf("\nTheresult:\n\n%s%d%f\n",str,a1,f1);}main(){chara[10]="Hello!";intb=12345;doublec=98.76;fun(a,b,c);}1.FILE*2.fclose(fp)3.fp第七十四頁(yè),共七十九頁(yè),2022年,8月28日75例3:給定程序中,函數(shù)fun的功能是:有N×N矩陣,將矩陣的外圍元素順時(shí)針旋轉(zhuǎn)。操作順序是:首先將第一行元素的值存入臨時(shí)數(shù)組r,然后使第一列成為第一行,最后一行成為第一列,最后一列成為最后一行,臨時(shí)數(shù)組中的元素成為最后一列。例如,若N=3,有下列矩陣:123741456計(jì)算結(jié)果為852789963請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#defineN4voidfun(int(*t)[N]){intj,r[N];for(j=0;j<N;j++)r[j]=t[0][j];for(j=0;j<N;j++)/**********found**********/t[0][N-j-1]=t[j][___1___];for(j=0;j<N;j++)t[j][0]=t[N-1][j];/**********found**********/for(j=N-1;j>=0;___2___)t[N-1][N-1-j]=t[j][N-1];for(j=N-1;j>=0;j--)/**********found**********/t[j][N-1]=r[___3___];}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;printf("\nTheoriginalarray:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%2d",t[i][j]);printf("\n");}fun(t);printf("\nTheresultis:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%2d",t[i][j]);printf("\n");}}1.02.j--3.j第七十五頁(yè),共七十九頁(yè),2022年,8月28日76#include<stdio.h>#include<string.h>#include<stdlib.h>#include<ctype.h>char*fun(char*s){inti,j,k,n;char*p,*t;n=strlen(s)+1t=(char*)malloc(n*sizeof(char));p=(char*)malloc(n*sizeof(char));j=0,k=0;for(i=0;i<n;i++){if(isdigit)(s[i])){/**********found*********/p[
]=s[i];j++;else{t[k]=s[i];k++;}}/****
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《加互聯(lián)網(wǎng)技術(shù)》課件
- 2021年各省市九年級(jí)物理試卷合集
- 左室電極靶靜脈的選擇技巧-課件幻燈
- 2024年淮安楚州區(qū)仁濟(jì)醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 2024年淮南新華醫(yī)療集團(tuán)第二礦工醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 2024年07月河南焦作中旅校園招考筆試歷年參考題庫(kù)附帶答案詳解
- 2024年海原縣中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 2024年海南骨科醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 高中信息技術(shù)必修說(shuō)課稿-4.2.1 表格數(shù)據(jù)的處理6-教科版
- 2024年海南牙科醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 區(qū)塊鏈技術(shù)與應(yīng)用學(xué)習(xí)通課后章節(jié)答案期末考試題庫(kù)2023年
- 2023學(xué)年度廣東省廣州市天河區(qū)九年級(jí)(上)期末化學(xué)試卷(附詳解)
- 拍賣行業(yè)務(wù)管理制度拍賣行管理制度
- 焊接工序首件檢驗(yàn)記錄表
- 七年級(jí)上學(xué)期期末考試歷史試卷及答案(人教版)
- 飲品創(chuàng)業(yè)項(xiàng)目計(jì)劃書
- 外國(guó)文學(xué)史期末考試題庫(kù)(含答案)
- GB 18384-2020電動(dòng)汽車安全要求
- FZ/T 52003-1993丙綸短纖維
- 索拉燃?xì)廨啓C(jī)Titan130介紹
- 某銀行操作風(fēng)險(xiǎn)管理講義
評(píng)論
0/150
提交評(píng)論