程序改错练习题
/*---------------------------------------------------- 【程序改错】第1题
------------------------------------------------------ 功能:输入一行字符,分别统计出其中英文字母、空格、数字
和其它字符的个数。
----------------------------------------------------*/ #include
char c;
int letters=0,space=0,digit=0,others=0; printf(\ /**********FOUND**********/ while((c=getchar())=='\\n') {
/**********FOUND**********/
if(c>='a'&&c<='z'&&c>='A'&&c<='Z') letters++;
/**********FOUND**********/ else if(c=!' ') space++;
else if(c>='0'&&c<='9') digit++; else
others++; }
printf(\others=%d\\n\ space,digit,others); }
答案:
=======(答案1)=======
while((c=getchar())!='\\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==' ')
/*---------------------------------------------------- 【程序改错】第2题
------------------------------------------------------ 功能:实现交换两个整数的值。
例如:给a和b分别输入3和6 ,输出为a=6 b=3
----------------------------------------------------*/ #include
/**********FOUND**********/ void fun (int a, b) {
int t;
/**********FOUND**********/
t=a;
/**********FOUND**********/ a=b;
/**********FOUND**********/ b=t; }
main() {
int a,b;
printf(\ fun(&a,&b);
printf(\}
答案:
=======(答案1)======= void fun (int *a,int *b) =========或========= fun (int *a,int *b) =======(答案2)======= t=*a;
=======(答案3)======= *a=*b;
=======(答案4)======= *b=t;
/*---------------------------------------------------- 【程序改错】第3题
------------------------------------------------------ 功能:在一个已按升序排列的数组中插入一个数,插入后,数 组元素仍按升序排列。
----------------------------------------------------*/ #include
int i,number,a[N]={1,2,4,6,8,9,12,15,149,156}; printf(\array:\\n\
/**********FOUND**********/ scanf(\
printf(\ for(i=0;i /**********FOUND**********/ for(i=N-1;i>=0;i--) if(number<=a[i]) /**********FOUND**********/ a[i]=a[i-1]; else { a[i+1]=number; /**********FOUND**********/ exit; } if(number printf(\ for(i=0;i printf(\ printf(\} 答案: =======(答案1)======= scanf(\=======(答案2)======= for(i=N-2;i>=0;i--) =========或========= for(i=N-2;0<=i;i--) =======(答案3)======= a[ i + 1 ]=a[i]; =======(答案4)======= break; /*---------------------------------------------------- 【程序改错】第4题 ------------------------------------------------------ 功能:读取7个数(1-50)的整数值,每读取一个值,程序打 印出该值个数的*。 ----------------------------------------------------*/ #include int i,a,n=1; /**********FOUND**********/ while(n<7) { do { scanf(\ } /**********FOUND**********/ while(a<1&&a>50); /**********FOUND**********/ for(i=0;i<=a;i++) printf(\ printf(\ n++; } } 答案: =======(答案1)======= while(n<=7) =========或========= while(n<8) =======(答案2)======= while(a<1||a>50); =========或========= while(a>50||a<1); =======(答案3)======= for(i=1;i<=a;i++) /*---------------------------------------------------- 【程序改错】第5题 ------------------------------------------------------ 功能:求1到10的阶乘的和。 ----------------------------------------------------*/ #include int i; float s=0; float fac(int n); /**********FOUND**********/ for(i=1;i<10;i++) /**********FOUND**********/ s=fac(i); printf(\} float fac(int n) { /**********FOUND**********/ int y=1; int i; for(i=1 ;i<=n;i++) y=y*i; /**********FOUND**********/ return; } 答案: =======(答案1)======= for(i=1;i<=10;i++) =========或========= for(i=1;10>=i;i++) =========或========= for(i=1;i<11;i++) =========或========= for(i=1;11>i;i++) =======(答案2)======= s= s + fac(i) ; =========或========= s+=fac(i); =========或========= s=fac(i)+s; =======(答案3)======= float y=1.0; =========或========= float y=1; =======(答案4)======= return y; =========或========= return(y); =========或========= return (y); /*---------------------------------------------------- 【程序改错】第6题 ------------------------------------------------------ 题目:下列给定程序中函数fun的功能是:用选择法对数组中的n个元素进行升序排列。 ----------------------------------------------------*/ #include void fun(int a[], int n) { int i, j, t, p; for (j = 0 ;j < n-1 ;j++) { /***********FOUND***********/ p = j for (i = j;i < n; i++) if(a[i] < a[p]) /***********FOUND***********/ p = j; t = a[p] ; a[p] = a[j] ; a[j] = t; } } main() { int a[N]={9,6,8,3,-1},i, m = 5; printf(\排序前的数据:\ for(i = 0;i < m;i++) printf(\ printf(\ fun(a,m); printf(\排序后的数据:\ for(i = 0;i < m;i++) printf(\ printf(\} 答案: =======(答案1)======= p=j ; =======(答案2)======= p=i; /*---------------------------------------------------- 【程序改错】第7题 ------------------------------------------------------ 功能:用起泡法对10个整数从小到大排序。 ----------------------------------------------------*/ #include /**********FOUND**********/ void sort(int x,int n) { int i,j,t; for(i=0;i /**********FOUND**********/ for(j=0;j /**********FOUND**********/ if(x[i]>x[i+1]) { t=x[j]; x[j]=x[j+1]; x[j+1]=t; } } main() { int i,n,a[100]; printf(\ scanf(\ for(i=0;i scanf(\ /**********FOUND**********/ sort(n,a); printf(\ for(i=0;i<=n-1;i++) printf(\ printf(\} 答案: =======(答案1)======= void sort(int *x,int n) =========或========= void sort(int x[],int n) =======(答案2)======= for(j=0;j< n -1 -i ;j++) =========或========= for(j=0; n -1 -i >j;j++) =========或========= for(j=0;j for(j=0;n-( 1 + i )>j;j++) =========或========= for(j=0;j<= n -2 -i ;j++) =======(答案3)======= if(x[j]>x[ j + 1 ]) =========或========= if(x[ j + 1] /*---------------------------------------------------- 【程序改错】第8题 ------------------------------------------------------ 功能:在一个一维整型数组中找出其中最大的数及其下标。 ---------------------------------------------------*/ #include /**********FOUND**********/ float fun(int *a,int *b,int n) { int *c,max=*a; for(c=a+1;cmax) { max=*c; /**********FOUND**********/ b=c-a; } return max; } void main() { int a[N],i,max,p=0; printf(\ for(i=0;i /**********FOUND**********/ get(\ /**********FOUND**********/ m=fun(a,p,N); printf(\} 答案: =======(答案1)======= int fun(int *a,int *b,int n) =======(答案2)======= *b=c-a; =======(答案3)======= scanf(\=========或========= scanf(\=======(答案4)======= max=fun(a,&p,N); /*---------------------------------------------------- 【程序改错】第9题 ------------------------------------------------------ 功能:判断字符ch是否与str所指串中的某个字符相同; 若 相同,什么也不做,若不同,则将其插在串的最后。 ----------------------------------------------------*/ #include /**********FOUND**********/ void fun(char str, char ch ) { while ( *str && *str != ch ) str++; /**********FOUND**********/ if ( *str == ch ) { str [ 0 ] = ch; /**********FOUND**********/ str[1] = '0'; } } main( ) { char s[81], c ; printf( \ gets ( s ); printf (\Please enter the character to search : \); c = getchar(); fun(s, c) ; printf( \} 答案: =======(答案1)======= void fun(char *str, char ch ) =======(答案2)======= if ( *str == '\\0' ) =======(答案3)======= str[1] = '\\0'; /*---------------------------------------------------- 【程序改错】第10题 ------------------------------------------------------ 功能:有一数组内放10个整数,要求找出最小数和它的下标, 然后把它和数组中最前面的元素即第一个数对换位置. ----------------------------------------------------*/ #include int i,a[10],min,k=0; printf(\ for(i=0;i<10;i++) /***********FOUND***********/ scanf(\ for(i=0;i<10;i++) printf(\ min=a[0]; /***********FOUND***********/ for(i=3;i<10;i++) /***********FOUND***********/ if(a[i]>min) { min=a[i]; k=i; } /***********FOUND***********/ a[k]=a[i]; a[0]=min; printf(\ for(i=0;i<10;i++) printf(\ printf(\} 答案: =======(答案1)======= scanf(\=======(答案2)======= for(i=1;i<10;i++) =========或========= for(i=0;i<10;i++) =========或========= for(i=1;i<=9;i++) =========或========= for(i=0;i<=9;i++) =======(答案3)======= if(a[i] =======(答案4)======= a[k]=a[0]; /*---------------------------------------------------- 【程序改错】第11题 ------------------------------------------------------ 功能:判断m是否为素数,若是返回1,否则返回0。 ----------------------------------------------------*/ #include /**********FOUND**********/ void fun( int n) { int i,k=1; if(m<=1) k=0; /**********FOUND**********/ for(i=1;i /**********FOUND**********/ if(m%i=0) k=0; /**********FOUND**********/ return m; } void main() { int m,k=0; for(m=1;m<100;m++) if(fun(m)==1) { printf(\ if(k%5==0) printf(\ } } 答案: =======(答案1)======= int fun( int m) =========或========= fun( int m) =======(答案2)======= for(i=2;i =========或========= for(i=2;m>i;i++) =========或========= for(i=2;i<=m-1;i++) =========或========= for(i=2;m-1>=i;i++) =======(答案3)======= if( m%i == 0 ) k=0; =======(答案4)======= return k; /*---------------------------------------------------- 【程序改错】第12题 ------------------------------------------------------ 题目:下列给定程序中,fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。 例如:给字符串s输入:AAaaBBbb123CCcccd,则应输出:upper=6,lower=8。 ----------------------------------------------------*/ #include /***********FOUND***********/ void fun ( char *s, int a, int b ) { while ( *s ) { if ( *s >= 'A' && *s <= 'Z' ) /***********FOUND***********/ *a=a+1 ; if ( *s >= 'a' && *s <= 'z' ) /***********FOUND***********/ *b=b+1; s++; } } main( ) { char s[100]; int upper = 0, lower = 0 ; printf( \ gets ( s ); fun ( s, & upper, &lower ); printf( \lower ); } 答案: =======(答案1)======= void fun ( char *s, int *a, int *b ) =======(答案2)======= *a=*a+1; =======(答案3)======= *b=*b+1; /*---------------------------------------------------- 【程序改错】第13题 ------------------------------------------------------ 功能:求两个形参的乘积和商数,并通过形参返回调用程序。 例如:输入:61.82 和 12.65,输出为:c = 782.023000 d = 4.886957 ----------------------------------------------------*/ #include /**********FOUND**********/ void fun ( double a, b, double *x, double *y ) { /**********FOUND**********/ x = a * b; /**********FOUND**********/ y = a / b; } main ( ) { double a, b, c, d; printf ( \ scanf ( \ fun ( a , b, &c, &d ) ; printf (\} 答案: =======(答案1)======= void fun ( double a, double b, double *x, double *y ) =======(答案2)======= *x = a * b; =======(答案3)======= *y = a / b; /*---------------------------------------------------- 【程序改错】第14题 ------------------------------------------------------ 功能:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。max代表最高分,min 代表最低分,avg代表平均分。 ----------------------------------------------------*/ #include /***********FOUND***********/ float a[8],min,max,avg; printf(\ for(i=0;i<=9;i++) { printf(\ /***********FOUND***********/ scanf(\ } max=min=avg=a[0]; for(i=1;i<=9;i++) { /***********FOUND***********/ if(min 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库程序改错题在线全文阅读。
相关推荐: