




已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)等級(jí)考試二級(jí)C上機(jī)考試專題機(jī)試部分:機(jī)試就要親自編程,考核閱讀程序、編寫程序的實(shí)踐能力。題型分為:程序填空30分、程序改錯(cuò)30分、編寫程序40分,3大題共100分。主要是熟悉C程序設(shè)計(jì)的方法和步驟、掌握C語言語法規(guī)則,掌握程序設(shè)計(jì)的控制結(jié)構(gòu)及其流程的執(zhí)行走向,掌握數(shù)組、指針、函數(shù)、字符串、文件等相關(guān)內(nèi)容,實(shí)現(xiàn)程序?qū)嵺`。主要涉及的章節(jié)主要是函數(shù)、數(shù)組、文件、循環(huán)、字符串、指針、選擇等??疾閮?nèi)容主要包括:A. 數(shù)據(jù)統(tǒng)計(jì)與檢索,包括:累加、連乘、最大值、最小值、平均值等;B. 數(shù)組元素和字符串的使用;C. 數(shù)值計(jì)算包括矩陣計(jì)算、矩陣轉(zhuǎn)置;D. 字符處理,包括英文字母大小寫轉(zhuǎn)換和字符個(gè)數(shù)統(tǒng)計(jì)等。一、上機(jī)改錯(cuò)題的特點(diǎn)和注意事項(xiàng)1上機(jī)改錯(cuò)的試題中通常包含兩個(gè)(或三個(gè))錯(cuò)誤需要修改。 2試題中用*found*/來提示在下一行(或下面第二行)有錯(cuò)。 3錯(cuò)誤的性質(zhì)基本分語法錯(cuò)和邏輯錯(cuò)兩種,也有些試題要求把語句添加在下劃線處。 4特別要注意的是:只能在出錯(cuò)的行上進(jìn)行修改,不要改動(dòng)程序行的順序,更不要自己另編程序。二、上機(jī)改錯(cuò)測(cè)試時(shí),建議按以下步驟進(jìn)行1首先仔細(xì)審題,了解試題的要求,看清楚試題給出的輸入和輸出例示,以便檢驗(yàn)改錯(cuò)后程序運(yùn)行的結(jié)果是否正確。 2當(dāng)在V C+6.0環(huán)境下調(diào)出源程序后,審視/*found*/所在函數(shù),根據(jù)題義理解程序所采用的基本算法,做到心里有數(shù)。 3先按CTRL+F7對(duì)測(cè)試程序進(jìn)行檢查是否有語法錯(cuò)誤。當(dāng)編譯提示有語法錯(cuò)時(shí),可參考編譯提示來查找并改正錯(cuò)誤。 4當(dāng)不再出現(xiàn)語法錯(cuò)時(shí),使用CTRL+F5執(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ò)誤所在。例如,題目要求數(shù)據(jù)按由小到大排序,而結(jié)果數(shù)據(jù)是按由大到小進(jìn)行了排序,問題可能出現(xiàn)在條件判斷上。又如,輸出的字符串比預(yù)期的短,就有可能字符串的結(jié)束標(biāo)志放錯(cuò)了位置。再如做循環(huán)的時(shí)候 數(shù)組上限下限錯(cuò)誤了 ,基數(shù)是從0開始 而不是1開始的。修改程序中的邏輯錯(cuò)時(shí),要求考生認(rèn)真讀懂程序代碼。 6修改完成,得到正確結(jié)果后,一定不要忘記把修改后的程序存盤。三、上機(jī)編程題的特點(diǎn)和說明在二級(jí)C程序設(shè)計(jì)上機(jī)考試中,要求完成一個(gè)獨(dú)立的函數(shù)的編程。目前教育部考試中心已出版了上機(jī)考試習(xí)題集,這些有助于學(xué)習(xí)編程,但應(yīng)當(dāng)在學(xué)習(xí)過程中理解基本的算法,通過實(shí)際上機(jī)操作積累經(jīng)驗(yàn),才能掌握基本的編程能力。 四、進(jìn)行編程測(cè)試時(shí),建議按以下步驟進(jìn)行1首先仔細(xì)審題,了解試題的要求,記下試題給出的輸入和輸出例示,以便檢驗(yàn)在完成指定的函數(shù)后程序運(yùn)行的結(jié)果是否正確。 2當(dāng)在V C+6.0環(huán)境下調(diào)出源程序后,應(yīng)對(duì)照函數(shù)首部的形參,審視主函數(shù)中調(diào)用函數(shù)時(shí)的實(shí)參內(nèi)容,以便明確在函數(shù)中需要處理的數(shù)據(jù)對(duì)象。 3理解試題的要求,審視主函數(shù)中調(diào)用函數(shù)的方式,若在表達(dá)式中調(diào)用函數(shù)(如把函數(shù)值賦給某個(gè)對(duì)象),則要求有函數(shù)值返回,需注意函數(shù)的類型,并在函數(shù)中用return語句返回函數(shù)值;若主函數(shù)中僅用語句形式調(diào)用函數(shù),則需要通過形參間接地返回所得結(jié)果。 4選擇適當(dāng)?shù)乃惴ㄟM(jìn)行編程,輸入程序語句。不要忘記及時(shí)存盤! 5編譯程序,直到?jīng)]有語法錯(cuò)誤。 6調(diào)試程序,利用試題中給出的例示數(shù)據(jù)進(jìn)行輸入(若要求輸入的話),運(yùn)行程序,用例示的輸出數(shù)據(jù)檢驗(yàn)輸出結(jié)果,直到結(jié)果相同。以下是一些C編程時(shí)常犯的錯(cuò)誤,特別寫給各位同學(xué)以供參考。 1.書寫標(biāo)識(shí)符時(shí),忽略了大小寫字母的區(qū)別。 main() int a=5; printf(%d,A); 編譯程序把a(bǔ)和A認(rèn)為是兩個(gè)不同的變量名,而顯示出錯(cuò)信息。C認(rèn)為大寫字母和小寫字母是兩個(gè)不同的字符。習(xí)慣上,符號(hào)常量名用大寫,變量名用小寫表示,以增加可讀性。 2.忽略了變量的類型,進(jìn)行了不合法的運(yùn)算。 main() float a,b; printf(%d,a%b); %是求余運(yùn)算,得到a/b的整余數(shù)。整型變量a和b可以進(jìn)行求余運(yùn)算,而實(shí)型變量則不允許進(jìn)行“求余”運(yùn)算。 3.將字符常量與字符串常量混淆。 char c; c=a; 在這里就混淆了字符常量與字符串常量,字符常量是由一對(duì)單引號(hào)括起來的單個(gè)字符,字符串常量是一對(duì)雙引號(hào)括起來的字符序列。C規(guī)定以“”作字符串結(jié)束標(biāo)志,它是由系統(tǒng)自動(dòng)加上的,所以字符串“a”實(shí)際上包含兩個(gè)字符:a和,而把它賦給一個(gè)字符變量是不行的。 4.忽略了“=”與“=”的區(qū)別。 在許多高級(jí)語言中,用“=”符號(hào)作為關(guān)系運(yùn)算符“等于”。如在BASIC程序中可以寫 if (a=3) then 但C語言中,“=”是賦值運(yùn)算符,“=”是關(guān)系運(yùn)算符。如: if (a=3) a=b; 前者是進(jìn)行比較,a是否和3相等,后者表示如果a和3相等,把b值賦給a。由于習(xí)慣問題,初學(xué)者往往會(huì)犯這樣的錯(cuò)誤。 5.忘記加分號(hào)。 分號(hào)是C語句中不可缺少的一部分,語句末尾必須有分號(hào)。 a=1 b=2 編譯時(shí),編譯程序在“a=1”后面沒發(fā)現(xiàn)分號(hào),就把下一行“b=2”也作為上一行語句的一部分,這就會(huì)出現(xiàn)語法錯(cuò)誤。改錯(cuò)時(shí),有時(shí)在被指出有錯(cuò)的一行中未發(fā)現(xiàn)錯(cuò)誤,就需要看一下上一行是否漏掉了分號(hào)。 z=x+y; t=z/100; printf(%f,t); 對(duì)于復(fù)合語句來說,最后一個(gè)語句中最后的分號(hào)不能忽略不寫。6.多加分號(hào)。 對(duì)于一個(gè)復(fù)合語句,如: z=x+y; t=z/100; printf(%f,t); ; 復(fù)合語句的花括號(hào)后不應(yīng)再加分號(hào),否則將會(huì)畫蛇添足。 又如: if (a%3=0); I+; 本是如果3整除a,則I加1。但由于if (a%3=0)后多加了分號(hào),則if語句到此結(jié)束,程序?qū)?zhí)行I+語句,不論3是否整除a,I都將自動(dòng)加1。 再如: for (I=0;I5;I+); scanf(%d,&x); printf(%d,x); 本意是先后輸入5個(gè)數(shù),每輸入一個(gè)數(shù)后再將它輸出。由于for()后多加了一個(gè)分號(hào),使循環(huán)體變?yōu)榭照Z句,此時(shí)只能輸入一個(gè)數(shù)并輸出它。 7.輸入變量時(shí)忘記加地址運(yùn)算符“&”。 int a,b; scanf(%d%d,a,b); 這是不合法的。Scanf函數(shù)的作用是:按照a、b在內(nèi)存的地址將a、b的值存進(jìn)去?!?a”指a在內(nèi)存中的地址。 8.輸入數(shù)據(jù)的方式與要求不符。 scanf(%d%d,&a,&b); 輸入時(shí),不能用逗號(hào)作兩個(gè)數(shù)據(jù)間的分隔符,如下面輸入不合法: 3,4 輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間以一個(gè)或多個(gè)空格間隔,也可用回車鍵,跳格鍵tab。 scanf(%d,%d,&a,&b); C規(guī)定:如果在“格式控制”字符串中除了格式說明以外還有其它字符,則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的字符。下面輸入是合法的: 3,4 此時(shí)不用逗號(hào)而用空格或其它字符是不對(duì)的。 3 4 3:4 又如: scanf(a=%d,b=%d,&a,&b); 輸入應(yīng)如以下形式: a=3,b=4 9.輸入字符的格式與要求不一致。 在用“%c”格式輸入字符時(shí),“空格字符”和“轉(zhuǎn)義字符”都作為有效字符輸入。 scanf(%c%c%c,&c1,&c2,&c3); 如輸入a b c 字符“a”送給c1,字符“ ”送給c2,字符“b”送給c3,因?yàn)?c只要求讀入一個(gè)字符,后面不需要用空格作為兩個(gè)字符的間隔。 10.輸入輸出的數(shù)據(jù)類型與所用格式說明符不一致。 例如,a已定義為整型,b定義為實(shí)型 a=3;b=4.5; printf(%f%dn,a,b); 編譯時(shí)不給出出錯(cuò)信息,但運(yùn)行結(jié)果將與原意不符。這種錯(cuò)誤尤其需要注意。 11.輸入數(shù)據(jù)時(shí),企圖規(guī)定精度。 scanf(%7.2f,&a); 這樣做是不合法的,輸入數(shù)據(jù)時(shí)不能規(guī)定精度。 12.switch語句中漏寫break語句。 例如:根據(jù)考試成績(jī)的等級(jí)打印出百分制數(shù)段。 switch(grade) case A:printf(85100n); case B:printf(7084n); case C:printf(6069n); case D:printf(60n); default:printf(errorn); 由于漏寫了break語句,case只起標(biāo)號(hào)的作用,而不起判斷作用。因此,當(dāng)grade值為A時(shí),printf函數(shù)在執(zhí)行完第一個(gè)語句后接著執(zhí)行第二、三、四、五個(gè)printf函數(shù)語句。正確寫法應(yīng)在每個(gè)分支后再加上“break;”。例如 case A:printf(85100n);break; 13.在定義數(shù)組時(shí),將定義的“元素個(gè)數(shù)”誤認(rèn)為是可使的最大下標(biāo)值。 main() static int a10=1,2,3,4,5,6,7,8,9,10; printf(%d,a10); C語言規(guī)定:定義時(shí)用a10,表示a數(shù)組有10個(gè)元素。其下標(biāo)值由0開始,所以數(shù)組元素a10是不存在的。 14.在不應(yīng)加地址運(yùn)算符&的位置加了地址運(yùn)算符。 scanf(%s,&str); C語言編譯系統(tǒng)對(duì)數(shù)組名的處理是:數(shù)組名代表該數(shù)組的起始地址,且scanf函數(shù)中的輸入項(xiàng)是字符數(shù)組名,不必要再加地址符&。應(yīng)改為: scanf(%s,str);一、填空題:1. 給定程序通過定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲(chǔ)了一名學(xué)生的學(xué)號(hào)、姓名和3門課的成績(jī)。函數(shù)fun的功能是將該學(xué)生的各科成績(jī)都乘以一個(gè)系數(shù)a。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! #include typedefstruct intnum; charname9; floatscore3; STU; voidshow(STUtt) inti; printf(%d%s:,tt.num,); for(i=0;i3;i+) printf(%5.1f,tt.scorei); printf(n); /*found*/ voidmodify(_1_*ss,floata) inti; for(i=0;i_2_*=a; main() STUstd=1,Zhanghua,76.5,78.0,82.0; floata; printf(nTheoriginalnumberandnameandscores:n); show(std); printf(nInputanumber:);scanf(%f,&a); /*found*/ modify(_3_,a); printf(nAresultofmodifying:n); show(std); 參考答案:(1)STU(2)scorei(3)&std 2. 給定程序中,函數(shù)fun的功能是將形參給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本文件中,再用字符方式從此文本文件中逐個(gè)讀入并顯示在終端屏幕上。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確嶄綢果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! #include voidfun(char*s,inta,doublef) /*found*/ _1_fp; charch; fp=fopen(file1.txt,w); fprintf(fp,%s%d%fn,s,a,f); fclose(fp); fp=fopen(file1.txt,r); printf(nTheresult:nn); ch=fgetc(fp); /*found*/ while(!feof(_2_) /*found*/ putchar(_3_);ch=fgetc(fp); putchar(n); fclose(fp); main() chara10=Hello!;intb=12345; doublec=98.76; fun(a,b,c); 參考答案:(1)FILE *(2)fp(3)ch 3. 給定程序中,函數(shù)fun的功能是:將s所指字符串中的所有數(shù)字字符移到所有非數(shù)字字符之后,并保持?jǐn)?shù)字字符串和非數(shù)字字符串原有的先后次序。例如,形參s所指的字符串為:def35adh3kjsdf7。執(zhí)行結(jié)果為:defadhkjsdf3537。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! #include voidfun(char*s) inti,j=0,k=0;chart180,t280; for(i=0;si!=0;i+) if(si=0&si=9) /*found*/ t2j=si;_1_; elset1k+=si; t2j=0;t1k=0; /*found*/ for(i=0;ik; i+)_2_; /*found*/ for(i=0;i_3_;i+)sk+i=t2i; main() chars80=def35adh3kjsdf7; printf(nTheoriginalstringis:%sn,s); fun(s); printf(nTheresultis:%sn,s); 參考答案:(1)j+(2)si=t1i(3)j 4、給定程序中,函數(shù)fun的功能是:有NN矩陣,以主對(duì)角線為對(duì)稱線,對(duì)稱元素相加并將結(jié)果存放在左下三角元素中,右上三角元素置為0。例如,若N=3,有下列矩陣: 123 456 789計(jì)算結(jié)果為 100 650 10149 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! #include #defineN4 /*found*/ voidfun(int(*t)_1_) inti,j; for(i=1;iN; i+) for(j=0;jI; j+) /*found*/ _2_=tij+tji; /*found*/ _3_=0; main() inttN=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10,i,j; printf(nTheoriginalarray:n); for(i=0;iN; i+) for(j=0;jN;j+) printf(%d,tij); printf(n); fun(t); printf(nTheresultis:n); for(i=0;iN; i+) for(j=0;jN;j+) printf(%d,tij); printf(n); 參考答案:(1)N(2)tij(3)tji 二、程序改錯(cuò)題1、給定程序MODI1.C中函數(shù) fun 的功能是: 將十進(jìn)制正整數(shù)m轉(zhuǎn)換成k(2k9)進(jìn)制數(shù), 并按高位到低位順序輸出。 例如,若輸入8和2,則應(yīng)輸出1000(即十進(jìn)制數(shù)8轉(zhuǎn)換成二進(jìn)制表示是1000)。 請(qǐng)改正 fun 函數(shù)中的錯(cuò)誤,使它能得出正確的結(jié)果。 注意:不要改動(dòng) main 函數(shù)。不得增行或刪行,也不得更改程序的結(jié)構(gòu)! #include #include void fun( int m, int k ) int aa20, i; for( i = 0; m; i+ ) /*found*/ aai = m/k; m /= k; for( ; i; i- ) /*found*/ printf( %d, aa i ); main() int b, n; printf( nPlease enter a number and a base:n ); scanf( %d %d, &n, &b ); fun( n, b ); printf(n); 答案:(1)aai=m%k;(2)printf(%d,aai-1); 2、給定程序MODI1.C中函數(shù) fun 的功能是:用冒泡法對(duì)6個(gè)字符串按由小到大的順序進(jìn)行排序。 請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。 注意: 不要改動(dòng) main 函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)! #include #include #define MAXLINE 20 fun ( char *pstr6) int i, j ; char *p ; for (i = 0 ; i 5 ; i+ ) /*found*/ for (j = i + 1, j 0) p = *(pstr + i) ; /*found*/ *(pstr + i) = pstr + j ; *(pstr + j) = p ; main( ) int i ; char *pstr6, str6MAXLINE ; for(i = 0; i 6 ; i+) pstri = stri ; printf( nEnter 6 string(1 string at each line): n ) ; for(i = 0 ; i 6 ; i+) scanf(%s, pstri) ; fun(pstr) ; printf(The strings after sorting:n) ; for(i = 0 ; i 6 ; i+) printf(%sn, pstri) ; 答案:(1)for(j=i+1;j=0 & si=48 & *s=57) count+; s+; return count; 2、編寫一個(gè)函數(shù),從num個(gè)字符串中找出最長(zhǎng)的一個(gè)字符串,并通過形參指針max傳回該串地址。(注意: 主函數(shù)中用*作為結(jié)束輸入的標(biāo)志,函數(shù)fun中給出的語句僅供參考。) 注意:部分源程序在文件PROG1.C中。 請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。 #include #include void fun(char(*a)81,int num,char *max) /* 以下代碼僅供參考 */ int i,k=0,len, maxlen; /* k為a數(shù)組中最長(zhǎng)串所在元素的下標(biāo),初始為0,maxlen為其串長(zhǎng) */ maxlen=strlen(ak); for(i=1;ik
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 顱腦非腫瘤病變
- 二手房抵押合同協(xié)議書
- 銀行債權(quán)承攬協(xié)議書
- 駐場(chǎng)人員管理協(xié)議書
- 轉(zhuǎn)讓醬菜技術(shù)協(xié)議書
- 裝修委托代管協(xié)議書
- 項(xiàng)目聯(lián)合投資協(xié)議書
- 菏澤港口合作協(xié)議書
- 高齡健身免責(zé)協(xié)議書
- 云公益平臺(tái)捐贈(zèng)協(xié)議書
- 杭州市2025年中考作文《勇敢自信》寫作策略與范文
- 起重機(jī)司機(jī)(限橋式)Q2特種設(shè)備作業(yè)人員資格鑒定參考試題(附答案)
- 熱點(diǎn)主題作文寫作指導(dǎo):古樸與時(shí)尚(審題指導(dǎo)與例文)
- 河南省洛陽市2025屆九年級(jí)下學(xué)期中考一模英語試卷(原卷)
- 2025年入團(tuán)考試各科目試題及答案分析
- 電網(wǎng)工程設(shè)備材料信息參考價(jià)2025年第一季度
- 成都設(shè)計(jì)咨詢集團(tuán)有限公司2025年社會(huì)公開招聘(19人)筆試參考題庫(kù)附帶答案詳解
- 2025年上海市金融穩(wěn)定發(fā)展研究中心招聘考試模擬測(cè)試
- 河北開放大學(xué)2025年《醫(yī)用基礎(chǔ)化學(xué)#》形考任務(wù)4答案
- 遼寧省名校聯(lián)盟2025屆高三下學(xué)期高考模擬押題卷生物學(xué)(三)試題(有解析)
- 江蘇南京茉莉環(huán)境投資有限公司招聘筆試題庫(kù)2025
評(píng)論
0/150
提交評(píng)論