程序改错题 下载本文

程序改错练习题

/*---------------------------------------------------- 【程序改错】第1题

------------------------------------------------------ 功能:输入一行字符,分别统计出其中英文字母、空格、数字

和其它字符的个数。

----------------------------------------------------*/ #include main() {

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 #define N 11 main() {

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 main() {

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 main() {

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 #define N 20

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 #define N 10

/**********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 #include #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 main( ) {

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 #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 main( ){ int i;

/***********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

min=a[i]; if(max

avg=avg/10;

printf(\}

答案:

=======(答案1)======= float a[10] min max avg; =======(答案2)======= scanf(\=========或========= scanf(\

=======(答案3)======= if (min>a[i])

=========或========= if (a[i]

/*---------------------------------------------------- 【程序改错】第15题

------------------------------------------------------ 功能:将6个数按输入时顺序的逆序进行排列.

----------------------------------------------------*/ #include sort(char *p,int m) {

int i;

char change,*p1,*p2; for(i=0;i

/***********FOUND***********/ *p1=p+i; *p2=p+(m-1-i); change=*p1; *p1=*p2; *p2=change; } }

main( ) {

int i;

/***********FOUND***********/ char p,num[6]; for(i=0;i<=5;i++)

/***********FOUND***********/ scanf(\ p=&num[0];

/***********FOUND***********/ sort(*p,6);

for(i=0;i<=5;i++) printf(\}

答案:

=======(答案1)======= p1=p+i; p2=p+(m-1-i); =======(答案2)======= char *p,num[6];

=======(答案3)======= scanf(\=======(答案4)======= sort(p,6);

/*------------------------------------------------ 【程序改错】第16题

-------------------------------------------------- 功能:编写函数fun,求两个整数的最小公倍数,然后用主 函数main()调用这个函数并输出结果,两个整数由 键盘输入。

------------------------------------------------*/ #include

int fun(int m,int n) {

int i;

/**********FOUND**********/ if (m=n) {

i=m; m=n; n=i; }

for(i=m;i<=m*n;i+=m)

/**********FOUND**********/ if(i%n==1) return(i); return 0; }

main() {

unsigned int m,n,q; printf(\

scanf(\

/**********FOUND**********/ q==fun(m,n);

printf(\}

答案:

=======(答案1)======= if (m

======(答案2)======= if(i%n==0)

=======(答案3)======= q=fun(m,n);

/*---------------------------------------------------- 【程序改错】第17题

------------------------------------------------------ 功能:请编写函数fun,对长度为8个字符的字符串,将8个字符按降序排列。

例如:原来的字符串为CEAedcab,排序后输出为edcbaECA。 ----------------------------------------------------*/ #include #include #include

void fun(char *s,int num) {

/**********FOUND**********/ int i;j; char t;

for(i=0;i

/**********FOUND**********/ for(j=i;j

/**********FOUND**********/ if(s[i]>s[j]) {

t=s[i]; s[i]=s[j]; s[j]=t; } }

main() {

char s[10];

printf(\输入8个字符的字符串:\ gets(s); fun(s,8);

printf(\}

答案:

=======(答案1)======= int i,j;

=======(答案2)======= for(j=i+1;j

/*---------------------------------------------------- 【程序改错】第18题

------------------------------------------------------ 功能:求两数平方根之和,作为函数值返回。

例如:输入12和20,输出结果是:y = 7.936238。

----------------------------------------------------*/ #include #include #include

/**********FOUND**********/ double fun (double *a, *b) {

double c;

/**********FOUND**********/ c = sqr(a)+sqr(b) ;

/**********FOUND**********/ return a; }

main ( ) {

double a, b, y;

printf ( \ scanf (\ y = fun (&a, &b);

printf (\}

答案:

=======(答案1)=======

double fun (double *a, double *b) =======(答案2)======= c = sqrt(*a)+sqrt(*b) ; =========或========= c = sqrt(*b)+sqrt(*a) ; =======(答案3)======= return c;

=========或========= return(c);

=========或=========

return sqrt(*b)+sqrt(*a); =========或=========

return sqrt(*a)+sqrt(*b);

/*---------------------------------------------------- 【程序改错】第19题

------------------------------------------------------ 功能:实现两个字符串的连接。

例如:输入dfdfqe和12345时,则输出dfdfqe12345.

----------------------------------------------------*/ #include main() {

char s1[80],s2[80];

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(s1[i]= ='\\0') i++;

/**********FOUND**********/ while(s2[j]= ='\\0') {

/**********FOUND**********/ s2[j]=s1[i]; i++; j++; }

/**********FOUND**********/ s2[j]='\\0'; }

答案:

=======(答案1)======= while( s1[i] != '\\0' ) =========或========= while(s1[i])

=========或========= while( s1[i] != 0 ) =======(答案2)======= while( s2[j] != '\\0' ) =========或========= while(s2[j])

=========或========= while( s2[j] != 0 ) =======(答案3)======= s1[i]=s2[j];

=======(答案4)======= s1[i]='\\0';

=========或=========

*(s1+i)='\\0';

=========或========= s1[i]=0;

/*---------------------------------------------------- 【程序改错】第20题

------------------------------------------------------ 功能:将一个字符串中的大写字母转换成小写字母。 例如:输入aSdFG输出为asdfg。

----------------------------------------------------*/ #include

/**********FOUND**********/ bool fun(char *c) {

if(*c<='Z'&&*c>='A')*c-='A'-'a'; /**********FOUND**********/ fun= c; }

main() {

/**********FOUND**********/ char s[81],p=s; gets(s); while(*p) {

*p=fun(p);

/**********FOUND**********/ puts(*p); p++; }

putchar('\\n'); }

答案:

=======(答案1)======= char fun(char *c)

=======(答案2)======= return *c;

=========或========= return (*c);

=========或========= return(*c);

=======(答案3)======= char s[81],*p=s;

=======(答案4)======= putchar(*p);

=========或========= printf(\

/*---------------------------------------------------- 【程序改错】第21题

------------------------------------------------------ 功能:求100以内(包括100)的偶数之和.

----------------------------------------------------*/ #include main() {

/**********FOUND**********/ int i,sum=1;

/**********FOUND**********/ for(i=2;i<=100;i+=1) sum+=i; /**********FOUND**********/ printf(\}

答案:

=======(答案1)======= int i,sum=0;

=======(答案2)======= for(i=2;i<=100;i+=2) =======(答案3)======= printf(\

/*---------------------------------------------------- 【程序改错】第22题

------------------------------------------------------ 功能:统计出若干个学生的平均成绩,最低分以及得最低分的

人数。

例如:输入10名学生的成绩分别为92,87,68,56,92,84,

67,75,92,66,则输出平均成绩为77.9,最低高分为 56,得最低分的人数为1人。

----------------------------------------------------*/ #include float Min=0; int J=0;

float fun(float array[],int n) {

int i;float sum=0,ave; Min=array[0]; for(i=0;i

if(Min>array [i]) Min=array [i]; /**********FOUND**********/ sum=+array [i]; }

/**********FOUND**********/ ave=sum\\n;

for(i=0;i

/**********FOUND**********/ if(array [i]=Min) J++; return(ave); }

main( ) {

float a[10],ave; int i=0;

for(i=0;i<10;i++) scanf(\ ave=fun(a,10);

printf(\ printf(\ printf(\}

答案:

=======(答案1)======= sum+=array[i];

=========或========= sum=sum+array [i]; =======(答案2)======= ave=sum/n;

=======(答案3)======= if(array [i]==Min) J++;

/*---------------------------------------------------- 【程序改错】第23题

------------------------------------------------------ 功能:将s所指字符串的反序和正序进行连接形成一个新串放

在t所指的数组中。

例如:当s所指的字符串的内容为\时,t所指数组中 的内容为\。

----------------------------------------------------*/ #include #include #include

/**********FOUND**********/ void fun (char s, char t) {

int i, d;

/**********FOUND**********/ d = len(s);

/**********FOUND**********/ for (i = 1; i

/**********FOUND**********/ t[2*d] = '/0'; }

main() {

char s[100], t[100];

printf(\ scanf(\ fun(s, t);

printf(\}

答案:

=======(答案1)=======

void fun (char s[],char t[]) =========或=========

void fun (char *s,char *t) =======(答案2)======= d = strlen(s);

=======(答案3)======= for (i = 0; ii; i++) =========或========= for (i = 0; i<=d-1; i++) =========或========= for (i = 0; d-1>=i; i++) =======(答案4)======= t[ 2 * d ] = '\\0'; =========或========= t[ i + d ] = '\\0'; =========或========= t[ i + d ] =NULL; =========或========= t[ 2 * d ] = NULL; =========或========= t[ 2 * d ] = 0;

=========或========= t[ i + d ] = 0; /*---------------------------------------------------- 【程序改错】第24题

------------------------------------------------------ 功能:实现3行3列矩阵的转置,即行列互换。

----------------------------------------------------*/ #include fun(int a[3][3],int n) {

int i,j,t;

for(i=0;i

/**********FOUND**********/ scanf(\ for(i=0;i

for(j=0;j

printf(\ printf(\ }

for(i=0;i

/**********FOUND**********/ for(j=0;j

/**********FOUND**********/ a[i][j]=t;

a[i][j]=a[j][i];

/**********FOUND**********/ t=a[j][i]; }

for(i=0;i

for(j=0;j

printf(\ printf(\ } }

main() {

int b[3][3]; fun(b,3); }

答案:

=======(答案1)======= scanf(\=========或========= scanf(\=======(答案2)======= for(j=0;jj;j++) =========或========= for(j=0;j<=i;j++) =========或========= for(j=0;i>=j;j++) =========或========= for(j=i+1;j=j;j++)

=========或========= for(j=i+1;j<=n-1;j++) =========或========= for(j=i;j<=n-i;j++) =======(答案3)======= t=a[i][j]; =======(答案4)======= a[j][i]=t; /*---------------------------------------------------- 【程序改错】第25题 ------------------------------------------------------ 功能:以下程序输出前六行杨辉三角形,既 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ………… ………… ----------------------------------------------------*/ #include main( ) { static int a[6][6]; int i,j,k; /***********FOUND***********/ for(i=1;i<=6;i++) { for(k=0;k<10-2*i;k++) printf(\ for(j=0;j<=i;j++) { /***********FOUND***********/ if(j==0&&j==i) a[i][j]=1; else /***********FOUND***********/ a[i][j]=a[i-1][j-1]+a[i][j-1]; printf(\ printf(\ } /***********FOUND***********/ printf(\ } } 答案: =======(答案1)======= for(i=0;i<6;i++) =========或========= for(i=0;i<=5;i++) =======(答案2)======= if(j == 0 || j == i) =======(答案3)======= a[i][j]=a[i-1][j]+a[i-1][j-1]; =========或========= a[i][j]=a[i-1][j-1]+a[i-1][j]; =======(答案4)======= printf(\ /*---------------------------------------------------- 【程序改错】第26题 ------------------------------------------------------ 功能:输出Fabonacci数列的前20项,要求变量类型定义成浮点型,输出时只输出整数部分,输出项数不得多于或少于20。 ----------------------------------------------------*/ #include fun() { int i; float f1=1,f2=1,f3; /**********FOUND**********/ printf(\ /**********FOUND**********/ for(i=1;i<=20;i++) { f3=f1+f2; /**********FOUND**********/ f2=f1; /**********FOUND**********/ f3=f2; printf(\ } printf(\} main() { fun(); } 答案: =======(答案1)======= printf(\=========或========= printf(\=========或========= printf(\=======(答案2)======= for(i=1;i<20;i++) =========或========= for(i=1;20>i;i++) =========或========= for(i=2;i<=20;i++) =========或========= for(i=2;20>=i;i++) =========或========= for(i=1;i<=19;i++) =========或========= for(i=1;19>=i;i++) =======(答案3)======= f1=f2; =======(答案4)======= f2=f3; /*---------------------------------------------------- 【程序改错】第27题 ------------------------------------------------------ 题目:下列给定程序中,函数fun的功能是:求出数组中的最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和 a[1] 中的数对调。 ----------------------------------------------------*/ #include #include #define N 20

/***********FOUND***********/ void fun(int a,int n); {

int i, m, t, k; for(i=0; i

/***********FOUND***********/ m=0;

for(k=i+1; ka[m]) m=k; t=a[i]; a[i]=a[m]; a[m]=t; } }

main() {

int b[N]={11,5,12,0,3,6,9,7,10,8},n=10,i; system(\

for(i=0; i

printf(\ printf(\ fun(b,n);

for(i=0; i

printf(\ printf(\}

答案:

=======(答案1)======= void fun(int *a, int n) =======(答案2)======= m=i;

/*---------------------------------------------------- 【程序改错】第28题

------------------------------------------------------ 功能:以下程序把两个数按由大到小的顺序输出来.

----------------------------------------------------*/ #include

/***********FOUND***********/ swap( int *p1,*p2) {

int p; p=*p1; *p1=*p2; *p2=p; }

main( ) {

int a,b, *p,*q;

printf(\

/***********FOUND***********/ scanf(\ p=&a; q=&b; if(a

printf(\ /***********FOUND***********/ printf(\}

答案:

=======(答案1)======= swap( int *p1,int *p2) =========或=========

void swap( int *p1,int *p2) =======(答案2)======= scanf(\=======(答案3)=======

printf(\=========或=========

printf(\

/*---------------------------------------------------- 【程序改错】第29题

------------------------------------------------------ 功能:编写函数fun计算下列分段函数的值: x*x+x x<0且x≠-3

f(x)= x*x+5x 0≤x<10且x≠2及x≠3 x*x+x-1 其它

----------------------------------------------------*/ #include 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; else

y=x*x+x-1;

/**********FOUND**********/ return x; }

main() {

double f; float x;

printf(\ scanf(\ f=fun(x);

printf(\ }

答案:

=======(答案1)======= float y;

=======(答案2)======= if (x<0 && x!=-3.0) =======(答案3)======= return y;

/*---------------------------------------------------- 【程序改错】第30题

------------------------------------------------------ 题目:下列给定程序中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。

例如:若给a输入字符串:ABCDEFGKHIJK,调用函数后,字符数组b中的内容为:ABC DEF GHI JK。

----------------------------------------------------*/ #include

void fun(char *p, char *b) {

int i, k=0; while(*p) {

i=1;

while( i<=3 && *p ) {

/***********FOUND***********/ b[k]=p;

k++; p++; i++; }

if(*p) {

/***********FOUND***********/ b[k++]=\ }

}

b[k]='\\0'; }

main() {

char a[80],b[80];

printf(\ gets(a);

printf(\ puts(a); fun(a,b);

printf(\ puts(b); printf(\}

答案:

=======(答案1)======= b[k]=*p;

=======(答案2)======= b[k]=' ';k++;