C語(yǔ)言程序改錯(cuò)題_第1頁(yè)
C語(yǔ)言程序改錯(cuò)題_第2頁(yè)
C語(yǔ)言程序改錯(cuò)題_第3頁(yè)
C語(yǔ)言程序改錯(cuò)題_第4頁(yè)
C語(yǔ)言程序改錯(cuò)題_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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)介

1、第 1 題 【程序改錯(cuò)】功能:先將在字符串 s 中的字符按逆序存放到 t 串中,然后把 s 中的 字符按正序連接到 t 串的后面。例如:當(dāng) s 中的字符串為:“ ABCD”E 時(shí),則 t 中的字符串應(yīng)為: “EDCBAABC”DE。*/#include #include #include void fun (char *s, char *t)/*FOUND*/int i;sl = strlen(s); for (i=0; isl; i+)/*FOUND*/ti = ssl-i; for (i=0; isl; i+)tsl+i = si;/*FOUND*/t2*sl = 0;main()char

2、 s100, t100;printf(nPlease enter string s:); scanf(%s, s); fun(s, t);printf(The result is: %sn, t); 答案:1) . int i,sl;2) . ti = ssl-i-1;或 t2*sl = 0;3) . t2*sl = 0;第 2 題 【程序改錯(cuò)】功能:求出以下分?jǐn)?shù)序列的前 n 項(xiàng)之和。和值通過(guò)函數(shù)值返回 main函數(shù)。2/1+3/2+5/3+8/5+13/8+21/13例如:若 n = 5 ,則應(yīng)輸出: 。*/#include #include /*FOUND*/ fun ( int n )i

3、nt a, b, c, k; double s;s = ; a = 2; b = 1;for ( k = 1; k = n; k+ )/*FOUND*/s = (double)a / b;c = a;a = a + b;b = c;/*FOUND*/return c;main( )int n = 5;printf( nThe value of function is: %lfn, fun ( n ) ); 答案:1) . double fun(int n)或 s += (double)a / b;或 s += a /(double)b;2) . s = s + (double)a / b;s=

4、s+a/(double)b;3). return s;第 3 題 【程序改錯(cuò)】功能:讀入一個(gè)整數(shù)m( 5 mc 20 ),函數(shù) getarr調(diào)用函數(shù)rnd獲得m個(gè)隨機(jī)整數(shù),函數(shù) sortpb將這m個(gè)隨機(jī)整數(shù)從小到大排序。例如:若輸入整數(shù) 7,則應(yīng)輸出: 3 10 17 28 32 36 47。*/#include #include sortpb ( int n, int *a )/*FOUND*/int i, j, p, tfor ( j = 0; j n-1 ; j+ ) p = j;for ( i = j + 1; i aj ) p = i; /*FOUND*/if ( p = j )t

5、= aj; aj = ap; ap = t;double rnd ( )static t = 29, c = 217, m = 1024, r = 0; r =( r*t + c )%m; return( ( double )r/m );getarr( int n, int *x ) int i;for( i = 1; i = n; i+, x+ ) *x = ( int )( 50*rnd() ); putarr( int n, int *z )int i;for( i = 1; i ai ) p = i;3) . if ( p != j )第4題 【程序改錯(cuò)】中滿足條件的功能:以下程序能求

6、出 1*1+2*2+n*n=1000最大的 n 。*/#include #include main()int n,s;/*FOUND*/s=n=0;/*FOUND*/while(s1000)+n;s+=n*n;/*FOUND*/printf(n=%dn,&n-1);答案:1) . s=n=0;2) . while(s=1000)3) . printf(n=%dn,n-1);第 5 題 【程序改錯(cuò)】7、10、12、0、3、 6、9、11、5、8,12、11、7、0、3、6、9、10、5、8。功能:求出 a 所指數(shù)組中最大數(shù)和次最大數(shù) ( 規(guī)定最大數(shù)和次最大 數(shù)不在 a0 和 a1 中) ,依次和

