




已閱讀5頁(yè),還剩257頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
上機(jī)試題的歸納總結(jié)一般情況下,錯(cuò)誤主要分為兩大類:(1) 語(yǔ)法錯(cuò)誤。對(duì)于這種錯(cuò)誤,用編譯器很容易解決。所以,改錯(cuò)題的第一不是先編譯,解決這類語(yǔ)法錯(cuò)誤。下面總結(jié)了二級(jí)C語(yǔ)言上機(jī)改錯(cuò)題中常見(jiàn)的語(yǔ)法錯(cuò)誤:1 丟失分號(hào),分號(hào)誤寫為逗號(hào)或分號(hào)的位置不對(duì)(尤其是在while )。2 關(guān)鍵字拼寫錯(cuò)誤,如本來(lái)小寫的寫成了大寫(數(shù)字1和 字母L, l ;字母O,o和數(shù)字0)。3 語(yǔ)句格式錯(cuò)誤,例如for 語(yǔ)句中的多寫或者少寫分號(hào)。4 表達(dá)式申明錯(cuò)誤,例如:少了(),或類型錯(cuò)誤。5 函數(shù)形參類型說(shuō)明錯(cuò)誤或調(diào)用錯(cuò)誤,例如多了或少了*。6 函數(shù)類型說(shuō)明錯(cuò)誤,與main ()函數(shù)中不一致(關(guān)鍵看函數(shù)返回值與申明類型是否一致即可)。7 運(yùn)算符書寫錯(cuò)誤,例如:/寫成了。(2) 邏輯錯(cuò)誤,或者叫語(yǔ)義錯(cuò)誤,這和實(shí)現(xiàn)程序功能緊密相關(guān),一般不能用編譯器發(fā)現(xiàn)。對(duì)于邏輯錯(cuò)誤可以按下列步驟進(jìn)行查找;1 先讀試題,看清題目的功能要求。2 通讀程序,看懂程序中算法的實(shí)現(xiàn)方法。3 細(xì)看程序,發(fā)現(xiàn)常見(jiàn)錯(cuò)誤點(diǎn)。(常見(jiàn)錯(cuò)誤:1.變量初值錯(cuò)誤2循環(huán)次數(shù)不對(duì)3下標(biāo)越界4運(yùn)算類型不匹配。一 . 字符處理a 字符ASCII碼值的應(yīng)用 如1-3 表示第一套的第三題編程 排序(1-2 3-3 10-2 25-2 26-3 34-1 ) 比較字符串大小 ( 25-2 1-2 20-2 62-3 97-1 ) 大小寫轉(zhuǎn)換( 1-1 17-3 20-2 39-1 50-2 50-3 54-1 54-2 62-2 ) 刪除刪除指定ASCII的字符或指定下標(biāo)條件(6-2 30-2 36-1 51-1 68-1 98-3 85-2 86-3b 字符(串)查找及刪除指定字符(24-1 30-2 37-2 38-2 42-1 52-3 53-3 56-2 56-3 57-3 63-3 66 -1 72-3 )c 字符統(tǒng)計(jì)(8-1 9-1 17-1 18-1 69-2)d 字符串逆置 (24-1 48-1 68-2 )e 回文字符串 (40-1 63-1 )f 數(shù)字字符與長(zhǎng)整數(shù)間的轉(zhuǎn)換 (3- 1 15-1 21-1 21-2 45-3 )g 字符串長(zhǎng)度比較 (15-3 46-3h 字符串移動(dòng) ( 7-1 35-2 14-2 20- 3 59-3i 字符串連接和插入 (7-1 11-1 20-1 24-2 48-2 64-2 69-3)j 進(jìn)制轉(zhuǎn)換 (29-1 99-2k 統(tǒng)計(jì)連續(xù)指定字符 ( 36-1 37-1 12-2l 含*處理的字符串 ( 64-3 73-3 79-3 86-3 87-3 89-1 95-3 m 后序字母處理 (52-2 53-1 4 數(shù)組處理a. 數(shù)組元素排序 ( 34-2 13-2 57-2 61-1 65-1 70-1 71-1)b. 求數(shù)組元素的最大值、最小值或平均值 (2-3 8-2 8-3 11-2 11-3 12-2 15-2 22-1 23-1 28-1 31-3 51-2 54-3 58-1 89-3 )a) 求二維數(shù)組的最大值、最小值或平均值計(jì)算 ( 2-3 6-1 7-3 18-3 22-1 51-2 61-3 84-1 91-1c. 二維和一維之間的轉(zhuǎn)換 (60-3d. 移動(dòng)數(shù)組元素 (55-1 58-3e. 把指定數(shù)組元素移動(dòng)到字符串或數(shù)組中 (4-1 12-2 14-1 76-3f. 元素分段存放g. 刪除指定數(shù)組元素 ( 12-1 32-2 44-1 h. 查找指定數(shù)組元素 (33-1)5 數(shù)學(xué)問(wèn)題a. 公式求值(一)(F(M,N)類 (2-2 4-2 16-2 70-12 92-3 93-1 94-2 95-2 96-3 98-2 99-2b. 公式求值(二)(F(N)=G(F(N-1)類 )(3-2 5-3 22-2 65-2 71-2 97-2 97-3 100-2c. 多項(xiàng)式求值d. 素?cái)?shù)問(wèn)題 (9-2 10-3 22-3 25-3 38-1 43-3 52-1 66-2 68-3 96-1e. 求方程的解 ( 2-1 5-1 f. 矩陣的問(wèn)題 (6-1 7-3 12-3 13-3 19-2 23-127-2 29-2 39-3 40-3 41-3 42-3 46-2 70-3 72-392-2g. 數(shù)按位分離與合并 (1-3 4-1 5-2 7-2 13-1 14-1 18-2 21 -2 43-2 53-2 64-3 69-1h. 四舍五入 (19-1 100-3i. 整除或同時(shí)有兩個(gè)整除 (4-3 6-2 9-3 16-3 17-2 60-1 99-3j. 奇偶判斷問(wèn)題 ( 25-1 32-3 33-3 4-2 47-1 48-14-3 6-3 9-3 16-3 17-26 結(jié)構(gòu)體和鏈表a. 求結(jié)構(gòu)體中元素最大值、最小值和平均值(14-3 19-3 21-3 23-3 7-3 91-1 65-3 67-3b. 排序 (21-3 23-2 c. 元素分段存放d. 查找元素 (23-3 24-3e. 鏈表的建立 ( 44-2 44-37 實(shí)際應(yīng)用a. 統(tǒng)計(jì)單詞的個(gè)數(shù) (16-1 b. 判斷某一年份是否為閏年 (35-1 c. 數(shù)據(jù)存儲(chǔ) ( 23-2 45-1 62-2 d. 求最大公約數(shù) (49-2 e. 求絕對(duì)值 (10-1f . 文件操作 ( 94-1 98-1 99-1g. 窮取法求值 (93-2 h. 利用折半查找算法查找或冒泡法對(duì)利用插入排序法對(duì) (58-281-2 一百套試題第一套 1.填空題請(qǐng)補(bǔ)充main函數(shù),該函數(shù)的功能是:把一個(gè)字符串中的所有小寫字母字符全部轉(zhuǎn)換成大寫字母字符,其他字符不變,結(jié)果保存原來(lái)的字符串中。例如:當(dāng)strN=“123 abcdef ABCDEF!”,結(jié)果輸出:“123 ABCDEF ABCDEF!”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語(yǔ)句。試題程序:#include#include#include#define N 80void main() int j; char strN= 123abcdef ABCDEF!; char *pf=str; clrscr(); printf(*original string *n); puts(str); 【1】; while(*(pf+j) if(*(pf+j)=a&*(pf+j)=z)*(pf+j)=【2】;j+;else【3】; printf(*new string*n); puts(str); system(pause);2. 改錯(cuò)題下列給定程序中,函數(shù)fun()的功能是逐個(gè)比較a,b兩個(gè)字符串對(duì)應(yīng)位置中的字符,把ASCII值小或相等的字符依次存放到c數(shù)組中,形成一個(gè)新的字符串。例如:a中的字符串為fshADfg,b中的字符串為sdAEdi,則c中的字符串應(yīng)為fdAADf。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include #include void fun(char *p,char *q,char *c) int k=0; while(*p|*q)/*found*/ if (*p=*q) ck=*q; else ck=*p; if(*p) p+; if(*q) q+ ;/*found*/ k+ main() char a10=fshADfg,b10=sdAEdi,c80=0; fun(a,b,c); printf(The string a:); puts(a); printf(The string b:); puts(b); printf(The result :); puts(c);3. 編程題請(qǐng)編寫函數(shù)fun,其功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)個(gè)位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和千位上。例如,當(dāng)a=16,b=35,調(diào)用該函數(shù)后,c=5361。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:#includevoid fun(int a ,int b,long *c)main() int a,b; long c; clrscr(); printf(Input a,b;); scanf(%d%d,&a, &b); fun(a,b,&c); printf(The result is:%ldn,c);1.填空題【1】j=0【2】*(pf+j)-32【3】j+【解析】填空1:變量j聲明時(shí)沒(méi)有初始化,而后面程序用到j(luò),所以在這里對(duì)j初始化為0。填空2:將小寫字母轉(zhuǎn)換為對(duì)應(yīng)的大寫字母的方法是,小寫字母的ASCII碼減去32,得到對(duì)應(yīng)的大寫字母的ASCII碼。填空3:如果當(dāng)前字符不是小寫字母,則不做任何處理,使指針指向下一個(gè)字符,準(zhǔn)備進(jìn)行判斷。2. 改錯(cuò)題(1)錯(cuò)誤: if (*p=*q)(2)錯(cuò)誤:k+正確:k+;【解析】錯(cuò)誤1:依題意,把ASCII值小或相等的字符存放到c數(shù)組中,故if語(yǔ)句的關(guān)系運(yùn)算符應(yīng)為=。錯(cuò)誤2:C語(yǔ)言規(guī)定,每個(gè)語(yǔ)句要用分號(hào)結(jié)束。3. 編程題void fun(int a ,int b,long *c) *c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10; 【解析】語(yǔ)句*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;是將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)個(gè)位和十位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和千位上。注意/和%的用法。第二套1.填空題請(qǐng)補(bǔ)充main函數(shù),該函數(shù)的功能是求方程ax2+bx+c=0的兩個(gè)實(shí)數(shù)根。方程的系數(shù)a、b、c從鍵盤輸入,如果判別式(disc=b2-4ac)小于,則要求重新輸入a、b、c的值。例如,當(dāng)a=1,b=2,c=1時(shí),方程的兩個(gè)根分別是x1=-1.00, x2=-1.00。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語(yǔ)句。試題程序:#include math.h#include main() float a,b,c, disc,x1,x2; clrscr(); do printf(Input a,b,c:);scanf(%f,%f,%f,&a,&b,&c);disc=b*b-4*a*c;if(disc0)printf(disc=%fn Input again!n,disc); while(【1】); printf(*the result*n); x1=【2】; x2=【3】; printf(nx1=%6.2fnx2=%6.2fn,x1,x2); 2. 改錯(cuò)題下列給定程序中,函數(shù)fun()的功能是根據(jù)整型形參m,計(jì)算如下公式的值。y=1-1/(22)+1/(33)-1/(44)+(-1)(m+1)/(mm)例如:m中的值為5,則應(yīng)輸出0.838611。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include #include double fun(int m) double y=1.0;/*found*/ int j=1; int i; for(i=2; i=m; i+) j=-1*j;/*found*/ y+=1/(i * i); return(y);main() int n=5; clrscr(); printf(nThe result is %lfn ,fun(n);3. 編程題請(qǐng)編一個(gè)函數(shù)void fun(int ttMN, int ppN), tt指向一個(gè)M行N列的二維數(shù)組,求出二維數(shù)組每列中最大元素,并依次放入pp所指的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:#include #include #define M 3#define N 4void fun(int ttMN,int ppN)main() int tMN=68, 32, 54, 12,14, 24, 88, 58,42, 22, 44, 56; int pN,i,j,k; clrscr(); printf(The riginal data is:n); for(i=0;iM;i+) for(j=0;jN;j+) printf(%6d,tij); printf(n); fun(t,p); printf(nThe result is:n); for(k=0;kN;k+) printf(%4d,pk); printf(n);1.填空題【1】disc0【2】(-b+sqrt(disc)/(2*a)【3】(-b-sqrt(disc)/(2*a)【解析】填空1:題目要求當(dāng)判別式disc小于0時(shí),要重新輸入a、b、c的值,所以do-while循環(huán)的執(zhí)行條件是disc0。填空2:方程的一個(gè)實(shí)數(shù)根是:。填空3:方程的另一個(gè)實(shí)數(shù)根是:。2. 改錯(cuò)題(1)錯(cuò)誤:int j=1; 正確:double j=1.0;(2)錯(cuò)誤:y+=1/(i * i); 正確:y+=j/(i * i);【解析】錯(cuò)誤1:為了做后面的除法運(yùn)算,j要定義為實(shí)型數(shù),否則除得的結(jié)果將為整數(shù)。錯(cuò)誤2:題中公式是加減相間的運(yùn)算,通過(guò)j來(lái)實(shí)現(xiàn)。3. 編程題void fun(int ttMN,int ppN) int i,j,max; for(j=0;jN;j+) max=tt0j; /*假設(shè)各列中的第一個(gè)元素最大*/ for(i=0;imax) /*如果各列中的其他元素比最大值還大, 則將這個(gè)更大的元素看做當(dāng)前該列中最大的元素*/ max=ttij; ppj=max; /*將各列的最大值依次放入pp數(shù)組中*/ 【解析】本題中函數(shù)的功能是求出二維數(shù)組中每列的最大元素。首先,假設(shè)各列中的第一個(gè)元素最大,然后利用行標(biāo)值的移動(dòng)來(lái)依次取得各列中其他元素的值,并與假設(shè)的最大值進(jìn)行比較,如果遇到更大的,則把這個(gè)更大的元素看做當(dāng)前該列中最大的元素,繼續(xù)與該列中其他元素比較。第三套1.填空題請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把一個(gè)整數(shù)轉(zhuǎn)換成字符串,并倒序保存在字符數(shù)組str中。例如:當(dāng)n=13572468時(shí),str=“86427531”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫的若干表達(dá)式或語(yǔ)句。試題程序:#include#include#define N 80char strN;void fun(long int n) int i=0; while(【1】) stri=【2】;n/=10;i+; 【3】;main() long int n=13572468; clrscr(); printf(* the origial data *n); printf(n=%ld,n); fun(n); printf(n%s,str);2. 改錯(cuò)題下列給定程序中,函數(shù)fun的功能是按以下遞歸公式求函數(shù)值。例如:當(dāng)給n輸入5時(shí),函數(shù)值為240;當(dāng)給n輸入3時(shí),函數(shù)值為60。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include /*found*/fun(int n); int c;/*found*/ if(n=1) c=15; else c=fun(n-1)*2; return(c);main() int n; printf(Enter n:); scanf(%d,&n); printf(The result :%dnn,fun(n);3. 編程題請(qǐng)編寫函數(shù)fun(),對(duì)長(zhǎng)度為7個(gè)字符的字符串,除首、尾字符外,將其余5個(gè)字符按ASCII值碼升序排列。例如:原來(lái)的字符串為BdsihAd,則排序后輸出為BAdhisd。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:#include #include #include int fun(char *s, int num)main() char s10; clrscr(); printf(輸入7個(gè)字符的字符串:); gets(s); fun(s,7); printf(n%s,s);1.填空題【1】n0【2】n%10+0【3】stri= 0【解析】填空1:while循環(huán)的執(zhí)行條件是n0,當(dāng)n等于0時(shí),說(shuō)明已經(jīng)將整數(shù)的各位數(shù)字都轉(zhuǎn)換為數(shù)字字符并存入字符串中了。填空2:n對(duì)10求余,得到整數(shù)n的個(gè)位數(shù)字,在加上字符0的ASCII碼,得到對(duì)應(yīng)的數(shù)字字符,并存入字符串str中。填空3:將整數(shù)轉(zhuǎn)換為字符串并倒序存放入字符數(shù)組str中后,還要在str最后加上字符串結(jié)束標(biāo)記符0。2. 改錯(cuò)題(1)錯(cuò)誤:fun(int n); 正確:fun(int n)(2)錯(cuò)誤:if(n=1) 正確:if(n=1)【解析】錯(cuò)誤1:該行是函數(shù)的首部,不是一條語(yǔ)句,因此不能以分號(hào)結(jié)束。錯(cuò)誤2:if后面應(yīng)該緊跟一個(gè)條件判斷表達(dá)式,若寫成if(n=1),則說(shuō)明該表達(dá)式的值永遠(yuǎn)為真,也就是說(shuō)這個(gè)條件永遠(yuǎn)成立,沒(méi)有遞歸執(zhí)行。3. 編程題int fun(char *s, int num)char t; int i, j; for(i=1;inum-2;i+) /*下標(biāo)值從1開(kāi)始,用循環(huán)依次取得字符串中的字符*/ for(j=i+1;jsj) /*如果后面字符的ASCII碼值小于該字符的ASCII碼值*/ t=si; /*則交換這兩個(gè)字符*/ si=sj; sj=t; 【解析】本題考查利用循環(huán)來(lái)控制數(shù)組元素的操作,首尾元素除外,因此,數(shù)組的下標(biāo)值要從1開(kāi)始,用循環(huán)變量i來(lái)依次取得數(shù)組中的元素,用數(shù)組中的元素si和sj進(jìn)行比較,如果后一個(gè)元素的ASCII碼值小于前一個(gè)元素的ASCII碼值,則交換這兩個(gè)數(shù)組元素的值。第四套1填空題數(shù)組xxN保存著一組位數(shù)的無(wú)符號(hào)正整數(shù),其元素的個(gè)數(shù)通過(guò)變量num傳入函數(shù)fun()。請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:從數(shù)組xx中找出個(gè)位和百位的數(shù)字相等的所有無(wú)符號(hào)整數(shù),結(jié)果保存在數(shù)組yy中,其個(gè)數(shù)由函數(shù)fun()返回。例如:當(dāng)xx8=135,78,72,32,222,424,333,141,541時(shí),bb6=787,232,222,424,333,141。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語(yǔ)句。試題程序:#include#define N 1000int fun(int xx,int bb,int num) int i,n=0; int g,b; for(i=0;inum;i+) g=【1】;b=xxi/100;if(g=b)【2】; return【3】;main() int xx8=135,787,232,222,424,333,141,541; int yyN; int num=0,n=0,i=0; num=8; clrscr(); printf(*original data *n); for(i=0;inum;i+)printf(%u ,xxi); printf(nnn); n=fun(xx,yy,num); printf(nyy= ); for(i=0;in;i+)printf(%u ,yyi);2. 改錯(cuò)題下列給定程序中函數(shù)fun()的功能是計(jì)算1/n!的值。例如:給n輸入5,則輸出0.008333。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include #include /*found*/int fun(int n) double result =1.0; if(n=0) return 1.0; while(n1 & n 170)/*found*/ result *=n+ ; result=1/result; return result;main() int n; printf(Input N:); scanf(%d,&n); printf(n1/%d!=%lfn,n,fun(n);3. 編程題編寫函數(shù)fun(),它的功能是求n以內(nèi)(不包括n)同時(shí)能被5與11整除的所有自然數(shù)之和的平方根s,并作為函數(shù)值返回。例如:n為1000時(shí),函數(shù)值應(yīng)為s=96.979379。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:#include #include #include double fun(int n) main()clrscr();printf(s=%fn, fun(1000);1.填空題【1】xxi%10【2】bbn+=xxi【3】n【解析】填空1:變量b存放了三位數(shù)的百位數(shù)字,所以變量g應(yīng)該存放三位數(shù)的個(gè)位數(shù)字,將這個(gè)三位數(shù)對(duì)10求余,則得到這個(gè)數(shù)的個(gè)位數(shù)字。填空2:將個(gè)位數(shù)字與百位數(shù)字相等的整數(shù)存于數(shù)組bb中。填空3:變量n記錄了個(gè)位數(shù)字等于百位數(shù)字的整數(shù)的個(gè)數(shù),題目要求個(gè)數(shù)由函數(shù)fun()返回,所以應(yīng)返回n。2. 改錯(cuò)題(1)錯(cuò)誤:int fun(int n) 正確:double fun(int n)(2)錯(cuò)誤:result *=n+ ; 正確:result *=n- ;【解析】錯(cuò)誤1:函數(shù)的返回值為實(shí)型數(shù)據(jù),所以函數(shù)的返回類型應(yīng)為double。錯(cuò)誤2:根據(jù)階乘的概念,從n開(kāi)始,每遞減1的數(shù)相乘,直到1,因此此處n遞減,而不是遞增。3. 編程題double fun(int n)double s=0.0;int i;for(i=0; in;i+) /*從0n中找到既能被5整除同時(shí)又能被11整除的數(shù),并將這些數(shù)求和*/ if(i%5=0&i%11=0) s=s+i;s=sqrt(s); /*對(duì)s求平方根*/return s;【解析】本題的解題思路是逐個(gè)取得從0n之間的所有數(shù),對(duì)每次取得的數(shù)進(jìn)行條件判斷,條件是既能被5整除同時(shí)又能被11整除,注意:這兩個(gè)條件要求同時(shí)成立,因此用到了&運(yùn)算符。滿足條件,該數(shù)就被累加到s中去,求出所有符合條件的數(shù)后,用sqrt()函數(shù)(包含于頭文件中)對(duì)s求平方根。第五套1.填空題請(qǐng)補(bǔ)充main函數(shù),該函數(shù)的功能是求方程ax2+bx+c=0的根(方程的系數(shù)a,b,c從鍵盤輸入)。例如,當(dāng)a=1,b=2,c=1時(shí),方程的兩個(gè)根分別是:x1=-1.00,x2=-1.00。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在main函數(shù)的橫線上填入所編寫的若干表達(dá)式或語(yǔ)句。試題程序:#include#include#includemain() float a,b,c,disc,x1,x2,p,q; scanf(%f,%f,%f,&a,&b,&c); disc=b*b-4*a*c; clrscr(); printf(*the result *n); if(disc=0) x1=【1】;x2=(-b-sqrt(disc)/(2*a);printf(x1=%6.2f,x2=%6.2fn,x1,x2); else p=【2】;q=【3】;printf(x1=%6.2f+%6.2f in,p,q);printf(x2=%6.2f-%6.2f in,p,q); 2. 改錯(cuò)題下列給定程序中函數(shù)fun()的功能是計(jì)算正整數(shù)num的各位上的數(shù)字之平方和。例如:輸入352,則輸出應(yīng)該是38;若輸入328,則輸出應(yīng)該是77。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include #include long fun(long num) /*found*/ long k=1; do k+=(num%10)*(num%10); num/=10;/*found*/ while(num) return (k);main() long n; clrscr(); printf(Please enter a number:); scanf(%ld,&n); printf(n%ldn,fun(n);3. 編程題請(qǐng)編寫函數(shù)fun(),它的功能是求Fibonacci數(shù)列中小于t的最大的一個(gè)數(shù),結(jié)果由函數(shù)返回。其中Fibonacci數(shù)列F(n)的定義為F(0)0,F(xiàn)(1)1F(n)=F(n-1)+F(n-2)例如:t=1000時(shí) ,函數(shù)值為987。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:#include #include #include int fun(int t)main() int n; clrscr(); n=1000; printf(n=%d, f=%dn,n, fun(n);1.填空題【1】(-b+sqrt(disc)/(2*a)【2】-b/(2*a)【3】sqrt(fabs(disc)/(2*a)【解析】填空1:方程的根是:當(dāng)時(shí),;當(dāng)時(shí),。填空2:由輸出格式可知,。填空3:由輸出格式可知,。2. 改錯(cuò)題(1)錯(cuò)誤:long k=1; 正確:long k=0;(2)錯(cuò)誤:while(num) 正確:while(num);【解析】錯(cuò)誤1:k用來(lái)存放各位數(shù)字的平方和,初值應(yīng)為0。錯(cuò)誤2:do-while語(yǔ)句的語(yǔ)法,while()后加分號(hào)。3. 編程題int fun(int t) int a=1,b=1,c=0,i; /*a代表第n-2項(xiàng),b代表第n-1項(xiàng),c代表第n項(xiàng)*/ /*如果求得的數(shù)c比指定比較的數(shù)小,則計(jì)算下一個(gè)Fibonacci數(shù),對(duì)a,b重新置數(shù)*/do c=a+b; a=b; b=c; while (ct); /*如果求得的數(shù)c比指定比較的數(shù)大時(shí),退出循環(huán)*/ c=a; /*此時(shí)數(shù)c的前一個(gè)Fibonacci數(shù)為小于指定比較的數(shù)的最大的數(shù)*/ return c;【解析】根據(jù)所給數(shù)列定義不難發(fā)現(xiàn),該數(shù)列最終的結(jié)果是由兩個(gè)數(shù)列之和組成,所以可以在循環(huán)內(nèi)部始終把c看成是前兩項(xiàng)之和(即第n項(xiàng)),而a始終代表第n-2項(xiàng),b始終代表第n-1項(xiàng)(通過(guò)不斷地重新賦值來(lái)實(shí)現(xiàn))。應(yīng)注意,退出循環(huán)時(shí)得到的數(shù)c是大于指定比較的數(shù)的最小的數(shù),而它的前一個(gè)數(shù)就是小于指定比較的數(shù)的最大的數(shù)。第六套1填空題請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:計(jì)算維矩陣元素的方差,結(jié)果由函數(shù)返回。維數(shù)在主函數(shù)中輸入。例如:的計(jì)算結(jié)果是14.414求方差的公式為:其中注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語(yǔ)句。試題程序:#include#include#include#include#define N 20double fun(【1】,int n) int i,j; int k; double s=0.0; double f=0.0; double aver=0.0; double sd=0.0; for(i=0;in;i+)for(j=0;jn;j+)s+=aij; aver=【2】; for(i=0;in;i+)for(j=0;jn;j+)f+=(aij-aver)*(aij-aver); f/=(n*n); sd=【3】; return sd;main() int aNN; int n; int i,j; double s; clrscr(); printf(* Input the dimension of array N*n); scanf(%d,&n); printf(* The array *n); for(i=0;in;i+) for(j=0;jn;j+)aij=rand()%50;while(aij=0)aij=rand()%60;printf(%4d,aij);printf(nn); s=fun(a,n); printf(* THE RESULT *n); printf( %4.3fn,s);2. 改錯(cuò)題下列給定程序中,函數(shù)fun()的功能是將字符串s中位于偶數(shù)位置的字符或ASCII碼為奇數(shù)的字符放入字符串t中(規(guī)定第一個(gè)字符放在第0位中)。例如:字符串中的數(shù)據(jù)為ADFESHDI,則輸出應(yīng)當(dāng)是AFESDI。請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include #include #include #define N 80/*found*/void fun(char s, char t ) int i, j=0; for(i=0; istrlen(s);i+)/*found*/ if(i%2=0|si%2!=0) tj+=si ; tj=0;main() char sN, tN; clrscr(); printf(nPlease enter string s :); gets(s); fun(s,t); printf(nThe result is :%sn,t);3. 編程題請(qǐng)編寫一個(gè)函數(shù)fun(),它的功能是計(jì)算并輸出給定整數(shù)n的所有因子(不包括1與自身)的平方和(規(guī)定n的值不大于100)。例如:主函數(shù)從鍵盤給輸入n的值為56,則輸出為sum=1113。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:#include long fun(int n) main() int n; long sum; printf(Input n:); scanf(%d, &n); sum=fun(n); printf(sum=%ldn, sum);1.填空題【1】int aN【2】s/(n*n)【3】sqrt(f)【解析】填空1:由主函數(shù)main()中對(duì)函數(shù)fun()的調(diào)用格式,可以知道,函數(shù)fun()的第一個(gè)參數(shù)是NN的二維整型數(shù)組。填空2:平均值等于所有元素的累加和除以個(gè)數(shù)。填空3:根據(jù)公式,方差sd等于對(duì)變量f開(kāi)平方,這里注意對(duì)數(shù)學(xué)庫(kù)函數(shù)的調(diào)用。2. 改錯(cuò)題(1)錯(cuò)誤: void fun(char s, char t ) 正確:void fun(char *s, char t )(2)錯(cuò)誤: if(i%2=0|si%2!=0) 正確:if(i%2=0|si%2!=0)【解析】錯(cuò)誤1:由于本題中函數(shù)的功能是對(duì)字符串進(jìn)行處理,而不是對(duì)單個(gè)字符進(jìn)行處理,因此,函數(shù)的參數(shù)應(yīng)為字符串指針。錯(cuò)誤2:if語(yǔ)句中要用關(guān)系運(yùn)算符,而不是賦值運(yùn)算符。3. 編程題long fun(int n) int i; long s=0; for(i=2;i=n-1;i+) /*從2n-1中找n的所有因子*/ if(n%i=0) s+=i*i; /*將所有因子求平方加*/ return s; /*將平方和返回*/【解析】本題的解題思路是用n逐個(gè)去除以2到n-1之間的所有數(shù),如果n能被除盡,則把所得到的一個(gè)因子的平方累加到s中去。第七套1.填空題請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把從主函數(shù)中輸入的字符串str2倒置后接在字符串str1后面。例如:str1=“How do”,str2=“?od uoy”,結(jié)果輸出:“How do you do?”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語(yǔ)句。試題程序:#include
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 茶藝師企業(yè)內(nèi)訓(xùn)計(jì)劃
- 2025年醫(yī)療安全與風(fēng)險(xiǎn)管理培訓(xùn)計(jì)劃
- 2025年第二學(xué)期初中語(yǔ)文家校合作計(jì)劃
- 英語(yǔ)教學(xué)計(jì)劃與學(xué)生心理健康
- 七年級(jí)上歷史課后輔導(dǎo)計(jì)劃
- 2025網(wǎng)絡(luò)安全保密防護(hù)工作計(jì)劃
- 2025年心理健康與科技結(jié)合的探索計(jì)劃
- 部編語(yǔ)文四年級(jí)文化活動(dòng)計(jì)劃
- 九年級(jí)語(yǔ)文分層教學(xué)計(jì)劃探究
- 三年級(jí)信息技術(shù)課堂活動(dòng)設(shè)計(jì)計(jì)劃
- 2025國(guó)家開(kāi)放大學(xué)《人類發(fā)展與環(huán)境保護(hù)》形成性考核123答案+終結(jié)性考試答
- 數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告
- DB44-T 2458-2024 水庫(kù)土石壩除險(xiǎn)加固設(shè)計(jì)規(guī)范
- 2025年廣東省深圳市龍華區(qū)中考數(shù)學(xué)二模試卷
- 【8地 會(huì)考】2022-2024年安徽省初中(八年級(jí))中考初二會(huì)考地理試卷(3年真題)
- 超級(jí)蘆竹種植可行性報(bào)告
- 項(xiàng)目管理合同框架協(xié)議
- HY/T 0460.5-2024海岸帶生態(tài)系統(tǒng)現(xiàn)狀調(diào)查與評(píng)估技術(shù)導(dǎo)則第5部分:珊瑚礁
- 2025年中考?xì)v史押題模擬試卷(含答案)
- 《基于杜邦分析法的蔚來(lái)汽車財(cái)務(wù)報(bào)表分析》13000字(論文)
- 四川省綿陽(yáng)市2025屆高三下學(xué)期第三次診斷性測(cè)試數(shù)學(xué)試卷(含答案)
評(píng)論
0/150
提交評(píng)論