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

下載本文檔

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

文檔簡介

1、一、程序改錯 共137題 第1題 題號:15/*- 【程序改錯】-功能:根據(jù)整型形參m的值,計算如下公式的值。 1 1 1 t = 1- - - . - 2x2 3x3 mxm 例如:若m=5,則應輸出:0.536389-*/#include <stdio.h>double fun(int m) double y=1.0; int i; /*FOUND*/ for(i=2;i<m;i-) /*FOUND*/ y-=1/(i*i); /*FOUND*/ return m;main() int n=5; printf("nthe result is %lfn"

2、,fun(n);答案: 1). for(i=2;i<=m;i+) 或 for(i=2;m>=i;i+) 或 for(i=2;i<m+1;i+) 或 for(i=2;i<1+m;i+) 或 for(i=2;m+1>i;i+) 或 for(i=2;1+m>i;i+) 2). y-=1.0/(i*i); 或 y=y-1.0/(i*i); 或 y-=1.0/(float)(i*i); 或 y=y-1.0/(float)(i*i); 或 y=y-1.0/i/i; 或 y=y-1.0/(float)i/(float)i; 或 y=y-1/(double)(i*i); 或

3、 y-=1/(double)(i*i); 3). return y; 或 return (y); 或 return(y);第2題 題號:362/*- 【程序改錯】-功能:刪除字符串s中的所有空白字符(包括Tab字符、回車符及 換行符)。輸入字符串時用'#'結(jié)束輸入。-*/#include <string.h>#include <stdio.h>#include <ctype.h>fun ( char *p) int i,t; char c80; /*FOUND*/ for (i = 1,t = 0; pi ; i+) /*FOUND*/ if

4、(!isspace(p+i) ct+=pi; /*FOUND*/ ct="0" strcpy(p,c); main( ) char c,s80; int i=0; printf("input a string:"); c=getchar(); while(c!='#') si=c;i+;c=getchar(); si='0' fun(s); puts(s);答案: 1). for (i = 0,t = 0; pi ; i+) 2). if(!isspace(*(p+i) ct+=pi; 3). ct='0'

5、第3題 題號:251/*- 【程序改錯】-功能:用"起泡法"對連續(xù)輸入的十個字符排序后按從小到大的次序 輸出.-*/#include <stdio.h>#include <string.h>#define N 10sort(char strN) int i,j; char t; for(j=1;j<N;j+) /*FOUND*/ for(i=0;i<N-j;i-) /*FOUND*/ if(stri<stri+1) t=stri; stri=stri+1; stri+1=t; main( ) int i; char strN; fo

6、r(i=0;i<N;i+) /*FOUND*/ scanf("%c",stri); /*FOUND*/ sort(strN); for(i=0;i<N;i+) printf("%c",stri); printf("n");答案: 1). for(i=0;i<N-j;i+) 2). if(stri>stri+1) 或 if(stri+1<stri) 3). scanf("%c",&stri); 4). sort(str);第4題 題號:437/*- 【程序改錯】-功能:輸入字符序

7、列,字符序列以特殊字符“#”結(jié)束。程序從前 向后依次讀入字符,并翻譯出新的字符輸出。翻譯的規(guī)則 是:如果當前讀入的字符是數(shù)字符,如果該字符的面值為n, 則它的后一個字符(包括數(shù)字符)需重復輸出n+1次如果當前 讀入的字符不是數(shù)字符,則輸出該字符。輸出時,以上述一 次翻譯為一組,不同組間輸出用一個空白字符隔開。翻譯 直至當前讀入的字符為字符#,結(jié)束翻譯和輸出。-*/#include<stdio.h>void main() char ch,nch; int count; int k; printf("Enter string.n"); scanf("%c&

8、quot;,&ch); /*FOUND*/ while(ch='#') if(ch>='0'&&ch<='9') /*FOUND*/ count=ch-'0'-1; scanf("%c",&nch); for(k=0;k<count;k+) printf("%c",nch); else /*FOUND*/ printf("%f",ch); printf(" "); scanf("%c"

9、;,&ch); printf("#n");答案: 1). while(ch!='#') 2). count=ch-'0'+1; 3). printf("%c",ch);第5題 題號:390/*- 【程序改錯】-功能:輸入一個字符串,過濾此串,濾掉字母字符,并統(tǒng)計新生 成串中包含的字符個數(shù)。例如:輸入的字符串為ab234$df4,則輸出為: The new string is 234$4 There are 5 char in the new string.。-*/#include <stdio.h>#i