7、 a0 、a1 中的數(shù)對(duì)調(diào)。 例如:數(shù)組中原有的數(shù): 輸出的結(jié)果為:*/#include #include #define N 20void fun ( int * a, int n )int k,m1,m2,max1,max2,t;max1=max2= -32768; m1=m2=0; for ( k = 0; k max1 )max2 = max1; m2 = m1;max1 = ak; m1 = k;/*FOUND*/else if( akmax1 ) max2 = ak; m2 = k; /*FOUND*/t = a0;am1=a0;am1 = t;/*FOUND*/t = a1; a

8、m2=a1; am2 = t;main( )int bN=7,10,12,0,3,6,9,11,5,8, n=10, i;for ( i = 0; in; i+)printf(%d ,bi);printf(n);fun (b, n);for ( i=0; imax2 )2) . t = a0; a0=am1; am1 = t;3) . t = a1; a1=am2; am2 = t;第 6 題 【程序改錯(cuò)】功能:讀入一個(gè)整數(shù) k(2 k 10000),打印它的所有質(zhì)因子(即 所有為素?cái)?shù)的因子) 。2、3、5、7、11。例如:若輸入整數(shù): 2310,則應(yīng)輸出:請(qǐng)改正程序中的語(yǔ)法錯(cuò)誤,使程序能得出

9、正確的結(jié)果。*/#include #include /*FOUND*/isPrime(integer n ) int i, m; m = 1;for ( i = 2; i n; i+ )/*FOUND*/if ( n%i )m = 0;break;/*FOUND*/return n ;main( )int j, k;printf( nPlease enter an integer number between 2 and 10000: ); scanf( %d, &k );printf( nnThe prime factor(s) of %d is( are ):, k ); for( j =

10、 2; j = k; j+ )if(!( k%j)&( IsPrime(j) printf( n %4d, j ); printf(n);答案:1) . IsPrime(int n)2) . if(!(n%i)3) . return m ;第7 題 【程序改錯(cuò)】功能:為一維數(shù)組輸入 10 個(gè)整數(shù);將其中最小的數(shù)與第一個(gè)數(shù) 對(duì)換,將最大的數(shù)與最后一個(gè)數(shù)對(duì)換,輸出數(shù)組元素。*/#include main()int a10; void input(); void output(); void max_min(); input(a,10);max_min(a,10); output(a,10);voi

11、d input(int *arr,int n) int *p,i;p=arr;printf(please enter 10 integers:n); for(i=0;in;i+)/*FOUND*/scanf(%d,p);void max_min(int *arr,int n) int *min,*max,*p,t;min=max=arr;for(p=arr+1;parr+n;p+)/*FOUND*/if(*p*max)max=p;else if(*p*min) min=p;t=*arr;*arr=*min;*min=t;/*FOUND*/if(max=arr) max=min;t=*(arr+

12、n-1);*(arr+n-1)=*max;*max=t;void output(int *arr,int n) int *p,i;p=arr;printf(The changed array is:n); /*FOUND*/while(i=0;i*max)3) . if( max = arr )4) . for(i=0;in;i+)或 if(*max*p)for(i=0;i=p;)或 for(i=0;ni;i+) 或 for(i=0;n-1=i;i+)或 for(p=arr;parr+n;)或 for(p=arr;p=arr+n-1;)第 8 題 【程序改錯(cuò)】功能:求出在字符串中最后一次出現(xiàn)的

13、子字符串的地址,通過(guò)函 數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;若未 找到,則函數(shù)值為 NULL。例如:當(dāng)字符串中的內(nèi)容為: abcdabfabcdx , t 中的內(nèi)容為: ab 時(shí),輸出結(jié)果應(yīng)是: abcdx 。當(dāng)字符串中的內(nèi)容為: abcdabfabcdx, t 中的內(nèi)容為: abd 時(shí),則程序輸出未找到信息: not found! 。*/#include #include #include char * fun (char *s, char *t ) char *p , *r, *a;/*FOUND*/a = NULL;while ( *s )p = s;r = t;while (

