預(yù)測(cè)填空、改錯(cuò)、編程50套-解析版.doc_第1頁(yè)
預(yù)測(cè)填空、改錯(cuò)、編程50套-解析版.doc_第2頁(yè)
預(yù)測(cè)填空、改錯(cuò)、編程50套-解析版.doc_第3頁(yè)
預(yù)測(cè)填空、改錯(cuò)、編程50套-解析版.doc_第4頁(yè)
預(yù)測(cè)填空、改錯(cuò)、編程50套-解析版.doc_第5頁(yè)
已閱讀5頁(yè),還剩47頁(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)介

以下這50套題對(duì)應(yīng)到軟件里面分別是:84、69、50、23、42、74、57、5、88、9、28、71、67、85、20、17、56、35、47、14、70、32、100、72、15、52、38、40、19、65、21、37、82、16、55、68、66、87、63、43、89、39、36、79、73、25、46、77這48套題,最后101、102這2套是新增加的題。第59套: 給定程序中,函數(shù)fun的功能是:在34的矩陣中找出在行上最大、在列上最小的那個(gè)元素,若沒有符合條件的元素則輸出相應(yīng)信息。例如,有下列矩陣:1 2 13 4 7 8 10 6 3 5 9 7 程序執(zhí)行結(jié)果為:find: a22=9 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 給定源程序: #include #define M 3 #define N 4 void fun(int (*a)N) int i=0,j,find=0,rmax,c,k; while( (iM) & (!find) rmax=ai0; c=0; for(j=1; jN; j+) if(rmaxaij) /*found*/ rmax=aij; c= _1_ ; find=1; k=0; while(kM & find) /*found*/ if (k!=i & akc=rmax) find= _2_ ; k+; if(find) printf(find: a%d%d=%dn,i,c,aic); /*found*/ _3_ ; if(!find) printf(not found!n); main() int xMN,i,j; printf(Enter number for array:n); for(i=0; iM; i+) for(j=0; jN; j+) scanf(%d,&xij); printf(The array:n); for(i=0; iM; i+) for(j=0; jN; j+) printf(%3d,xij); printf(nn); fun(x); 解題思路: 本題是在矩陣中找出在行上最大、在列上最小的那個(gè)元素。 第一處:找出行上最大的數(shù),并該位置j(列)保存在c中,所以應(yīng)填:j。 第二處:使用while循環(huán)語(yǔ)句和控制變量find,如果該數(shù)不是列是最小數(shù),那么把find置0,所以應(yīng)填:0。 /* 新世紀(jì)教育 */ 第三處:i是while的控制變量,所以每做一次循環(huán),該數(shù)均要加1,所以應(yīng)填:i+。 *給定程序MODI1.C中函數(shù)fun的功能是:根據(jù)整型形參m的值,計(jì)算如下公式的值。 例如,若 m 中的值為: 5,則應(yīng)輸出: 0.536389。 請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。 注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 給定源程序: #include double fun ( int m ) double y = 1.0 ; int i ; /*found*/ for(i = 2 ; i m ; i+) /*found*/ y -= 1 /(i * i) ; return( y ) ; main( ) int n = 5 ; printf( nThe result is %lfn, fun ( n ) ) ; 解題思路: 第一處:使用for循環(huán)計(jì)算公式,必須計(jì)算到m,所以應(yīng)改為for(i=2; i=m; i+)。 第二處:在除法運(yùn)算中,如果除數(shù)和被除數(shù)都是整數(shù),所么所除結(jié)果也是整數(shù),因此應(yīng)改為y-=1./(i*i)。 *m個(gè)人的成績(jī)存放在score數(shù)組中,請(qǐng)編寫函數(shù)fun,它的功能是:將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為:10、20、30、40、50、60、70、80、90時(shí),函數(shù)返回的人數(shù)應(yīng)該是4, below中的數(shù)據(jù)應(yīng)為: 10、20、30、40。注意: 部分源程序在文件PROG1.C文件中。 請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入 你編寫的若干語(yǔ)句。 給定源程序: #include #include int fun(int score, int m, int below) main( ) int i, n, below9 ; int score9 = 10, 20, 30, 40, 50, 60, 70, 80, 90 ; n = fun(score, 9, below) ; printf( nBelow the average score are: ) ; for (i = 0 ; i n ; i+) printf(%d , belowi) ; NONO() ; 解題思路: 本題是計(jì)算平均成績(jī),再把低于平均成績(jī)的分?jǐn)?shù)存入依次數(shù)組below中。 參考答案: int fun(int score, int m, int below) float av=0.0 ; int i, j=0 ; for(i=0; im; i+) av += scorei ; av /= m; for(i=0; iscorei) belowj+=scorei; return j; 第99套: 函數(shù)fun的功能是:將形參a所指數(shù)組中的前半部分元素中的值和后半部分元素中的值對(duì)換。形參n中存放數(shù)組中數(shù)據(jù)的個(gè)數(shù),若n為奇數(shù),則中間的元素不動(dòng)。 例如:若a所指數(shù)組中的數(shù)據(jù)依次為:1、2、3、4、5、6、7、8、9,則調(diào)換后為:6、7、8、9、5、1、2、3、4。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 給定源程序: #include #define N 9 void fun(int a, int n) int i, t, p; /*found*/ p = (n%2=0)?n/2:n/2+_1_; for (i=0; in/2; i+) t=ai; /*found*/ ai = ap+_2_; /*found*/ _3_ = t; main() int bN=1,2,3,4,5,6,7,8,9, i; printf(nThe original data :n); for (i=0; iN; i+) printf(%4d , bi); printf(n); fun(b, N); printf(nThe data after moving :n); for (i=0; iN; i+) printf(%4d , bi); printf(n); 解題思路: 第一處:如果n是奇數(shù),則中間的元素不動(dòng),所以應(yīng)填:1。 第二處:使用for循環(huán)語(yǔ)句來(lái)交換數(shù)組元素的值,所以應(yīng)填:i。 第三處:使用中間變量t來(lái)交換的,所以應(yīng)填:t。 * 給定程序MODI1.C中函數(shù)fun的功能是:把主函數(shù)中輸入的3個(gè)數(shù),最大的放在a中,最小的放在c中,中間的放在b中。例如,輸入的數(shù)為:55 12 34, 輸出結(jié)果應(yīng)當(dāng)是:a=55.0 , b=34.0 , c=12.0。 請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。 注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。 給定源程序: #include void fun(float *a,float *b,float *c) /*found*/ float *k; if( *a*c ) k=*c; *c=*a; *a=k; if( *b*c ) k=*b; *b=*c; *c=k; main() float a,b,c; printf(Input a b c: ); scanf(%f%f%f,&a,&b,&c); printf(a = %4.1f, b = %4.1f, c = %4.1fnn,a,b,c); fun(&a,&b,&c); printf(a = %4.1f, b = %4.1f, c = %4.1fnn,a,b,c); 解題思路: 第一處:在函數(shù)fun體中,k是一個(gè)浮點(diǎn)型變量,所以應(yīng)改為:float k;。 第二處:三個(gè)數(shù)比較大小,第1個(gè)條件是第1個(gè)比第2個(gè)小,則交換。第3個(gè)條件是第2個(gè)比第3個(gè)小,則也交換。第2個(gè)條件是應(yīng)該第1和第3個(gè)小,則交換就符合題意了,所以應(yīng)改為:if(*a*c)。 * 學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請(qǐng)編寫函數(shù)fun,它的功能是:把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,注意:分?jǐn)?shù)最高的學(xué)生可能不止一個(gè),函數(shù)返回分?jǐn)?shù)最高的學(xué)生的人數(shù)。注意: 部分源程序在文件PROG1.C中。 請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入 你編寫的若干語(yǔ)句。 給定源程序: #include #define N 16 typedef struct char num10; int s; STREC; int fun( STREC *a, STREC *b ) main() STREC sN=GA05,85,GA03,76,GA02,69,GA04,85, TAB TAB GA01,91,GA07,72,GA08,64,GA06,87, TAB TAB GA015,85,GA013,91,GA012,64,GA014,91, TAB TAB GA011,77,GA017,64,GA018,64,GA016,72; STREC hN; int i,n;FILE *out ; n=fun( s,h ); printf(The %d highest score :n,n); for(i=0;in; i+) printf(%s %4dn,hi.num,hi.s); printf(n); out = fopen(c:testout.dat,w) ; fprintf(out, %dn,n); for(i=0;in; i+) fprintf(out, %4dn,hi.s); fclose(out); 解題思路: 本題是找出最高成績(jī),再把N名學(xué)生的成績(jī)等于最高成績(jī)的記錄存入b所指的數(shù)組中。具體操作請(qǐng)看答案程序中的說(shuō)明。/* 新世紀(jì)教育 */ 參考答案: int fun( STREC *a, STREC *b ) int i, max = a0.s, n=0; for(i = 1; i N; i+) if(max ai.s) max = ai.s ; /* 找出最高成績(jī) */ for(i = 0; i N; i+) if(max=ai.s) bn+ = ai ; /* 找相等的最高成績(jī)并存入數(shù)組b中 */ return n; /* 返回符合條件的人數(shù) */ 第44套: 函數(shù)fun的功能是進(jìn)行數(shù)字字符轉(zhuǎn)換。若形參ch中是數(shù)字字符09, 則0轉(zhuǎn)換成9,1轉(zhuǎn)換成8,2轉(zhuǎn)換成7,9轉(zhuǎn)換成0;若是其它字符則保持不變;并將轉(zhuǎn)換后的結(jié)果作為函數(shù)值返回。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 給定源程序: #include /*found*/ _1_ fun(char ch) /*found*/ if (ch=0 & _2_) /*found*/ return 9- (ch-_3_); return ch ; main() char c1, c2; printf(nThe result :n); c1=2; c2 = fun(c1); printf(c1=%c c2=%cn, c1, c2); c1=8; c2 = fun(c1); printf(c1=%c c2=%cn, c1, c2); c1=a; c2 = fun(c1); printf(c1=%c c2=%cn, c1, c2); 解題思路: 第一處:要求返回處理好的字符,所以應(yīng)填:char。 第二處:判斷該字符是否是數(shù)字,所以應(yīng)填:ch=9。 第三處:只要減去0的ASCII值,即可得到要求的結(jié)果,所以應(yīng)填:0。 * 給定程序MODI1.C中函數(shù)fun的功能是:將p所指字符串中的所有字符復(fù)制到b中,要求每復(fù)制三個(gè)字符之后插入一個(gè)空格。例如,在調(diào)用fun函數(shù)之前給a輸入字符串:ABCDEFGHIJK,調(diào)用函數(shù)之后,字符數(shù)組b中的內(nèi)容則為:ABC DEF GHI JK。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。 注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。 給定源程序: #include /* 新世紀(jì)教育 */ void fun(char *p, char *b) int i, k=0; while(*p) i=1; while( i=3 & *p ) /*found*/ bk=p; k+; p+; i+; if(*p) /*found*/ bk+= ; bk=0; main() char a80,b80; printf(Enter a string: ); gets(a); printf(The original string: ); puts(a); fun(a,b); printf(nThe string after insert space: ); puts(b); printf(nn); 解題思路: 第一處:把指針p所指的值賦值給bk中。 第二處:把空格字符賦值給bk+中,而不是一個(gè)空格的字符串。 * N名學(xué)生的成績(jī)已在主函數(shù)中放入一個(gè)帶頭節(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向鏈表的頭節(jié)點(diǎn)。請(qǐng)編寫函數(shù)fun,它的功能是:求出平均分,由函數(shù)值返回。例如,若學(xué)生的成績(jī)是:85,76,69,85,91,72,64,87, 則平均分應(yīng)當(dāng)是:78.625。 注意: 部分源程序在文件PROG1.C中。 請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。 給定源程序: #include #include #define N 8 struct slist double s; struct slist *next; ; typedef struct slist STREC; double fun( STREC *h ) STREC * creat( double *s) STREC *h,*p,*q; int i=0; h=p=(STREC*)malloc(sizeof(STREC);p-s=0; while(is=si; i+; p-next=q; p=q; p-next=0; return h; outlist( STREC *h) STREC *p; p=h-next; printf(head); do printf(-%4.1f,p-s);p=p-next; while(p!=0); printf(nn); main() double sN=85,76,69,85,91,72,64,87,ave; STREC *h; h=creat( s ); outlist(h); ave=fun( h ); printf(ave= %6.3fn,ave); NONO(); 解題思路: 本題是計(jì)算鏈表結(jié)構(gòu)中成績(jī)的平均分。具體操作請(qǐng)看答案程序中的說(shuō)明。 參考答案: #include #include /* 新世紀(jì)教育 */ double fun( STREC *h ) STREC *p=h-next; /* 由于頭結(jié)點(diǎn)中沒有存放數(shù)據(jù) */double av=0.0; /*對(duì)計(jì)算成績(jī)平均值的變量進(jìn)行初始化*/int n = 0 ; while(p!=NULL) /* 判斷鏈表是否結(jié)束 */ av = av + p-s ; /* 對(duì)成績(jī)進(jìn)行累加 */ p=p-next; /* 到下一個(gè)結(jié)點(diǎn)位置 */ n+; /* 人數(shù)加1 */ av /= n ; /* 計(jì)算成績(jī)平均值 */ return av ; /* 返回成績(jī)平均值 */ 第49套: 給定程序中,函數(shù)fun的功能是:將形參s所指字符串中所有ASCII碼值小于97的字符存入形參t所指字符數(shù)組中,形成一個(gè)新串,并統(tǒng)計(jì)出符合條件的字符個(gè)數(shù)作為函數(shù)值返回。例如,形參s所指的字符串為:Abc1x56*,程序執(zhí)行后t所指字符數(shù)組中的字符串應(yīng)為:A156*。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 給定源程序: #include int fun(char *s, char *t) int n=0; while(*s) if(*s 97) /*found*/ *(t+n)= _1_ ; n+; /*found*/ _2_ ; *(t+n)=0; /*found*/ return _3_ ; main() char s81,t81; int n; printf(nEnter a string:n); gets(s); n=fun(s,t); printf(nThere are %d letter which ASCII code is less than 97: %sn,n,t); 解題思路: 本題是根據(jù)條件組成新的字符串并統(tǒng)計(jì)出符合條件的個(gè)數(shù)n。 第一處:把符合條件的當(dāng)前字符存放到t字符串中,所以應(yīng)填:*s。 第二處:到字符串下一個(gè)位置,所以應(yīng)填:s+。 第三處:返回符合條件的字符個(gè)數(shù)n,所以應(yīng)填:n。 * 給定程序MODI1.C中函數(shù) fun 的功能是:由形參給定n個(gè)實(shí)數(shù),輸出平均值,并統(tǒng)計(jì)在平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。例如,n8時(shí),輸入:193.199,195.673,195.757,196.051,196.092,196.596, 196.579,196.763所得平均值為:195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為:5請(qǐng)改正程序中的錯(cuò)誤,使程序能輸出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 給定源程序: #include int fun(float x, int n) /*found*/ int j, c=0, float xa=0.0; for (j=0; jn; j+ ) xa += xj/n; printf(ave =%fn,xa); for (j=0; j xa) c+; return c; main ( ) float x100 = 193.199, 195.673, 195.757, 196.051, 196.092, 196.596, 196.579, 196.763; printf(%dn, fun (x, 8); 解題思路: 第一處:兩種類型變量定義之間應(yīng)該用分號(hào),所以應(yīng)改為:int j, c=0; float xa=0.;。/* 新世紀(jì)教育 */ 第二處:在C語(yǔ)言中,大于等于應(yīng)表達(dá)為=。 * 編寫函數(shù)fun,其功能是:根據(jù)以下公式求P的值,結(jié)果由函數(shù)值帶回。m與n為兩個(gè)正整數(shù)且要求m n。 m! P = n!(m-n)! 例如:m12,n8時(shí),運(yùn)行結(jié)果為495.000000。 注意: 部分源程序在文件PROG1.C文件中。 請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。 給定源程序: #include float fun(int m, int n) main() /* 主函數(shù) */ printf(P=%fn, fun (12,8); NONO(); 解題思路: 本題是計(jì)算階乘。 float fun(int m, int n)float p; p=1.0*jc(m)/jc(n)/jc(m-n) ; return p; long jc(int m) long s=1; int i ; for(i=1;i=m;i+) s=s*i ; return s; 第48套: 給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值,計(jì)算出這些數(shù)值的累加和作為函數(shù)值返回。例如,形參s所指的字符串為:abs5def126jkm8,程序執(zhí)行后的輸出結(jié)果為:22。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。 /* 新世紀(jì)教育 */ 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 給定源程序: #include #include #include int fun(char *s) int sum=0; while(*s) /*found*/ if( isdigit(*s) ) sum+= *s- _1_ ; /*found*/ _2_; /*found*/ return _3_ ; main() char s81; int n; printf(nEnter a string:nn); gets(s); n=fun(s); printf(nThe result is: %dnn,n); 解題思路: 本題是把字符串中是數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值并進(jìn)行累加。 第一處:0字符對(duì)應(yīng)的ASCII值是48,因此數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)數(shù)值時(shí)只要減去48,即是該數(shù)字字符對(duì)應(yīng)的數(shù)值,所以應(yīng)填:48。 第二處:到字符串下一個(gè)位置,所以應(yīng)填:s+。 第三處:返回累加和sum,所以應(yīng)填:sum。 * 給定程序MODI1.C中函數(shù)fun的功能是:計(jì)算小于形參k的最大的10個(gè)能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的值為500,則函數(shù)值為4622。請(qǐng)改正程序中的錯(cuò)誤,使程序能輸出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 給定源程序: #include int fun( int k ) int m=0, mc=0, j ; while (k = 2) & (mc 10) /*found*/ if (k%13 = 0) | (k%17 = 0) m = m+ k; mc+; k-; return m; /*found*/ _ main ( ) printf(%dn, fun (500); 解題思路: 第一處:判斷相等的條件是=,而不是=,所以只能在比較處再添加一個(gè)=。 第二處:經(jīng)過編譯可知,和沒有配對(duì),所以在橫線處加上。 * 編寫函數(shù)fun,它的功能是:求小于形參n同時(shí)能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。 例如若n為1000時(shí),程序輸出應(yīng)為:s = 153.909064。 注意: 部分源程序在文件PROG1.C文件中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入 你編寫的若干語(yǔ)句。 給定源程序: #include #include double fun( int n) main() /* 主函數(shù) */ printf(s =%fn, fun ( 1000) ); NONO(); 解題思路: 本題是求小于形參n同時(shí)能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。 參考答案: double fun( int n) double sum=0.0; int i; for(i=21; i=n; i+) if(i % 3=0) & (i % 7=0) sum+=i; return sqrt(sum) ; 第38套: 函數(shù)fun的功能是:把形參a所指數(shù)組中的奇數(shù)按原順序依次存放到a0、a1、a2、中,把偶數(shù)從數(shù)組中刪除,奇數(shù)個(gè)數(shù)通過函數(shù)值返回。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:9、1、4、2、3、6、5、8、7,刪除偶數(shù)后a所指數(shù)組中的數(shù)據(jù)為:9、1、3、5、7,返回值為5。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 給定源程序: #include #define N 9 int fun(int a, int n) int i,j; j = 0; for (i=0; in; i+) /*found*/ if (ai%2=_1_) /*found*/ aj = ai; _2_; /*found*/ return _3_; main() int bN=9,1,4,2,3,6,5,8,7, i, n; printf(nThe original data :n); for (i=0; iN; i+) printf(%4d , bi); printf(n); n = fun(b, N); printf(nThe number of odd : %d n, n); printf(nThe odd number :n); for (i=0; in; i+) printf(%4d , bi); printf(n); 解題思路: 第一處:判斷ai是否是奇數(shù),若是,則仍保留在原數(shù)組中aj,所以應(yīng)填:1。 第二處:數(shù)組a中的元素位置由j來(lái)控制,每增加一個(gè)元素,則j加1,所以應(yīng)填:j+。 第三處:返回刪除偶數(shù)后a所指數(shù)組中數(shù)據(jù)的元素j,所以應(yīng)填:j。 * 給定程序MODI1.C中函數(shù)fun的功能是:求出兩個(gè)非零正整數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若給num1和num2分別輸入49和21,則輸出的最大公約數(shù)為7;若給num1/* 新世紀(jì)教育 */ 和num2分別輸入27和81,則輸出的最大公約數(shù)為27。 請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。 注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。 給定源程序: #include int fun(int a,int b) int r,t; if(ab) /*found*/ t=a; b=a; a=t; r=a%b; while(r!=0) a=b; b=r; r=a%b; /*found*/ return(a); main() int num1, num2,a; printf(Input num1 num2: ); scanf(%d%d,&num1,&num2); printf(num1= %d num2= %dnn,num1,num2); a=fun(num1,num2); printf(The maximun common divisor is %dnn,a); 解題思路: 第一處:交換值的次序有問題,所以應(yīng)改為:t=a;a=b;b=t;。 第二處:返回值錯(cuò)誤,應(yīng)改為:return(b);。 * 假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,它的功能是:刪除字符串中所有的*號(hào)。在編寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為:*A*BC*DEF*G*,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:ABCDEFG。 注意: 部分源程序在文件PROG1.C中。 請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入 你編寫的若干語(yǔ)句。 給定源程序: #include void fun( char *a ) main() char s81; printf(Enter a string:n);gets(s); fun( s ); printf(The string after deleted:n);puts(s); NONO(); 解題思路: 本題是考察字符串的操作。 1. 利用循環(huán)掃描字符串中所有的字符是否是*,如果不是*,則把這些字符存放字符串a(chǎn)首地址開始的位置上。 2. 最后給字符串a(chǎn)加上結(jié)束符。 參考答案: void fun( char *a ) int j =0 ; char *p=a; while(*p) if(*p != *) aj+=*p ; p+ ; aj=0; 第95套: 給定程序中,函數(shù)fun的功能是:計(jì)算NN矩陣的主對(duì)角線元素和反向?qū)蔷€元素之和,并作為函數(shù)值返回。注意:要求先累加主對(duì)角線元素中的值,然后累加反向?qū)蔷€元素中的值。例如,若N=3,有下列矩陣: 1 2 3 4 5 6 7 8 9 fun函數(shù)首先累加1、5、9,然后累加3、5、7,函數(shù)的返回值為30。 請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。 注意:源程序存放在考生文件夾下的BLANK1.C中。 不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 給定源程序: #include #define N 4 fun(int tN, int n) int i, sum; /*found*/ _1_; for(i=0; in; i+) /*found*/ sum+=_2_ ; for(i=0; in; i+) /*found*/ sum+= tin-i-_3_ ; return sum; main() int tN=21,2,13,24,25,16,47,38,29,11,32,54,42,21,3,10,i,j; printf(nThe original data:n); for(i=0; iN; i+) for(j=0; jN; j+) printf(%4d,tij); printf(n); printf(The result is: %d,fun(t,N); 解題思路: 第一處:變量sum是用來(lái)存放主對(duì)角線元素和反向?qū)蔷€元素之和,要對(duì)其進(jìn)行初始化,所以應(yīng)填:sum=0。 第二處:對(duì)主對(duì)角線元素值累加,所以應(yīng)填:tii。 第三處:對(duì)反向?qū)蔷€元素值累加,所以應(yīng)填:tin-i-1。 * 例如,若給m輸入 -100,給n輸入90,則函數(shù)求得的一個(gè)根值為2.000。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。 給定源程序: #include #include double funx(double x) return(2*x*x*x-4*x*x+3*x-6); double fun( double m, double n) /*found*/ int r; r=(m+n)/2; /*found*/ while(fabs(n-m)0.001) if(funx(r)*funx(n)0.001)。 * 假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,它的功能是: 除了 字符串前導(dǎo)和尾部的*號(hào)之外,將串中其它*號(hào)全部刪除。形參h已指向字符串中第 一個(gè)字母,形參p已指向字符串中最后一個(gè)字母。在編寫函數(shù)時(shí),不得使用C語(yǔ)言 提供的字符串函數(shù)。 例如,字符串中的內(nèi)容為:*A*BC*DEF*G*,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:*ABCDEFG*。在編寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。 注意: 部分源程序在文件PROG1.C中。 請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入 你編寫的若干語(yǔ)句。 給定源程序: #include void fun( char *a, char *h,char *p ) main() char s81,*t, *f; printf(Enter a string:n);gets(s); t=f=s; while(*t)t+; t-; while(*t=*)t-; while(*f=*)f+; fun( s , f,t ); printf(The string after deleted:n);puts(s); NONO(); 解題思路: 本題是考察字符串的操作。 1. 把r指針左邊的字符仍存放字符串a(chǎn)首地址開始的位置上。 /* 新世紀(jì)教育 */ 2. 把r指針和p指針中間的字符進(jìn)行判斷,其字符是否是*,如果不是*,則把這些字符放到第1步操作字符串a(chǎn)的后面。 3. 把p指針右邊的字符放到第2步操作字符串a(chǎn)的后面。 4. 最后給字符串a(chǎn)加上結(jié)束符。 參考答案: void fun( char *a, char *h,char *p ) int j=0; char *q=a; while(*q & q h) aj+ = *q+ ; while(*h & *p & h p) if(*h != *) aj+ = *h ; h+; while(*p) aj+ = *p+ ; aj = 0 ; 第57套: 函數(shù)fun的功能是:把形參a所指數(shù)組中的最小值放在元素a0中,接著把

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論