为世纪教育www.greatc.cn4月上机考试题库改错题 改错题 考试做题要求 printf("Enter a string: " ) gets(str); 1、在/**春 found*事事**/的下一行改正错误 printf(" The original string: )r puts(str) 2、将题目做完之后一定要保存。 fun(str); 3、不能删除/**事Oud**事*/,也不能多 printf("wnThe string after moving:"); puts(str); 厅或少彳 printf("nn"); 1、给定程序 MODILC中函数fu的功能是:比较两个字符} 串,将长的那个字符串的首地址作为函数值返回 请改正函数fimn中指定部位的错误,使它能得出正确的3、给定程序 MODILC中函数fun的功能是:根据整型形参 结果 m,计算如下公式的值 结构 改动main函数,不得增行或删行,也不得更 改程序的 #include <stdio. h 100*100200*200300*300 m·m /**布率事布 found事事事事*/ 例如,若m=2000,则应输出:0.000160 char fun(char *s, char * t char *ss. 连直正釋要枝动过错误数,使不得行算歧的包 SS-S 更改程序的结构 #include <stdio h> {sH++; /率和布事亭事事布事事* found*本事事率*布/ while(tt) /率事事*布枣亭* found事事事事率率布事事* t++ for(i=100,i<=m,i+=100) /*本事率*布布 found布*事事*/ i d=(double)i*(double)i 1.0/d if(t>sl) return t; eturn( y ) } [80p,q Int 1, i int n=2000 printf(" a string:); gets(a), printf("nThe result is %If\n", fun(n)) string again:"); gets(b); printf("nThe longer is: \nInl"%s\"n", fun (a, b)); 给定程序 MODIL.C中函数fun的功能是:读入一个字 符串(长度<20),将该字符串中的所有字符按ASCI1码升序 2、给定程序MODC中函数fiun的功能是:在p所指字符排序后输出。 串中找出ASCI码值最大的字符,将其放在第一个位置上 例如,若输入 输出: abcde 并将该字符前的原字符向后顺序移动。 请改正程序中的 它能统计出正确的结果。 例如,调用fun函数之前给字符串输入: ABCDeFGH, 注意:不要改 函数,不得增行或删行,也不得 调用后字符串中的内容为: eABCDFGH 更改程序的结构 请改正程序中的错误,使它能得出正确结果 #include <stdio. h> 注意:不要改动main函数,不得增行或删行,也不得 oid fun( char tI) 更改程序的结构 #include <stdio h> char c. fun(char·p) max,q /率率市事率布布 found市事事**布事事率率/ max=p] for( i=strlen( t ); 1; i--) while( p= for(j=0; j<1;j++) found*事事 max=po if(t<t+11) 体率率布亭事率 found布春事率本布事摩事/ ]=tj+1 冰率*布事率事事布 found布春亭率布摩/ ihle( q>p) maino ·q(q-1), char s[81]: printf("\nPlease enter a character string: " pROMax gets(s ) printf("IninBefore sorting n 1 "%s"s);
宏为世纪教育 www.greatc.cn 4 月上机考试题库 改错题 1 改错题 考试做题要求: 1、在/**********found**********/的下一行改正错误。 2、将题目做完之后一定要保存。 3、不能删除/**********found**********/,也不能多 行或少行。 1、给定程序 MODI1.C 中函数 fun 的功能是: 比较两个字符 串,将长的那个字符串的首地址作为函数值返回。 请改正函数 fun 中指定部位的错误, 使它能得出正确的 结果。 注意: 不要改动 main 函数, 不得增行或删行, 也不得更 改程序的结构! #include <stdio.h> /**********found**********/ char fun(char *s, char *t) { int sl=0,tl=0; char *ss, *tt; ss=s; tt=t; while(*ss) { sl++; /**********found**********/ (*ss)++; } while(*tt) { tl++; /**********found**********/ (*tt)++; } if(tl>sl) return t; else return s; } main() { char a[80],b[80],*p,*q; int i; printf("\nEnter a string : "); gets(a); printf("\nEnter a string again : "); gets(b); printf("\nThe longer is :\n\n\"%s\"\n",fun(a,b)); } 2、给定程序 MODI1.C 中函数 fun 的功能是:在 p 所指字符 串中找出 ASCII 码值最大的字符,将其放在第一个位置上; 并将该字符前的原字符向后顺序移动。 例如,调用 fun 函数之前给字符串输入:ABCDeFGH, 调用后字符串中的内容为:eABCDFGH。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构。 #include <stdio.h> fun( char *p ) { char max,*q; int i=0; max=p[i]; while( p[i]!=0 ) { if( max<p[i] ) { max=p[i]; /**********found**********/ q=p+i } i++; } /**********found**********/ wihle( q>p ) { *q=*(q-1); q--; } p[0]=max; } main() { char str[80]; printf("Enter a string: "); gets(str); printf("\nThe original string: "); puts(str); fun(str); printf("\nThe string after moving: "); puts(str); printf("\n\n"); } 3、给定程序 MODI1.C 中函数 fun 的功能是:根据整型形参 m,计算如下公式的值。 1 1 1 1 y = ------- + --------- + --------- + …… + ------- 100*100 200*200 300*300 m*m 例如,若 m = 2000,则应输出: 0.000160。 请改正程序中的语法错误,使它能计算出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include <stdio.h> /************found************/ fun ( int m ) { double y = 0, d ; int i ; /************found************/ for( i = 100, i <= m, i += 100 ) { d = (double)i * (double)i ; y += 1.0 / d ; } return( y ) ; } main( ) { int n = 2000 ; printf( "\nThe result is %lf\n", fun ( n ) ) ; } 4、给定程序 MODI1.C 中函数 fun 的功能是: 读入一个字 符串(长度<20 ),将该字符串中的所有字符按 ASCII 码升序 排序后输出。 例如, 若输入: edcba, 则应输出: abcde。 请改正程序中的错误,使它能统计出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include <stdio.h> void fun( char t[] ) { char c; int i, j; /**********found***********/ for( i = strlen( t ); i; i-- ) for( j = 0; j < i; j++ ) /**********found***********/ if( t[j] < t[ j + 1 ] ) { c = t[j]; t[j] = t[ j + 1 ]; t[j + 1 ] = c; } } main() { char s[81]; printf( "\nPlease enter a character string: " ); gets( s ); printf( "\n\nBefore sorting:\n \"%s\"", s ); fun( s );
为世纪教育www.greatc.cn4月上机考试题库改错题 printf("nAfter sorting decendingly: n \%s""s); 2*23·3 例如,若m中的值为:5,则应输出:0.536389。 请改正程序中的错误,使它能得出正确的结果 5、给定程序MODC中fun函数的功能是:分别统计字 注意:不要改动main函数,不得增行或删行,也不得 符串中大写字母和小写字母的个数。 更改程序的结构 例如,给字符串s输入: AAaabBb123 CCccccd,则应 #include< stdio h> 输出结果: upper=6, lower=8 double fun( int m 请改正程序中的错误,使它能计算出正确的结果 i double y=1.0 注意:不要改动main函数,不得增行或删行,也不得 更改程序的结构! /率布率和布枣事率布事 found事事事率事事率率事事事/ #include <stdio. h> for(i=2; i<m; 1++) /率*率率事率率事 found市摩*率率/ /率布亭事春* found事事率**率事率率春 void fun( char*s, int a, int b y-1/i*D) return( y while(*s) main() /**事 found*率事事/ printf("nThe result is %If\n", fun(n)) if(*s>=a'&&*s<z) /**布布亭枣事 found布亭事事事*/ 8、给定程序 MODIL.C中函数fun的功能是:逐个比较p q所指两个字符串对应位置中的字符,把ASCI值大或相等 的字符依次存放到c所指数组中,形成一个新的字符串 例如,若主函数中a字符串为: aBCDeFgH 主函数中b字符串为:ABcd, int upper=0, lower =0 则c中的字符串应为:aBcd a string:"), gets(S); 请改正程序中的错误,使它能得出 fun(s,& upper, &lower ) 注意:不要改动main函数,不得增行或删行,也不得 printf("In upper =%d lower=%d\un", upper, lower ) 更改程序的结构。 6、给定程序 MODILO中函数fu的功能是:统计 substr void fun( char*p,char。q,char*c) 所指子字符串在st所指字符串中出现的次数。 例如,若字符串为 aaas lkaaas,子字符串为as,则应输*布事幸春事* found事春事率事事/ 出2。 int k= I 请改正程序中的错误,使它能计算出正确的结果 事 found·率事布事事率率市布摩率 改动main函数,不得增行或删行,也不得 更改程序的结构! t if(*p<q) ckF*q; #include <stdio. h> else kF*p; fun(char *str, char*substr) if(·p)p++ int i,j, k, num q)q++; /率率布率率率布 found事事率事率率布事*/ or(i=0,str[,计++) forfFi k=0; substr[kAstro; k++j++) } If(substr+1==wo) har a[10]="aBCDeFgH", b[10"ABcd"c[80(W0; break printf(" The string a: ") puts(a); printf("The string b:"); puts(b), ODILO中函数fun的功能是:从s所指字符 char str[80), substr[801; 串中删除所有小写字母 请改正程序中的错误,使它能计算出正确的结果 注意:不要改动main函数,不得增行或删行,也不得 gets(substr) #include <stdio h> printf("%d\n", fun(str, substr) void fun( char *s) 7、给定程序 MODILO中函数fun的功能是:根据整型形参 m的值,计算如下公式的值 体率率布率布布事事 found率率事事率率事和察率 =s[; ound本率率事帝本事事事率
宏为世纪教育 www.greatc.cn 4 月上机考试题库 改错题 2 printf( "\nAfter sorting decendingly:\n \"%s\"", s ); } 5、给定程序 MODI1.C 中 fun 函数的功能是:分别统计字 符串中大写字母和小写字母的个数。 例如, 给字符串 s 输入:AAaaBBb123CCccccd,则应 输出结果:upper = 6, lower = 8。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include <stdio.h> /**********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( "\nPlease a string : " ); gets ( s ); fun ( s, & upper, &lower ); printf( "\n upper = %d lower = %d\n", upper, lower ); } 6、给定程序 MODI1.C 中函数 fun 的功能是:统计 substr 所指子字符串在 str 所指字符串中出现的次数。 例如,若字符串为 aaas lkaaas,子字符串为 as,则应输 出 2。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include <stdio.h> fun (char *str,char *substr) { int i,j,k,num=0; /************found************/ for(i = 0, str[i], i++) for(j=i,k=0;substr[k]==str[j];k++,j++) /************found************/ If(substr[k+1]=='\0') { num++; break; } return num; } main() { char str[80],substr[80]; printf("Input a string:") ; gets(str); printf("Input a substring:") ; gets(substr); printf("%d\n",fun(str,substr)); } 7、给定程序 MODI1.C 中函数 fun 的功能是:根据整型形参 m 的值,计算如下公式的值。 1 1 1 t = 1 - ----- - ----- - …… - ----- 2*2 3*3 m*m 例如,若 m 中的值为: 5,则应输出: 0.536389。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #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) ; return( y ) ; } main( ) { int n = 5 ; printf( "\nThe result is %lf\n", fun ( n ) ) ; } 8、给定程序 MODI1.C 中函数 fun 的功能是:逐个比较 p、 q 所指两个字符串对应位置中的字符,把 ASCII 值大或相等 的字符依次存放到 c 所指数组中,形成一个新的字符串。 例如,若主函数中 a 字符串为:aBCDeFgH, 主函数中 b 字符串为:ABcd, 则 c 中的字符串应为:aBcdeFgH。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构。 #include <stdio.h> #include <string.h> void fun(char *p ,char *q, char *c) { /************found************/ int k = 1; /************found************/ while( *p != *q ) { if( *p<*q ) c[k]=*q; else c[k]=*p; if(*p) p++; if(*q) q++; k++; } } main() { char a[10]="aBCDeFgH", b[10]="ABcd", c[80]={'\0'}; fun(a,b,c); printf("The string a: "); puts(a); printf("The string b: "); puts(b); printf("The result : "); puts(c); } 9、给定程序 MODI1.C 中函数 fun 的功能是:从 s 所指字符 串中删除所有小写字母 c。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include <stdio.h> void fun( char *s ) { int i,j; for(i=j=0; s[i]!='\0'; i++) if(s[i]!='c') /************found************/ s[j]=s[i]; /************found************/
为世纪教育www.greatc.cn4月上机考试题库改错题 12、给定程序MODC中函数fn的功能是:首先把b所 指字符串中的字符按逆序存放,然后将a所指字符串中的 maino 字符和b所指字符串中的字符,按排列的顺序交叉合并到 i char s80 所指数组中,过长的剩余字符接在c所指数组的尾部。例如, printf("Enter a string 当a所指字符串中的内容为" abcdefg",b所指字符串中的内 printf("The original string: ") puts(s); 容为”1234"时,c所指数组中的内容应该为"a4b3c2 defy fun(s) 而当a所指字符串中的内容为"1234",b所指字符串中的内 printf("The string after deleted: ") puts(s): printf("nn"); F 为" abcdefo"时,c所指数组中的内容应该为"lg2f3 dcba" 请改正程序中的错误,使它能得出正确的结果 10、给定程序 MODILO中函数fn的功能是:根据以下公 注意:不要改动main函数,不得增行或删行,也不得 式求π值,并作为函数值返 更改程序的结构 例如,给指定精度的变量eps输入00005时,应当输出# Include< <stdio. h> Pi=3.140578。 #include <string. h> 1121231234 void fun( char *a, char *b, char *c) =1+-+-×-+-X-x-+-X-×-X-+ 23353573579 请改正程序中的错误,使它能得出正确结果。 j=strlen(b) 注意:不要改动main函数,不得增行或删行,也不得*事春事 found*率幸春事* 更改程序的结构 #include <math. h> i ch=b0: b0=b0: b0=ch; #include <stdio h> double fun( double eps) i double s, t, while (*al*b)4 /率布率春事事 found*率率布事率*和事事/ 体率*布布亭事率布事 found事率*布事事率事事/ while( teps) if(b) =b.c++:b++ t=tn/2*n+1), 事市率布* found中事事率序*率率事事 main( har sl[100] s2[100), t200]; printf("nEnter sI string: ") scanf("%s"sl) printf("unPlease enter a precision: ") scanf("%lf", &x); printf("neps=%f, PF%If\nn,x, fun(x)); printf("nThe result is: %sn,t) 11、给定程序MODC中函数fun的功能是:找出一个大13、给定程序MODC中函数fun的功能是:从低位开始 于形参m且紧随m的素数,并作为函数值返回 取出长整型变量s中偶数位上的数,依次构成一个新数放在 请改正程序中的错误,使它能得出正确的结果 t中。高位仍在高位低位仍在低位 注意:不要改动main函数,不得增行或删行,也不得 例如,当s中的数为:7654321时,t中的数为:642。 更改程序的结构! 请改正程序中的错误,使它能得出正确的结果 #include <stdio. h> 注意:不要改动main函数,不得增行或删行,也不得 int fun(int m) 更改程序的结构! i int i, k #include <stdio. h> for(i=m+1;;i++){ /率事率事本事事摩率 found**率枣事摩率 for(k=2; k<i; k++) 春帝率本事亭事事 found*率摩事率率事事事*率布/ long sh10:gy if(i%k=0) s/=10; break *t=s%10 率率布市事率率布布事率布 found*事布亭事事事事事亭事事事事/ /率布率亭春事事率 found*率率布事事率率和事事 SI=sI *10 Int n maino n=fun(20); printf("n=%d\n", n) printf("nPlease enter s: ) scanf("%ld", &s); fun(s, &t);
宏为世纪教育 www.greatc.cn 4 月上机考试题库 改错题 3 s[i]='\0'; } main() { char s[80]; printf("Enter a string: "); gets(s); printf("The original string: "); puts(s); fun(s); printf("The string after deleted : "); puts(s);printf("\n\n"); } 10、给定程序 MODI1.C 中函数 fun 的功能是:根据以下公 式求 π 值,并作为函数值返回。 例如,给指定精度的变量 eps 输入 0.0005 时,应当输出 Pi=3.140578。 π 1 1 2 1 2 3 1 2 3 4 ─=1+ ─ + ─×─ + ─×─×─ + ─×─×─×─+…… 2 3 3 5 3 5 7 3 5 7 9 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构。 #include <math.h> #include <stdio.h> double fun(double eps) { double s,t; int n=1; s=0.0; /************found************/ t=0; while( t>eps) { s+=t; t=t * n/(2*n+1); n++; } /************found************/ return(s); } main() { double x; printf("\nPlease enter a precision: "); scanf("%lf",&x); printf("\neps=%lf, Pi=%lf\n\n",x,fun(x)); } 11、给定程序 MODI1.C 中函数 fun 的功能是:找出一个大 于形参 m 且紧随 m 的素数,并作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include <stdio.h> int fun(int m) { int i, k ; for (i = m + 1 ; ; i++) { for (k = 2 ; k < i ; k++) /**************found**************/ if (i % k != 0) break ; /**************found**************/ if (k < i) return(i); } } void main() { int n ; n = fun(20) ; printf("n=%d\n", n) ; } 12、给定程序 MODI1.C 中函数 fun 的功能是:首先把 b 所 指字符串中的字符按逆序存放, 然后将 a 所指字符串中的 字符和 b 所指字符串中的字符,按排列的顺序交叉合并到 c 所指数组中,过长的剩余字符接在 c 所指数组的尾部。例如, 当 a 所指字符串中的内容为"abcdefg",b 所指字符串中的内 容为"1234"时,c 所指数组中的内容应该为"a4b3c2d1efg"; 而当 a 所指字符串中的内容为"1234",b 所指字符串中的内 容 为"abcdefg"时,c 所指数组中的内容应该为"1g2f3e4dcba"。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include <stdio.h> #include <string.h> void fun( char *a, char *b, char *c ) { int i , j; char ch; i = 0; j = strlen(b)-1; /************found************/ while ( i > j ) { ch = b[i]; b[i] = b[j]; b[j] = ch; i++; j--; } while ( *a || *b ) { /************found************/ If ( *a ) { *c = *a; c++; a++; } if ( *b ) { *c = *b; c++; b++; } } *c = 0; } main() { char s1[100],s2[100],t[200]; printf("\nEnter s1 string : ");scanf("%s",s1); printf("\nEnter s2 string : ");scanf("%s",s2); fun( s1, s2, t ); printf("\nThe result is : %s\n", t ); } 13、给定程序 MODI1.C 中函数 fun 的功能是:从低位开始 取出长整型变量 s 中偶数位上的数,依次构成一个新数放在 t 中。高位仍在高位,低位仍在低位。 例如,当 s 中的数为:7654321 时,t 中的数为:642。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include <stdio.h> /************found************/ void fun (long s, long t) { long sl=10; s /= 10; *t = s % 10; /************found************/ while ( s < 0) { s = s/100; *t = s%10*sl + *t; sl = sl * 10; } } main() { long s, t; printf("\nPlease enter s:"); scanf("%ld", &s); fun(s, &t);
为世纪教育www.greatc.cn4月上机考试题库改错题 printf("The result is: %ld n",t); p->nexts p->nextNULL 14、给定程序 MODILC中函数fun的功能是:计算小于形 return h 参k的最大的10个能被13或17整除的自然数之和。k的 值由主函数传入,若k的值为500,则函数值为4622。 outlink(NODE·h,FILE·pf) 请改正程序中的错误,使程序能输出正确的结果。 NODE·p 注意:不要改动main函数,不得增行或删行,也不得 p=h->next; 更改程序的结构 fprintf(pf, nTHE LIST: nin HEAD"); i int m=0, mc=0, fprintf(pf, " n") while(k>=2)&&(mc<10) maino 率事布春摩率率事布事* found*本事布事率事布*/ NODE·head;int f((k%13=0)(k%17=0) head=creatlink( 12, 100) outlink(head, stdout m=fun(head) printf("THE RESULT n); outresult( m, stdout) 16、给定程序MODC中函数fn的功能是:从N个字符 串中找出最长的那个串,并将其地址作为函数值返回。各字 main() 符串在主函数中输入,并放入一个字符串数组中。 请改正程序中的错误,使它能得出正确结果。 printf("%d\n", fun(500)); 注意:不要改动main函数,不得增行或删行,也不 更改程序的结构 #include <stdio. h> 15、给定程序MODC是建立一个带头结点的单向链表,并# include< string. h> 用随机函数为各结点数据域赋值。函数fun的作用是求出单 #define N5 向链表结点(不包括头结点)数据域中的最大值并且作为函# define M81 数值返回。 /率事布枣事事事事 found事事本率事事率*/ 请改正函数fun中指定部位的错误,使它能得出正确的fum(char(*sqM] 结果 注意:不要改动main函数,不得增行或删行,也不得更 sp=sqo]: 改程序的结构! for(=0; K<N i++) if(strlen( sp)<strlen(sql) #include <stdlib. h> typedef struct a 率市率布率事 found事率率率布枣事事*/ return struct aa *next. i NODE; fun( Node *h) i char strNJIM, *longest; int 1 printf("Enter %d lines: \n",N); NODE "p for(F0 率率布布事率率事 found事事*布率**/ printf("wn The String : n", N); for(F0; K<N; i++)puts(str); while(p) longest=fun(str); i if(p->data>max printf("w The longest string: n"); puts(longest); max=p->data 率亭事事事摩 found事事率率布事**/ 17、给定程序 MODIL.C的功能是:读入一个英文文本行 将其中每个单词的第一个字母改成大 后输出此文本行 (这里的“单词”是指由空格隔开的字符串)。 例如,若输入: I am a student to take the examination lt(nt S, FILE *pf) 则应输出: I Am a Student To The i fprintf(pf, "n The max in link Examination 请改正程序中的错误,使程序能得出正确的结果。 NODE *creatlink( int n, int m) 注意:不要改动main函数,不得增行或删行,也不得 NODE·h,*p,”s,*q; 更改程序的结构! h=p=(NODE")malloc(sizeof(NODE)), h->data=9999 #include <ctype. h> for(=1;i<=n,计+) #include <string.h> i S=(NODE")malloc(sizeof(NODE)); /*布布亭事* found事事春事事**事*/ S->dataFrando%m, s->next=p->next include <stdio h>
宏为世纪教育 www.greatc.cn 4 月上机考试题库 改错题 4 printf("The result is: %ld\n", t); } 14、给定程序 MODI1.C 中函数 fun 的功能是:计算小于形 参 k 的最大的 10 个能被 13 或 17 整除的自然数之和。k 的 值由主函数传入,若 k 的值为 500,则函数值为 4622。 请改正程序中的错误,使程序能输出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include <stdio.h> int fun( int k ) { int m=0, mc=0, j ; while ((k >= 2) && (mc < 10)) { /************found************/ if ((k%13 = 0) || (k%17 = 0)) { m = m+ k; mc++; } k--; } return m; /************found************/ _____ main ( ) { printf("%d\n", fun (500)); } 15、给定程序 MODI1.C 是建立一个带头结点的单向链表, 并 用随机函数为各结点数据域赋值。函数 fun 的作用是求出单 向链表结点(不包括头结点)数据域中的最大值,并且作为函 数值返回。 请改正函数 fun 中指定部位的错误, 使它能得出正确的 结果。 注意: 不要改动 main 函数, 不得增行或删行, 也不得更 改程序的结构! #include <stdio.h> #include <stdlib.h> typedef struct aa { int data; struct aa *next; } NODE; fun ( NODE *h ) { int max=-1; NODE *p; /***********found**********/ p=h ; while(p) { if(p->data>max ) max=p->data; /***********found**********/ p=h->next ; } return max; } outresult(int s, FILE *pf) { fprintf(pf,"\nThe max in link : %d\n",s);} NODE *creatlink(int n, int m) { NODE *h, *p, *s, *q; int i, x; h=p=(NODE *)malloc(sizeof(NODE));h->data=9999; for(i=1; i<=n; i++) { s=(NODE *)malloc(sizeof(NODE)); s->data=rand()%m; s->next=p->next; p->next=s; p=p->next; } p->next=NULL; return h; } outlink(NODE *h, FILE *pf) { NODE *p; p=h->next; fprintf(pf,"\nTHE LIST :\n\n HEAD "); while(p) { fprintf(pf,"->%d ",p->data); p=p->next; } fprintf(pf,"\n"); } main() { NODE *head; int m; head=creatlink(12, 100); outlink(head , stdout); m=fun(head); printf("\nTHE RESULT :\n"); outresult(m, stdout); } 16、给定程序 MODI1.C 中函数 fun 的功能是:从 N 个字符 串中找出最长的那个串,并将其地址作为函数值返回。各字 符串在主函数中输入,并放入一个字符串数组中。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构。 #include <stdio.h> #include <string.h> #define N 5 #define M 81 /**********found**********/ fun(char (*sq)[M]) { int i; char *sp; sp=sq[0]; for(i=0;i<N;i++) if(strlen( sp)<strlen(sq[i])) sp=sq[i] ; /**********found**********/ return sq; } main() { char str[N][M], *longest; int i; printf("Enter %d lines :\n",N); for(i=0; i<N; i++) gets(str[i]); printf("\nThe N string :\n",N); for(i=0; i<N; i++) puts(str[i]); longest=fun(str); printf("\nThe longest string :\n"); puts(longest); } 17、给定程序 MODI1.C 的功能是:读入一个英文文本行, 将其中每个单词的第一个字母改成大写,然后输出此文本行 (这里的“单词”是指由空格隔开的字符串)。 例如,若输入:I am a student to take the examination., 则应输出: I Am A Student To Take The Examination.。 请改正程序中的错误,使程序能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include <ctype.h> #include <ctype.h> #include <string.h> /************found************/ include <stdio.h>
为世纪教育www.greatc.cn4月上机考试题库改错题 /率率布率本事事摩 found率*事本布事事/ 率市序率率布摩* found·率事事亭事事摩率 i int k=0 al=k-a2*10 for( '*p; p++) if(k%==0&&a2=5)(k%3==0&&al==5) bp=k,i++;} else if (*pI=') /率率率事事率 found·率率事事率率布事事 i k=1; *p=toupper(*p);i return k i int a[100], k, m: i char chrstr[ 81: m=fun( a ) printf(" nPlease enter an English text line: ") printf("The result is: In"); gets( chrstr ) for(k=0; k<m; k++) printf("%4d", a[k]); printf("\n"); printf( "IninBefore changing: n %s", chrstr ) upfst( chrstr ) printf( "nAfter changing: n %sun", chrstr ) 20、给定程序 MODILO中函数fun的功能是:交换主函数 中两个变量的值。例如:若变量a中的值原为8b中的值为 3。程序运行后a中的值为3,b中的值为8。 18、给定程序 MODIL.C中函数fin的功能是:从n形参) 请改正程序中的错误,使它能计算出正确的结果 个学生的成绩中统计出低于平均分的学生人数,此人数由函 注意:不要改动main函数,不得增行或删行,也不得 数值返回,平均分存放在形参aver所指的存储单元中。 更改程序的结构 例如,若输入8名学生的成绩:80.5607290.5# include< stdio. h> 9851.58864则低于平均分的学生人数为:4(平*春事fUnd**春 均分为:75.5625) int fun(int x, int y) 请改正程序中的错误 注意:不要改动main 不得增行或删行,也不得 能统计出正确的结果 更改程序的结构! /率事* found #include <stdio. h> tx x-y-t #define n 20 int fun( float *s, int n, float*aver maino float ave t=0.0 int count=o.ki for(k=0; k<n; k++) a=8,b=3 率布布亭率率布布率率 found*率布事事率率布事率率事 fun(&a, &b); printf("%d, %d\n", a, b); ave= t/n if(s[ i]< ave )count++ 21、给定程序 MODILO中fn函数的功能是:求出以下分 /率率事布*率布布事亭事布 found市事事率率布事**和布/ 数序列的前n项之和。 aver 23581321 return count maino 和值通过函数值返回main函数 i float s[30),aver 例如,若n=5,则应输出:8.391667 请改正程序中的错误,使它能得出正确的结果 printf ("lnPlease enter m: " ) scanf ("%d",&m) 注意:不要改动main函数,不得增行或删行,也不得 printf("nPlease enter %d mark: n",m); 更改程序的结构! for(i=0; i<m; i++)scanf(%f,s+1) #include <stdio. h> printi(" n The number of students:%dn",fun(s,m,/事* found*春事 &aver ) fun(int n printf( "Ave=%fn", aver int a=2.b= double s=0.0: for(k=1; k<=n; k++) 19、给定程序MOD1C中函数fun的功能是:从整数1到 s=s+1.0*a/b; 55之间,选出能被3整除、且有一位上的数是5的那些数 /*事事率布率事事 found*事事**事事率率/ 并把这些数放在b所指的数组中,这些数的个数作为函数值 c=aa+=b; b+= 返回。规定,函数中a1放个位数,a放十位数。 请改正程序中的错误,使它能得出正确结果 return(s); 注意:不要改动main函数,不得增行或删行,也不得} 更改程序的结构。 main() #include <stdio. h> i int n=5 fun( int *b) printf("nThe val anction is: %If\n". fun i int k, al, a2, F=0; for(k=10,k<=55,k++){
宏为世纪教育 www.greatc.cn 4 月上机考试题库 改错题 5 /************found************/ upfst ( char p ) { int k=0; for ( ; *p; p++ ) if ( k ) { if ( *p == ' ' ) k = 0; } else if ( *p != ' ' ) { k = 1; *p = toupper( *p ); } } main( ) { char chrstr[81]; printf( "\nPlease enter an English text line: " ); gets( chrstr ); printf( "\n\nBefore changing:\n %s", chrstr ); upfst( chrstr ); printf( "\nAfter changing:\n %s\n", chrstr ); } 18、给定程序 MODI1.C 中函数 fun 的功能是:从 n(形参) 个学生的成绩中统计出低于平均分的学生人数,此人数由函 数值返回,平均分存放在形参 aver 所指的存储单元中。 例如,若输入 8 名学生的成绩:80.5 60 72 90.5 98 51.5 88 64 则低于平均分的学生人数为: 4 (平 均分为:75.5625 )。 请改正程序中的错误,使它能统计出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include <stdio.h> #define N 20 int fun ( float *s, int n, float *aver ) { float ave, t = 0.0 ; int count = 0, k, i ; for ( k = 0 ; k < n ; k++ ) /**************found**************/ t = s[k] ; ave = t / n ; for ( i = 0 ; i < n ; i++ ) if ( s[ i ] < ave ) count++ ; /**************found**************/ *aver = Ave ; return count ; } main() { float s[30], aver ; int m, i ; printf ( "\nPlease enter m: " ) ; scanf ("%d", &m ) ; printf ( "\nPlease enter %d mark :\n ", m ) ; for( i = 0 ; i < m ; i++ ) scanf ( "%f", s + i ) ; printf( "\nThe number of students : %d \n" , fun ( s, m, &aver ) ); printf( "Ave = %f\n", aver ) ; } 19、给定程序 MODI1.C 中函数 fun 的功能是:从整数 1 到 55 之间,选出能被 3 整除、且有一位上的数是 5 的那些数, 并把这些数放在 b 所指的数组中,这些数的个数作为函数值 返回。规定,函数中 a1 放个位数,a2 放十位数。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构。 #include <stdio.h> fun( int *b ) { int k,a1,a2,i=0; for(k=10; k<=55; k++) { /************found************/ a2=k/1O; a1=k-a2*10; if((k%3==0 && a2==5)||(k%3==0 && a1==5)) { b[i]=k; i++; } } /************found************/ return k; } main( ) { int a[100],k,m; m=fun( a ); printf("The result is :\n"); for(k=0; k<m; k++) printf("%4d",a[k]); printf("\n"); } 20、给定程序 MODI1.C 中函数 fun 的功能是: 交换主函数 中两个变量的值。例如: 若变量 a 中的值原为 8,b 中的值为 3。程序运行后 a 中的值为 3, b 中的值为 8。 请改正程序中的错误, 使它能计算出正确的结果。 注意: 不要改动 main 函数, 不得增行或删行, 也不得 更改程序的结构! #include <stdio.h> /*********found**********/ int fun(int x,int y) { int t; /*********found**********/ t=x;x=y;y=t; } main() { int a,b; a=8;b=3; fun(&a,&b); printf("%d, %d\n",a,b); } 21、给定程序 MODI1.C 中 fun 函数的功能是:求出以下分 数序列的前 n 项之和。 2 3 5 8 13 21 ┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , …… 1 2 3 5 8 13 和值通过函数值返回 main 函数。 例如,若 n = 5,则应输出: 8.391667。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include <stdio.h> /**************found**************/ fun (int n ) { int a = 2, b = 1, c, k ; double s=0.0 ; for ( k = 1; k <= n; k++ ) { s = s + 1.0 * a / b ; /**************found**************/ c = a; a += b; b += c; } return(s) ; } main( ) { int n = 5 ; printf( "\nThe value of function is: %lf\n", fun ( n ) ) ; }