C語言程序改錯題_第1頁
C語言程序改錯題_第2頁
C語言程序改錯題_第3頁
C語言程序改錯題_第4頁
C語言程序改錯題_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第 1 題 【程序改錯】功能:先將在字符串 s 中的字符按逆序存放到 t 串中,然后把 s 中的 字符按正序連接到 t 串的后面。例如:當(dāng) s 中的字符串為:“ABCDE 時,貝 y t 中的字符串應(yīng)為:“ EDCBAABCDE。*/#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;3). t2*sl = 0;第 2 題 【程序改錯】 功能:求出以下分數(shù)序列的前 n 項之和。和值通過函數(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 )或 t2*sl = 0;8.3916

3、67 。int a, b, c, k; double s; s = 0.0; 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)2). s = s + (double)a / b;s=s+a/(double)b;3). return s;第 3 題

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

5、= 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 題 【程序改錯】功能:以下程序能求出 1*1+2*2+. +n*n=1000最大的

6、n 。*/#include #include string.h 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 題 【程序改錯】功能:求出 a 所指數(shù)組中最大數(shù)和次最大數(shù) ( 規(guī)定最大數(shù)和次最大 數(shù)不在 a0 和a1 中) ,依次和 a0 、a1 中的數(shù)對調(diào)。 例如:數(shù)組中原有的數(shù): 7、10、12、0、3、 6、9、11、5、8,輸出

7、的結(jié)果為:*/#include #include #define N 20 void 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;am2=a1;am2 = t;main( )int b

8、N=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;7、10、12、0、3、 6、9、11、5、12、11、7、0、3、6、9、10、5、8。第 6 題 【程序改錯】功能:讀入一個整數(shù) k(2 k 10000),打印它的所有質(zhì)因子(即 所有為素數(shù)的因子) 。例如:若輸入整數(shù): 2310,則應(yīng)輸出: 2、3、5、7、1

9、1。 請改正程序中的語法錯誤,使程序能得出正確的結(jié)果。*/#include conio.h#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)

10、of %d is( are ):, k ); for( j = 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 題 【程序改錯】功能:為一維數(shù)組輸入 10 個整數(shù);將其中最小的數(shù)與第一個數(shù) 對換,將最大的數(shù)與最后一個數(shù)對換,輸出數(shù)組元素。*/#include main()int a10; void input(); void output(); void max_min(); input(a,10)

11、;max_min(a,10); output(a,10);void 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;/*FO

12、UND*/ if(max=arr) max=min; t=*(arr+n-1);*(arr+n-1)=*max;*max=t;第 8 題 【程序改錯】功能:求出在字符串中最后一次出現(xiàn)的子字符串的地址,通過函 數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;若未 找到,則函數(shù)值為 NULL。例如:當(dāng)字符串中的內(nèi)容為: abcdabfabcdx , t 中的內(nèi)容為: ab 時,輸出結(jié)果應(yīng)是: abcdx 。當(dāng)字符串中的內(nèi)容為: abcdabfabcdx, t 中的內(nèi)容為: abd 時,則程序輸出未找到信息: not found! 。*/#include #include #include char

13、* fun (char *s, char *t )char *p , *r, *a;/*FOUND*/a = NULL;while ( *s )p = s;r = t;while ( *r )/*FOUND*/ if ( r = p )void output(int *arr,int n)int *p,i;p=arr;printf(The changed arrayis:n);/*FOUND*/while(i=0;i*max)3). if( max = arr )4). for(i=0;in;i+)for(i=0;i=p;)或 scanf(%d,arri);或 scanf(%d,p+i);或

14、if(*maxi;i+) 或for(i=0;n-1=i;i+)或 for(p=arr;parr+n;)或 for(p=arr;p=arr+n-1;)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 entersubstring t :); scanf(%s, t ); p = fun( s, t );if ( p )printf(nThe resul

15、t is : %sn, p);elseprintf(nNot found !n );答案:1). a = NULL;2). if ( *r = *p )3). if ( *r = 0 ) a = s;第 9 題 【程序改錯】功能:從 m 個學(xué)生的成績中統(tǒng)計出高于和等于平均分的學(xué)生人數(shù), 此人數(shù)由函數(shù)值返回。平均分通過形參傳回,輸入學(xué)生成 績時,用 -1 結(jié)束輸入,由程序自動統(tǒng)計學(xué)生人數(shù)。例如:若輸入 8 名學(xué)生的成績,輸入形式如下:80.5 60 72 90.5 98 51.5 88 64 -1 結(jié)果為:The number of students :4Ave = 75.56。*/#inclu

16、de #include #define N 20 int fun ( float *s, int n, float*aver )float av, t ; int count , i;count = 0; t=0.0;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,

17、m, &aver ); printf( Ave= %6.2fn,aver );答案:1). if ( s i = av ) count+;2). *aver = av;3). return count;第 10 題 【程序改錯】并作為函數(shù)值返回。eps 輸入 0.0005 時,應(yīng)當(dāng)輸出 Pi=3.140578 。+ x x + x x x +3 5 7 9*/#include double fun(double eps)double s,t;int n=1;s=0.0;t=1;/*FOUND*/ while(t=eps)功能:例如:根據(jù)以下公式求 n 值,給指定精度的變量s+=t;/*

18、FOUND*/t=n/(2*n+1)*t;n+;/*FOUND*/ return s;第 11 題 【程序改錯】 功能:實現(xiàn)兩個字符串的連接。例如:輸入 dfdfqe 和 12345 時,則輸出 dfdfqe12345.*/#include main()char s180,s280;void scat(char s1,char s2);gets(s1);gets(s2);scat(s1,s2);puts(s1);void scat (char s1,char s2)int i=0,j=0;/*FOUND*/ while(s1i= =0)i+;/*FOUND*/while(s2j= =0)/*F

19、OUND*/ s2j=s1i;main()double x;scanf(%lf,&x);printf(neps=%lf,Pi=%lfnn,x,fun(x);答案:1). while(teps)(teps) 或 while (epst)2). t=t*n/(2*n+1);或 t=n/(2.0*n+1.0)*t;3). return 2 * s ;return(s*2);或 while(eps=eps) 或 while(eps=eps) 或 while (eps=t)或 t=1.0*n/(2*n+1)*t; 或 t=n/(2*n+1.0)*t;或 t=1.0*n/(2.0*n+1.0)*t

20、;或 return (2*s); 或 return(2*s);或t=n/(2.0*n+1)*t;或 return (s*2);i+;j+;/*FOUND*/s2j=0;答案:1). while( s1i != 0 )2). while( s2j != 0 )3). s1i=s2j;4). s1i=0;或while(s1i)或while(s2j)或*(s1+i)=0;或 s1i=0;第 12 題 【程序改錯】或 while( s1i !=0 ) 或 while( s2j !=0 )功能:求二分之一的圓面積,函數(shù)通過形參得到圓的半徑,返回二分之一的圓面積。例如:輸入圓的半徑值: 19.527 輸出為: s = 598.950017函數(shù)*/#include #include /*FOUND*/double fun( r)double s;/*FOUND*/ s=1/2*3.14159* r * r;/*FOUND*/ return r;main()float x;printf ( Enter x: );scanf ( %f, &x );printf ( s = %fn , fun( x ) );答案:1). float fun(float r)2). s=1.0/2*3.14159* r * r;3). retu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論