1、一、程序改错 共 137 题 第 1 题 题号:15/*- 【程序改错】-功能:根据整型形参 m 的值,计算如下公式的值。 1 1 1t = 1- - - . - 2x2 3x3 mxm 例如:若 m=5,则应输出:0.536389-*/#include double fun(int m)double y=1.0;int i;/*FOUND*/for(i=2;i=i;i+) 或 for(i=2;ii;i+) 或 for(i=2;1+mi;i+)2). y-=1.0/(i*i); 或 y=y-1.0/(i*i); 或 y-=1.0/(float)(i*i); 或 y=y-1.0/(float)(
2、i*i); 或 y=y-1.0/i/i; 或 y=y-1.0/(float)i/(float)i; 或 y=y-1/(double)(i*i); 或 y-=1/(double)(i*i);3). return y; 或 return (y); 或 return(y);第 2 题 题号:362/*- 【程序改错】-功能:删除字符串 s 中的所有空白字符(包括 Tab 字符、回车符及换行符)。输入字符串时用#结束输入。-*/#include #include #include fun ( char *p) int i,t; char c80;/*FOUND*/for (i = 1,t = 0; p
3、i ; i+)/*FOUND*/if(!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;第 3 题 题号:251/*- 【程序改错】-功能:用“起泡法“对连续输入的十个字
4、符排序后按从小到大的次序输出.-*/#include #include #define N 10sort(char strN)int i,j; char t;for(j=1;jstri+1) 或 if(stri+1void main()char ch,nch;int count;int k;printf(“Enter string.n“);scanf(“%c“,/*FOUND*/while(ch=#)if(ch=0/*FOUND*/for(i=0,j=0;*(ptr+i)!=“0“;i+)/*FOUND*/if(*(ptr+i)z| *(ptr+i)Z | *(ptr+i)z | *(ptr+
5、i)Z | *(ptr+i)#define Max 100void fun(int a,int n)/*FOUND*/int i=5;j=n-1,temp;while(i=0)/*FOUND*/j+;/*FOUND*/if(ij) 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;imain()int n;double fun();printf(“Please input a number:“);/*FOUND*/print(“%d“,n) ; printf(“%
6、10.6fn“,fun(n);/*FOUND*/fun(int n) int i,j,t;double s;s=0;/*FOUND*/while(i=1;i=i;i+) 或 for(i=1;ii;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 /(double)t;第 8 题 题号:387/*- 【程序改错】-功能:判断字符 ch 是否与 str 所指串中的某个字符相同; 若相同,什么也不做,若不同,则将其插在串的最后。-*
7、/#include #include #include /*FOUND*/void fun(char str, char ch ) while ( *str /*FOUND*/if ( *str = ch )str 0 = ch;/*FOUND*/str1 = 0; 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 resul
8、t is %sn“, s);答案:1). void fun(char *str, char ch )2). if ( *str = 0 )3). str1 = 0;第 9 题 题号:401/*- 【程序改错】-功能:编写函数 fun 计算下列分段函数的值:x*x+x xdouble fun(float x)/*FOUND*/double y/*FOUND*/if (x=0 p,n;printf(“Enter n:n“);/*FOUND*/scanf(“%d“,n);/*FOUND*/for(s=p=0,i=1;ioutput(long b,long i)printf(“n%ld=800*%ld
9、+9*%ld+1n“,b,i,i);printf(“?代表的两位数: %d“,i);printf(“n809*?后的结果:%d“,b);getch();main()/*FOUND*/long int a;b;i;a=809;/*FOUND*/for(i=10;i=1000 答案:1). long int a , b , i ;2). for(i=10;i#include #include /*FOUND*/double fun (double *a, *b)double c;/*FOUND*/c = sqr(a*a + b*b);/*FOUND*/return *c; main ( )doub
10、le a, b, y;printf ( “Enter a, b : “);scanf (“%lf%lf“, y = fun (printf (“y = %f n“, y );答案:1). double fun (double *a, double *b)2). c = sqrt(*a * *a + *b * *b);3). return c;第 13 题 题号:416/*- 【程序改错】-功能:利用递归函数调用方式,将所输入的 5 个字符,以相反顺序打印出来。-*/#includemain()int i=5;void palin(int n);printf(“40:“);palin(i);pr
11、intf(“n“);void palin(n)int n;/*FOUND*/int next; if(n#include#includeint fun(char *str,char *substr)/*FOUND*/unsigned int i,n=0/*FOUND*/for(i=0;iint fun(int a33)int i,j,sum;/*FOUND*/sum=0;/*FOUND*/for(i=0;imain( )/*FOUND*/long ge,shi,qian;wan,x;scanf(“%ld“,/*FOUND*/wan=x%10000;qian=x%10000/1000;shi=x
12、%100/10;ge=x%10;/*FOUND*/if (ge=wan|shi=qian)printf(“this number is a huiwenn“);elseprintf(“this number is not a huiwenn“);答案:1). long ge,shi,qian,wan,x;2). wan=x/10000;3). if (ge=wanint n;n=0;/*FOUND*/while(*p=0)n+;p+;return n;main()int len;/*FOUND*/char *str20;printf(“please input a string:n“);sca
13、nf(“%s“,str);/*FOUND*/len=length(str);printf(“the string has %d characters.“,len);答案:1). while(*p!=0) 或 while(*p) 或 while(*p!=0) 或 while(*p!=NULL)2). char str20;3). len=length(str);第 18 题 题号:29/*- 【程序改错】-功能:将字符串 s 中最后一次出现的子字符串 t1 替换成字符串 t2,所形成的新串放在 w 所指的数组中,在此处,要求 t1 和 t2所指字符串的长度相同。例如:当 s 所指字符串中的内容为
14、“abcdabfabc“,t1 中的内容为“ab“,t2 中的内容为“99“时,结果 w 所指数组中的内容应为“abcdabf99c“。-*/#include #include #include 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+;
15、r = t2;while ( *r ) /*FOUND*/a = *r; a+; r+; 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, t1, t2, w);printf(“nTh
16、e 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=*r;第 19 题 题号:410/*- 【程序改错】-功能:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。-*/#include mai
17、n()char c;int letters=0,space=0,digit=0,others=0;printf(“please input some charactersn“);/*FOUND*/while(c=getchar()=n)/*FOUND*/if(c=aint n=1;s=0.0;t=1;/*FOUND*/while(teps) 或 while(eps=eps) 或 while(epseps) 或 while (eps=eps) 或 while (epsmain()int a,i,aa4,t;printf(“输入一个四位整数:“);/*FOUND*/scanf(“%d“,a);aa
18、0=a%10;/*FOUND*/aa1=a%100%10;aa2=a%1000/100;aa3=a/1000;/*FOUND*/for(i=0;i=0;i-)printf(“%d“,aai);答案:1). scanf(“%d“,2). aa1=a%100/10;3). for(i=0;imain()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+;/*FO
19、UND*/while(s2j= =0)/*FOUND*/s2j=s1i;i+;j+;/*FOUND*/s2j=0;答案:1). while( s1i != 0 ) 或 while(s1i) 或 while( s1i != 0 )2). while( s2j != 0 ) 或 while(s2j) 或 while( s2j != 0 )3). s1i=s2j;4). s1i=0; 或 *(s1+i)=0; 或 s1i=0;第 23 题 题号:381/*- 【程序改错】-功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。例如:输入圆的半径值:19.527 输出为:s =
20、 598.950017。-*/#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“, printf (“ s = %fn “, fun ( x ) );答案:1). float fun(float r) 或 double fun(float r) 或 double fun(double r)2). s=1.0/2*3.14159* r * r;3). ret
21、urn s;第 24 题 题号:6/*- 【程序改错】-功能:利用二维数组输出如图所示的图形。*-*/#include #include /*FOUND*/#define N= 7main()char aNN;int i,j,z;for(i=0;i#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 ( “Enter a , b : “);scanf ( “%lf%lf“, fu
22、n ( a , b, printf (“ c = %f d = %fn “, c, d );答案:1). void fun ( double a, double b, double *x, double *y )2). *x = a * b;3). *y = a / b;第 26 题 题号:413/*- 【程序改错】-功能:读取 7 个数(1-50)的整数值,每读取一个值,程序打印出该值个数的。-*/#include main()int i,a,n=1;/*FOUND*/while(n50);/*FOUND*/for(i=0;i50); 或 while(a50|a#include #inclu
23、de #define N 3void fun ( int aN, int n )/*FOUND*/int i;j;for(i=0; i =5|nmain( )int a11=1,4,6,9,13,16,19,28,40,100;int temp1,temp2,number,end,i,j;/*FOUND*/for(i=0;iend) /*FOUND*/a11=number;elsefor(i=0;inumber)第 29 题 题号:399/*- 【程序改错】-功能:编写函数 fun 求 20 以内所有 5 的倍数之积。-*/#include #define N 20int fun(int m)/*FOUND*/int s=0,i;for(i=1;iint fun(int k)int m=0,mc=0;/*FOUND*/while (k=2)|(mc10)