14、 *r )/*FOUND*/if ( r = p )r+;p+; elsebreak;/*FOUND*/if ( *r =0 ) a = s;s+;return a ;main()char s100, t100, *p;printf(nPlease enter string S :); scanf(%s, s ); printf(nPlease enter substring t :); scanf(%s, t );p = fun( s, t ); if ( p )printf(nThe result is : %sn, p);elseprintf(nNot found !n ); 答案:1)

15、 . a = NULL;2) . if ( *r = *p )3). if ( *r = 0 ) a = s;第 9 題 【程序改錯(cuò)】功能:從 m 個(gè)學(xué)生的成績(jī)中統(tǒng)計(jì)出高于和等于平均分的學(xué)生人數(shù), 此人數(shù)由函數(shù)值返回。平均分通過(guò)形參傳回,輸入學(xué)生成 績(jī)時(shí),用 -1 結(jié)束輸入,由程序自動(dòng)統(tǒng)計(jì)學(xué)生人數(shù)。例如:若輸入 8 名學(xué)生的成績(jī),輸入形式如下:60 72 98 88 64 -1結(jié)果為:The number of students :4Ave =*/#include #include #define N 20 int fun ( float *s, int n, float *aver ) fl

16、oat av, t ; int count , i;count = 0; t=;for ( i = 0; i n; i+ ) t += s i ; av = t / n; printf( ave =%fn,av );for ( i = 0; i n; i+ )/*FOUND*/if ( s i 0 )sm = a;m+;scanf ( %f, &a );printf( nThe number of students : %dn , fun ( s, m, &aver );printf( Ave = %6.2fn,aver ); 答案:1) . if ( s i = av ) count+;2)

17、 . *aver = av;3) . return count;第 10 題 【程序改錯(cuò)】功能:例如:根據(jù)以下公式求n給指定精度的變量值,并作為函數(shù)值返回。 eps 輸入時(shí),應(yīng)當(dāng)輸出 Pi= 。7t+ x x + x x x +*/#include double fun(double eps) double s,t; int n=1;s=;t=1;/*FOUND*/ while(teps) (teps) 或 while (epst)2). t=t*n/(2*n+1); t=n/*n+*t; 或 t=*n/*n+*t;3). return 2 * s ; return(s*2);或 while(

18、eps=eps) 或 t=*n/(2*n+1)*t;或 return (2*s);或 while(t=eps) 或 while(eps=t) 或 while (eps=t) 或 t=n/(2*n+*t;或 t=n/*n+1)*t;或 while或 return(2*s);或 return (s*2);第 11 題 【程序改錯(cuò)】功能:實(shí)現(xiàn)兩個(gè)字符串的連接。例如:輸入 dfdfqe 和 12345 時(shí),則輸出 dfdfqe12345.*/#include main()char s180,s280;void scat(char s1,char s2); gets(s1);gets(s2); scat

19、(s1,s2);puts(s1);void scat (char s1,char s2) int i=0,j=0;/*FOUND*/while(s1i= =0)i+;/*FOUND*/while(s2j= =0)/*FOUND*/s2j=s1i;i+;j+;/*FOUND*/s2j=0; 答案:1) . while( s1i != 0 )2) . while( s2j != 0 )3) . s1i=s2j;或 while(s1i)或 while(s2j)或 while( s1i != 0 ) 或 while( s2j != 0 )4). s1i=0;或 *(s1+i)=0;或 s1i=0;第

20、12 題 【程序改錯(cuò)】功能:求二分之一的圓面積,函數(shù)通過(guò)形參得到圓的半徑,函數(shù)返回二分之一的圓面積。例如:輸入圓的半徑值:輸出為: s = 。*/#include #include /*FOUND*/ double fun( r)double s;/*FOUND*/s=1/2* r * r;/*FOUND*/return r;main()float x;printf ( Enter x: );scanf ( %f, &x ); printf ( s = %fn , fun ( x ) ); 答案:1). float fun(float r)或 double fun(float r)或 double fun(double r)2) . s=2*

溫馨提示

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

評(píng)論

0/150

提交評(píng)論