10、nclude <conio.h>#define N 80int fun(char *ptr) int i,j; /*FOUND*/ for(i=0,j=0;*(ptr+i)!="0"i+) /*FOUND*/ if(*(ptr+i)>'z'| *(ptr+i)<'a'|*(ptr+i)>'Z' | *(ptr+i)<'A') /*FOUND*/ (ptr+j)=(ptr+i); j+; *(ptr+j)='0' return(j);main() char st

11、rN; int s; printf("input a string:");gets(str); printf("The original string is :"); puts(str); s=fun(str); printf("The new string is :");puts(str); printf("There are %d char in the new string.",s);答案: 1). for(i=0,j=0;*(ptr+i)!='0'i+) 2). if( *(ptr+i)&g

12、t;'z' | *(ptr+i)<'a'&&*(ptr+i)>'Z' | *(ptr+i)<'A' ) 3). *(ptr+j)=*(ptr+i);第6題 題號:396/*- 【程序改錯】-功能:將整型數(shù)組中所有小于0的元素放到所有大于0的元素的前 面(要求只能掃描數(shù)組一次)。-*/#include<stdio.h>#define Max 100void fun(int a,int n) /*FOUND*/ int i=5;j=n-1,temp; while(i<j) while

13、(ai<0) i+; while(aj>=0) /*FOUND*/ j+; /*FOUND*/ if(i>j) temp=ai; ai=aj; aj=temp; void main() static a=1,-3,-1,3,2,4,-4,5,-5,-2,n=10,i; fun(a,n); for(i=0;i<10;i+) printf("%d ",ai);答案: 1). int i=0 , j=n-1 , temp ; 2). j-; 3). if(i<j)第7題 題號:5/*- 【程序改錯】-功能:求如下表達式: 1 1 1 S = 1 +

14、+ + . + 1+2 1+2+3 1+2+3+.+n -*/#include <stdio.h>main() int n; double fun(); printf("Please input a number:"); /*FOUND*/ print("%d",n) ; printf("%10.6fn",fun(n);/*FOUND*/fun(int n) int i,j,t; double s; s=0;/*FOUND*/ while(i=1;i<=n;i+); t=0; for(j=1;j<=i;j+)

15、t=t+j; /*FOUND*/ =s+1/t; return s;答案: 1). scanf("%d",&n); 2). double fun(int n) 3). for(i=1;i<=n;i+) 或 for(i=1;n>=i;i+) 或 for(i=1;i<n+1;i+) 或 for(i=1;n+1>i;i+) 4). s+=1.0/t; 或 s= s + 1.0 /(float)t; 或 s= s + 1.0 /t; 或 s+=1.0/(float)t; 或 s+=1.0/(double)t; 或 s= s + 1.0 /(doubl

16、e)t;第8題 題號:387/*- 【程序改錯】-功能:判斷字符ch是否與str所指串中的某個字符相同; 若相同, 什么也不做,若不同,則將其插在串的最后。-*/#include <conio.h>#include <stdio.h>#include <string.h>/*FOUND*/ void fun(char str, char ch ) while ( *str && *str != ch ) str+; /*FOUND*/ if ( *str = ch ) str 0 = ch; /*FOUND*/ str1 = '0&#

17、39; main( ) char s81, c ; printf( "nPlease enter a string:n" ); gets ( s ); printf ("n Please enter the character to search : " ); c = getchar(); fun(s, c) ; printf( "nThe result is %sn", s);答案: 1). void fun(char *str, char ch ) 2). if ( *str = '0' ) 3). str1 =

18、'0'第9題 題號:401/*- 【程序改錯】-功能:編寫函數(shù)fun計算下列分段函數(shù)的值: x*x+x x<0且x-3 f(x)= x*x+5x 0x<10且x2及x3 x*x+x-1 其它-*/#include <stdio.h>double fun(float x) /*FOUND*/ double y /*FOUND*/ if (x<0 |x!=-3.0) y=x*x+x; else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0) y=x*x+5*x;

19、else y=x*x+x-1; /*FOUND*/ return x;main() double f; float x; printf("input x="); scanf("%f",&x); f=fun(x); printf("x=%f,f(x)=%fn",x,f); 答案: 1). float y; 2). if (x<0 && x!=-3.0) 3). return y;第10題 題號:435/*- 【程序改錯】-功能:輸入n,計算s=1+1+2+1+2+3+1+2+3+4+.+1+2+3+4+.+

20、n-*/#include<stdio.h>void main() /*FOUND*/ int i,s;p,n; printf("Enter n:n"); /*FOUND*/ scanf("%d",n); /*FOUND*/ for(s=p=0,i=1;i<n;i+) s+=p+=i; printf("S= %dn",s);答案: 1). int i,s,p,n; 2). scanf("%d",&n); 3). for(s=p=0,i=1;i<=n;i+)第11題 題號:426/*-

