程序改錯題new答案_第1頁
程序改錯題new答案_第2頁
程序改錯題new答案_第3頁
程序改錯題new答案_第4頁
程序改錯題new答案_第5頁
已閱讀5頁,還剩8頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1. 程序調試題1(X_2_1.C)調試要求:下列程序不能得到正確的結果,它包含2個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/*modified*/字樣的注釋),使其運行能得到正確的結果。將結果(包括X_2_1.C文件和X_2_1.EXE文件)保存到目錄C:KS中。功能說明:計算半徑為1n的圓的面積,僅打印超過 50 的圓面積。如輸入:6則輸出:r=4,square=50.265488r=5,square=78.539825r=6,square=113.097351帶錯誤原程序:#include <stdio.h>main() int r,n; float ar

2、ea; scanf("%d",&n); for (r=1,r<=n;r+) area=3.141593*r*r; if (area<50.0) continue; printf("r=%d,square=%dn",r,area); getch();答案#include <stdio.h>main() int r,n; float area; scanf("%d",&n); for (r=1;r<=n;r+)/*modified*/ area=3.141593*r*r; if (area&l

3、t;50.0) continue; printf("r=%d,square=%fn",r,area);/*modified*/ getch();2. 程序調試題2(X_2_2.C)調試要求:下列程序不能得到正確的結果,它包含3個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/*modified*/字樣的注釋),使其運行能得到正確的結果。將結果(包括X_2_2.C文件和X_2_2.EXE文件)保存到目錄C:KS中。功能說明:將輸入的十進制整數n通過函數DtoH轉換為十六進制數,并將轉換結果以字符串形式輸出。如輸入:79則輸出:4F又輸入:1234則輸出:4D2帶

4、錯誤原程序(見C:KSX_2_2.C):#include <stdio.h>int DtoH(int n,char *str) int i,d; for (i=0;n!=0,i+) d=n%16; if (d>=10) stri='0'+d; else stri='A'+d-10; n/=16; return i;main() int i,k,n; char str80; scanf("%d",&n); k=DtoH(n,str); for (i=k-1;i>=0;i-) printf("%c&quo

5、t;,str(i); getch();答案#include <stdio.h>int DtoH(int n,char *str) int i,d; for (i=0;n!=0;i+)/*modified*/ d=n%16; if (d<10)/*modified*/ stri='0'+d; else stri='A'+d-10; n/=16; return i;main() int i,k,n; char str80; scanf("%d",&n); k=DtoH(n,str); for (i=k-1;i>=0