21、【程序改錯】-功能:809*?=800*?+9*?+1 其中?代表的兩位數(shù),8*?的結(jié)果 為兩位數(shù),9*?的結(jié)果為3位數(shù)。求?代表的兩位數(shù),及809*? 后的結(jié)果。-*/#include <stdio.h>output(long b,long i) printf("n%ld=800*%ld+9*%ld+1n",b,i,i); printf("?代表的兩位數(shù): %d",i); printf("n809*?后的結(jié)果:%d",b); getch();main() /*FOUND*/ long int a;b;i; a=809;

22、/*FOUND*/ for(i=10;i<100,i+) /*FOUND*/ b=i/a+1; if(b>=1000&&b<=10000&&8*i<100&&9*i>=100) output(b,i); 答案: 1). long int a , b , i ; 2). for(i=10;i<100;i+) 或 for(i=10;i<=99;i+) 3). b= i*a + 1 ; 或 b= a*i + 1 ;第12題 題號:380/*- 【程序改錯】-功能:輸入兩個雙精度數(shù),函數(shù)返回它們的平方和的平方根值

23、。例如:輸入:22.936 和 14.121,輸出為:y = 26.934415。-*/#include <stdio.h>#include <conio.h>#include <math.h>/*FOUND*/ double fun (double *a, *b) double c; /*FOUND*/ c = sqr(a*a + b*b); /*FOUND*/ return *c; main ( ) double a, b, y; printf ( "Enter a, b : "); scanf ("%lf%lf"

24、, &a, &b ); y = fun (&a, &b); printf ("y = %f n", y );答案: 1). double fun (double *a, double *b) 2). c = sqrt(*a * *a + *b * *b); 3). return c;第13題 題號:416/*- 【程序改錯】-功能:利用遞歸函數(shù)調(diào)用方式,將所輸入的5個字符,以相反順序 打印出來。-*/#include<stdio.h>main() int i=5; void palin(int n); printf("4

25、0:"); palin(i); printf("n");void palin(n)int n; /*FOUND*/ int next; if(n<=1) /*FOUND*/ next!=getchar(); printf("n0:"); putchar(next); else next=getchar(); /*FOUND*/ palin(n); putchar(next); 答案: 1). char next; 2). next=getchar(); 3). palin(n-1);第14題 題號:257/*- 【程序改錯】-功能:編寫一

26、個函數(shù),該函數(shù)可以統(tǒng)計一個長度為3的字符串在另 一個字符串中出現(xiàn)的次數(shù)。例如:假定輸入的字符串為:asdasasdfgasdaszx67asdmklo,字符 串為:asd,則應輸出n=4。-*/#include<stdio.h>#include<string.h>#include<conio.h>int fun(char *str,char *substr) /*FOUND*/ unsigned int i,n=0 /*FOUND*/ for(i=0;i<=strlen(str);i+) if(stri=substr0)&&(stri+

27、1=substr1)&&(stri+2=substr2) /*FOUND*/ +i; return n;main() char str81,substr4; int n; printf("輸入主字符串: "); gets(str); printf("輸入子字符串: "); gets(substr); puts(str); puts(substr); n=fun(str,substr); printf("n=%dn",n);答案: 1). unsigned int i,n=0; 2). for(i=0;i<=str

28、len(str)-3;i+) 或 for(i=0;i<strlen(str)-2;i+) 3). n+; 或 n+=1; 或 n=n+1; 或 +n;第15題 題號:258/*- 【程序改錯】-功能:在鍵盤上輸入一個3行3列矩陣的各個元素的值(值為整數(shù)), 后輸出矩陣第一行與第三行元素之積,并在fun()函數(shù)中輸出。-*/#include <stdio.h>int fun(int a33) int i,j,sum; /*FOUND*/ sum=0; /*FOUND*/ for(i=0;i<3;i+) for(j=0;j<3;j+) /*FOUND*/ sum=*a

29、ij; return sum;main() int i,j,s,a33; for(i=0;i<3;i+) for(j=0;j<3;j+) scanf("%d",&aij); s=fun(a); printf("Sum=%dn",s);答案: 1). sum=1; 2). for(i=0;i<3;i+=2) 或 for(i=0;i<3;i=i+2) 或 for(i=0;i<3;i+,i+) 3). sum=sum*aij; 或 sum*=aij;第16題 題號:419/*- 【程序改錯】-功能:一個5位數(shù),判斷它是不是

30、回文數(shù)。即12321是回文數(shù),個 位與萬位相同,十位與千位相同。-*/#include<stdio.h>main( ) /*FOUND*/ long ge,shi,qian;wan,x; scanf("%ld",&x); /*FOUND*/ wan=x%10000; qian=x%10000/1000; shi=x%100/10; ge=x%10; /*FOUND*/ if (ge=wan|shi=qian) printf("this number is a huiwenn"); else printf("this numb

31、er is not a huiwenn");答案: 1). long ge,shi,qian,wan,x; 2). wan=x/10000; 3). if (ge=wan&&shi=qian) 或 if (shi=qian&&ge=wan)第17題 題號:442/*- 【程序改錯】-功能:寫一個函數(shù),求一個字符串的長度,在main函數(shù)中輸入字 符串,并輸出其長度。-*/#include <stdio.h>#include <conio.h>int length(p)char *p; int n; n=0; /*FOUND*/ w

32、hile(*p='0') n+; p+; return n;main() int len; /*FOUND*/ char *str20; printf("please input a string:n"); scanf("%s",str); /*FOUND*/ len=length(str); printf("the string has %d characters.",len);答案: 1). while(*p!='0') 或 while(*p) 或 while(*p!=0) 或 while(*p!=

33、NULL) 2). char str20; 3). len=length(str);第18題 題號:29/*- 【程序改錯】-功能:將字符串s中最后一次出現(xiàn)的子字符串t1替換成字符串t2, 所形成的新串放在w所指的數(shù)組中,在此處,要求t1和t2 所指字符串的長度相同。例如:當s所指字符串中的內(nèi)容為"abcdabfabc",t1中的內(nèi)容 為"ab",t2中的內(nèi)容為"99"時,結(jié)果w所指數(shù)組中的內(nèi)容 應為"abcdabf99c"。-*/#include <conio.h>#include <stdio

34、.h>#include <string.h>void fun (char *s, char *t1, char *t2 , char *w) char *p , *r, *a; strcpy( w, s ); /*FOUND*/ while ( w ) p = w; r = t1; while ( *r ) /*FOUND*/ if ( *r = *p ) r+; p+; else break; /*FOUND*/ if ( *r = '/0' ) a = w; w+; r = t2; while ( *r ) /*FOUND*/ a = *r; a+; r+

35、; main() char s100, t1100, t2100, w100; printf("nPlease enter string S:"); scanf("%s", s); printf("nPlease enter substring t1:"); scanf("%s", t1); printf("nPlease enter substring t2:"); scanf("%s", t2); if ( strlen(t1)=strlen(t2) ) fun( s,

36、t1, t2, w); printf("nThe result is : %sn", w); else printf("nError : strlen(t1) != strlen(t2)n");答案: 1). while (*w) 或 while (*w!=0) 或 while (*w!='0') 或 for (;*w;) 或 for (;*w!='0') 2). if ( *r = *p ) 3). if ( *r = '0' ) a = w; 或 if ( *r =0 ) a = w; 4). *a=*

37、r;第19題 題號:410/*- 【程序改錯】-功能:輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和 其它字符的個數(shù)。-*/#include <stdio.h>main() char c; int letters=0,space=0,digit=0,others=0; printf("please input some charactersn"); /*FOUND*/ while(c=getchar()='n') /*FOUND*/ if(c>='a'&&c<='z'&&am

38、p;c>='A'&&c<='Z') letters+; /*FOUND*/ else if(c=!' ') space+; else if(c>='0'&&c<='9') digit+; else others+; printf("all in all:char=%d space=%d digit=%d others=%dn",letters, space,digit,others);答案: 1). while(c=getchar()!=&

39、#39;n') 2). if( c>='a'&&c<='z' | c>='A'&&c<='Z' ) 或 if( c<='z'&&c>='a' | c>='A'&&c<='Z' ) 或 if( c <= 'z' && c >= 'a' | c >= 'A' && c<='Z' ) 3). else if(c=' ')第20題 題號:20/*- 【程序改錯】-功能:根據(jù)以下公式求值,并作為函數(shù)值返回。例如:給指定精度的變量eps輸入0.0005時,應當輸出Pi=3.140578。 1 1 2 1 2 3

溫馨提示

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

評論

0/150

提交評論