6、;i-) printf("%c",stri);/*modified*/ getch();3. 程序調試題1(D_3_1.C)調試要求:下列程序不能得到正確的結果,請按題中的功能要求,調試并修改該程序(在所修改語句后加/*/字樣的注釋),使其運行能得到正確的結果。將結果(包括D_3_1.c文件和D_3_1.exe文件)保存到指定目錄中。功能說明:以下程序計算并輸出等差數列的累加和,數列的首項為a0,公差為d,項數為n。如輸入:-3 5 4則輸出:sumx=18例示說明:-3為首項,5為公差,4為項數,前4項之和為18原程序(見D_3_1.C):#include <std

7、io.h>int sumx( int a0, d, n )int i, k, s=0;k = a0;for ( i=0; i<n; i+ )s += k;k += d;return s;void main()int a0, d, n;scanf( "%d%d%d", &a0, &d, &n );printf( "sumx=%dn", sumx(a0,d,n) );答案#include <stdio.h>int sumx( int a0, int d, int n ) /*modified*/int i, k

8、, s=0;k = a0;for ( i=0; i<n; i+ ) s += k;k += d; /*modified*/return s;void main()int a0, d, n;scanf( "%d%d%d", &a0, &d, &n );printf( "sumx=%dn", sumx(a0,d,n) );4. 程序調試題1(E_3_1.c)調試要求:下列程序不能得到正確的結果,請按題中的功能要求,調試并修改該程序(在所修改語句后加/*modified*/字樣的注釋),使其運行能得到正確的結果。將結果(包括E_3

9、_1.c文件和E_3_1.exe文件)保存到指定目錄中。功能說明:統計一字符串中各個字母出現的次數,該字符串從鍵盤輸入,統計時不區分大小寫。對數字、空格及其他字符都不予統計。最后在屏幕上顯示統計結果。例如字符串:“abcdefgh23 ABCDEF abc”的統計結果與輸出格式為: a b c d e f g h i j k l m n o p q r s t u v w x y z 出現的次數為:;3 3 3 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #include <stdio.h> #include <string.h

10、> void main( ) int i, a26; char ch,str80; /*modify*/ gets(str); /* modify*/ for(i=0;i<26;i+) ai=0; i=0;while(stri+!=0) /* modify*/ ch=stri; ch=ch>=A&&ch<=Z ?ch+a-A:ch; if(a<=ch&&ch<=z) ach-a+; /* modify*/ for(i=0;i<26;i+) printf(“%2c”, a+i); /* 輸出26個字母 */ printf(

11、“出現的次數為:n”); for(i=0;i<26;i+) printf(“%2d”,ai); /* 輸出各字母出現次數 */ printf(“n”); 5. 程序調試題1調試要求:下列程序包含2個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/*/字樣的注釋),使其運行能得到正確的結果。將結果(包括B_2_1.C文件和B_2_1.EXE文件)保存到指定目錄中。功能說明:利用格里高利公式/4=1-1/3+1/5-1/7+.求前n.項的值。如輸入:5則輸出:pi=3.339683又輸入:10000則輸出:pi=3.141498帶錯誤原程序(見B_2_1.C):#include

12、 <stdio.h>main( ) float pi=0,n,i; int sign=1; scanf("%f",&n); /* modify*/ for (i=1;i<=n;i+) pi+=sign/(2*i-1); sign=-sign; pi=4*pi; printf("pi=%fn",pi); /* modify*/ getchar(); /*本句無錯;暫停程序,按任意鍵繼續 */ 6. 程序調試題2調試要求:下列程序包含3個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/*/字樣的注釋),使其運行能得到正

13、確的結果。將結果(包括B_2_2.C文件和B_2_2.EXE文件)保存到指定目錄中。功能說明:從鍵盤輸入一個非負十進制整數n(n<32768),轉化成二進制存入數組a,輸出二進制結果。如輸入:23則輸出:10111又輸入:1234則輸出:帶錯誤原程序(見B_2_2.C):#include <stdio.h>main() int a16,n,i; /* modify*/ scanf("%d",&n); for (i=0;n>0;i+) /* modify*/ ai=n%2; /* modify*/ n/=2; while(i>0) pri

14、ntf("%d",a-i); getchar(); /*本句無錯;暫停程序,按任意鍵繼續 */7.程序調試:調試要求:下列程序包含3個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/*/字樣的注釋),使其運行能得到正確的結果程序功能:輸入字符串,將其中所有的大寫字母轉為小寫字母,然后輸出。 #include <stdio.h>void str_to_upper( char s) int i; /* modify*/while ( si != '0' ) if ( si>='A' && si<

15、;='Z' ) si=si ( 'A' -'a'); /*modified*/i+;void main()char str80;gets( str );str_to_upper( str ); /* modify*/puts(str );8. 程序調試題3調試要求:下列程序包含3個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/*/字樣的注釋),使其運行能得到正確的結果。將結果(包括B_2_3.C文件和B_2_3.EXE文件)保存到指定目錄中。功能說明:程序從鍵盤輸入一行字符串,所有字符依次向右循環移動m個位置并輸出,移出的字符循環

16、到最左邊。如輸入:1234567893則輸出:789123456帶錯誤原程序(見B_2_3.C):#include <stdio.h>#include <string.h>void shift_s(char a,int n,int m) /*a數組的n個字符右移m個位置*/ int i,j,t; for(i=1;i<m;i+) for (j=n;j>0;j-) aj = aj+1; /*移位并復制*/ a0=an; an='0'main() char stra80; int i, n,m; gets(stra); n = strlen(str

17、a); scanf("%d",&m); shift_s(stra,n,m); /*函數調用參數*/ puts(*stra); getchar(); /*本句無錯;暫停程序,按任意鍵繼續 */答案#include <stdio.h>#include <string.h>void shift_s(char a,int n,int m) /*a數組的n個字符右移m個位置*/ int i,j,t; for(i=0;i<m;i+) /*modified*/ for (j=n;j>0;j-) aj = aj-1; /*modified*/ a

18、0=an; an='0'main() char stra80; int i, n,m; gets(stra); n = strlen(stra); scanf("%d",&m); shift_s(stra,n,m); /*函數調用參數*/ puts(stra); /*modified*/ getchar(); /*本句無錯;暫停程序,按任意鍵繼續 */9. 程序調試題1調試要求:下列程序包含2個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/*/字樣的注釋),使其運行能得到正確的結果。將結果(包括C_2_1.C文件和C_2_1.EXE文

19、件)保存到指定目錄中。功能說明:利用公式e = 1 + 1/1! + 1/2! + + 1/n! + 求前n項的e值。如輸入:4則輸出:2.708333又輸入:10則輸出:2.718282帶錯誤原程序(見C_2_1.C):#include <stdio.h>main() int n,i; float e,a; scan("%d",&n); e=a=1.0; for (i=1;i<=n;i+) a*=i; e+=1a; printf("%fn",e); getchar(); /* 本句沒錯,程序暫停,按任意鍵繼續 */答案#inc

20、lude <stdio.h>main() int n,i; float e,a; scanf("%d",&n); /*modified*/ e=a=1.0; for (i=1;i<=n;i+) a*=i; e+=1/a; /*modified*/ printf("%fn",e); getchar(); /* 本句沒錯,程序暫停,按任意鍵繼續 */10. 程序調試題2調試要求:下列程序包含3個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/*/字樣的注釋),使其運行能得到正確的結果。將結果(包括C_2_2.C文件和C

21、_2_2.EXE文件)保存到指定目錄中。功能說明:程序從鍵盤輸入一行16進制字符串(字母必須大寫),調用hexvalue函數轉換為10進制,并輸出轉換結果。如輸入:1A則輸出:26又輸入:1AF8則輸出:6904帶錯誤原程序(見C_2_2.C):#include <stdio.h>long hexvalue(char str) long data=0; int n,i; for (i=0;stri!='0',i+) if (stri>='0' && stri<='9') n=stri-'0'

22、 else if (stri>='A' | stri<='F') n=stri-'A'+10; else break; data=data*10+n; return data;main() char s80; scanf("%s",s); printf("%ld",hexvalue(s); getchar(); /* 本句沒錯,程序暫停,按任意鍵繼續 */答案#include <stdio.h>long hexvalue(char str) long data=0; int n,i;

23、 for (i=0;stri!='0'i+) /*modified*/ if (stri>='0' && stri<='9') n=stri-'0' else if (stri>='A' && stri<='F') /*modified*/ n=stri-'A'+10; else break; data=data*16+n; /*modified*/ return data;main() char s80; scanf(&quo

24、t;%s",s); printf("%ld",hexvalue(s); getchar(); /* 本句沒錯,程序暫停,按任意鍵繼續 */11. 程序調試題3調試要求:下列程序包含3個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/*/字樣的注釋),使其運行能得到正確的結果。將結果(包括C_2_3.C文件和C_2_3.EXE文件)保存到指定目錄中。功能說明:程序從鍵盤輸入一個整數n,將數組a的11個元素向左循環n次后輸出。如輸入:3則輸出:3 4 5 6 7 8 9 10 0 1 2帶錯誤原程序(見C_2_3.C):#include <stdi

25、o.h>main() int a10=0,1,2,3,4,5,6,7,8,9,10,n,i,j,p; scanf("%d",&n); for(i=1;i<n;i+) p=a0; j=0; while(j<10) aj=aj+1; j+; a10=p; for(i=0;i<=10;i+) printf("%d ",a(i); getchar(); /* 本句沒錯,程序暫停,按任意鍵繼續 */答案#include <stdio.h>main() int a11=0,1,2,3,4,5,6,7,8,9,10,i,j,

26、n,p; /*modified*/scanf("%d",&n); for(i=0;i<n;i+) /*modified*/ p=a0; j=0; while(j<10) aj=aj+1; j+; a10=p; for(i=0;i<=10;i+) printf("%d ",ai); /*modified*/ getchar(); /* 本句沒錯,程序暫停,按任意鍵繼續 */12. 程序調試題1調試要求:下列程序包含2個錯誤,請按題中的功能要求,調試并修改該程序(在所修改語句后加/*/字樣的注釋),使其運行能得到正確的結果。將結果(

27、包括D_2_1.C文件和D_2_1.EXE文件)保存到指定目錄中。功能說明:打印從11000 能同時被 3和 5 整除的前n個數。如輸入:3則輸出:15 30 45帶錯誤原程序(見C:KSD_2_1.C):#include <stdio.h>main( ) int k; scanf("%d",&n); for(k=1;k<=1000;k+) if(k%3=0&&k%5=0) print("%d ",k); n-; if(n=0) break; getchar(); /*本句沒錯,暫停程序,按任意鍵繼續 */答案#include <stdio.h>main( ) int k,n; /*modified*/ scanf("%d",&n); for(k=1;k<=1000;k+) if(k%3=0&&k%5=0) printf("%d ",k); /*modified*/ n-; if(n=0) break; getchar(); /*本句沒錯,暫停程序,按任意鍵繼續 */ 13. 程序調試題3調試要求:下列程序包含3個錯誤,請按題中的功能要求,調試

溫馨提示

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

評論

0/150

提交評論