为世纪教育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 {sH++; /率和布事亭事事布事事* found*本事事率*布/ while(tt) /率事事*布枣亭* found事事事事率率布事事* t++ for(i=100,isl) 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的功能是:读入一个字 符串(长度 注意:不要改动main函数,不得增行或删行,也不得 oid fun( char tI) 更改程序的结构 #include char c. fun(char·p) max,q /率率市事率布布 found市事事**布事事率率/ max=p] for( i=strlen( t ); 1; i--) while( p= for(j=0; jp) 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 /**********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 fun( char *p ) { char max,*q; int i=0; max=p[i]; while( p[i]!=0 ) { if( maxp ) { *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 /************found************/ fun ( int m ) { double y = 0, d ; int i ; /************found************/ for( i = 100, i 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 输出结果: upper=6, lower=8 double fun( int m 请改正程序中的错误,使它能计算出正确的结果 i double y=1.0 注意:不要改动main函数,不得增行或删行,也不得 更改程序的结构! /率布率和布枣事率布事 found事事事率事事率率事事事/ #include for(i=2; i=a'&&*s 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 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 /**********found**********/ void fun ( char *s, int a, int b ) { while ( *s ) { if ( *s >= 'A' && *s = 'a' && *s 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 double fun ( int m ) { double y = 1.0 ; int i ; /**************found**************/ for(i = 2 ; i #include void fun(char *p ,char *q, char *c) { /************found************/ int k = 1; /************found************/ while( *p != *q ) { if( *p 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 Pi=3.140578。 #include 1121231234 void fun( char *a, char *b, char *c) =1+-+-×-+-X-x-+-X-×-X-+ 23353573579 请改正程序中的错误,使它能得出正确结果。 j=strlen(b) 注意:不要改动main函数,不得增行或删行,也不得*事春事 found*率幸春事* 更改程序的结构 #include i ch=b0: b0=b0: b0=ch; #include 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 注意:不要改动main函数,不得增行或删行,也不得 int fun(int m) 更改程序的结构! i int i, k #include 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 #include 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 int fun(int m) { int i, k ; for (i = m + 1 ; ; i++) { for (k = 2 ; k #include 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 /************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 15、给定程序MODC是建立一个带头结点的单向链表,并# include 用随机函数为各结点数据域赋值。函数fun的作用是求出单 #define N5 向链表结点(不包括头结点)数据域中的最大值并且作为函# define M81 数值返回。 /率事布枣事事事事 found事事本率事事率*/ 请改正函数fun中指定部位的错误,使它能得出正确的fum(char(*sqM] 结果 注意:不要改动main函数,不得增行或删行,也不得更 sp=sqo]: 改程序的结构! for(=0; K 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; Kdata>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 for(=1;i i S=(NODE")malloc(sizeof(NODE)); /*布布亭事* found事事春事事**事*/ S->dataFrando%m, s->next=p->next include
宏为世纪教育 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 int fun( int k ) { int m=0, mc=0, j ; while ((k >= 2) && (mc #include 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; idata=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 #include #define N 5 #define M 81 /**********found**********/ fun(char (*sq)[M]) { int i; char *sp; sp=sq[0]; for(i=0;i #include #include /************found************/ include
为世纪教育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 9851.58864则低于平均分的学生人数为:4(平*春事fUnd**春 均分为:75.5625) int fun(int x, int y) 请改正程序中的错误 注意:不要改动main 不得增行或删行,也不得 能统计出正确的结果 更改程序的结构! /率事* found #include 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 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 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 #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 fun( int *b ) { int k,a1,a2,i=0; for(k=10; k /*********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 /**************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 ) ) ; }
为世纪教育www.greatc.cn4月上机考试题库改错题 母不分大、小写 22、给定程序MODC中函数fn的功能是:利用插入排 例如:若输入: THIs is a boot,则输出应该是:1、0 序法对字符串中的字符按从小到大的顺序进行排序。插入法2、2、0 的基本算法是:先对字符串中的头两个元素进行排序。然后 请改正程序中的错误,使它能得出正确的结果 把第三个字符插入到前两个字符中,插入后前三个字符依然 意:不要改动main函数,不得增行或删行,也不得 第四个字符插入到前三个字符中 待排序更改程序的结构! 的字符串已在主函数中赋予 #include 请改正程序中的错误,使它能得出正确结果 fun( char int num[5]) 注意:不要改动main函数,不得增行或删行,也不得intk,i=5 更改程序的结构 for(k=0, k #include m[=0 #define n 80 for;*s, s++) void insert(char *aa) 率率布率事事 found摩率率率事**/ found事事事率有 switch(s) n=strlen[ aa f case 'a': case 'A:F0, break for(Fl,i=0) numo++ i char sl[81]: int numl5],i, printf("nPlease enter a string: ") gets(sl ) i char aNF"QWERTYUIOPASDFGHJKLMNBVCXZ for(F0; i 请改正程序中的错误,使它能得出正确结果 #include 注意:不要改动main函数,不得增行或删行,也不得事事 found*幸幸春事* 更改程序的结构 #include #include /*率事率*布fOud市事事麻*/ d= strlen(s) double fun( double a, doule xo) for(i=0;id;计++)t=s[ for (i=0; i0.00001) fun(ax1) maino else y= char s[100], t( 100 printf("InPlease enter string S: ") scanf("%s",S); nain() i double x; printf("nThe result is: %s\n",t); printf("Enter x: ") scanf("%lf, &x); printf("The square root of %lf is %lf\n"x, fun(x, 1.0)), 26、给定程序 MODIL.O中函数fn的功能是:将十进制正 整数m转换成k(2≤k9)进制数,并按高位到低位顺序输出 24、给定程序 MODILO中函数fun的功能是:统计字符串 例如,若输入8和2,则应输出1000即十进制数8转换 中各元音字母(即:A、E、I、O、U)的个数。注意:字成二进制表示是1000
宏为世纪教育 www.greatc.cn 4 月上机考试题库 改错题 6 22、给定程序 MODI1.C 中函数 fun 的功能是:利用插入排 序法对字符串中的字符按从小到大的顺序进行排序。插入法 的基本算法是:先对字符串中的头两个元素进行排序。然后 把第三个字符插入到前两个字符中,插入后前三个字符依然 有序;再把第四个字符插入到前三个字符中,……。待排序 的字符串已在主函数中赋予。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构。 #include #include #define N 80 void insert(char *aa) { int i,j,n; char ch; /**********found**********/ n=strlen[ aa ]; for( i=1; i=0) && ( ch #include /**********found**********/ double fun(double a, dounle x0) { double x1, y; x1=(x0+ a/x0)/2.0; /**********found**********/ if( fabs(x1-xo)>0.00001 ) y=fun(a,x1); else y=x1; return y; } main( ) { double x; printf("Enter x: "); scanf("%lf",&x); printf("The square root of %lf is %lf\n",x,fun(x,1.0)); } 24、给定程序 MODI1.C 中函数 fun 的功能是:统计字符串 中各元音字母(即:A、E、I、O、U)的个数。注意:字 母不分大、小写。 例如:若输入:THIs is a boot,则输出应该是:1、0、 2、2、0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include fun ( char *s, int num[5] ) { int k, i=5; for ( k = 0; k= 0) num[i]++; } } main( ) { char s1[81]; int num1[5], i; printf( "\nPlease enter a string: " ); gets( s1 ); fun ( s1, num1 ); for ( i=0; i #include /************found************/ void fun (char s, char t) { int i, d; d = strlen(s); for (i = 0; i<d; i++) t[i] = s[i]; for (i = 0; i<d; i++) t[d+i] = s[d-1-i]; /************found************/ t[2*d-1] = '\0'; } main() { char s[100], t[100]; printf("\nPlease enter string S:"); scanf("%s", s); fun(s, t); printf("\nThe result is: %s\n", t); } 26、给定程序 MODI1.C 中函数 fun 的功能是: 将十进制正 整数 m 转换成 k(2≤k≤9)进制数, 并按高位到低位顺序输出。 例如,若输入 8 和 2,则应输出 1000(即十进制数 8 转换 成二进制表示是 1000)
eatc.cn4月上机考试题库改错题 请改正fun函数中的错误,使它能得出正确的结果 注意:不要改动main函数。不得增行或删行,也不得 outlink(NODE+h,FILE*p 更改程序的结构! i NODE*p #include next fprintf(pf, " \n\nTHE LIST nn HEAD"); void fun( int m, int k while(p) i fprintf(pf, ->%d",p->data ) p=p->next; 3 int aa[20,1; fprintf(pf, "n"); for(i=0,m,计+) outresult(int S, FILE "pf) 率率布布事本事事布 found布事率事春事事事/ i fprintf(pf, " \n The sum of even numbers %d\n"S); aa= m/k NODE·head; head=creatlink( 12 ) for(; I, i--) ead ->data=9000: 率率布布事率率率布 found事亭亭率事布事事 aa[1); } printf("wThe result n"); outresult(even, stdout) maino 28、给定程序 MODILO中函数fun的功能是:对N名学生 printf("nPlease enter a number and a base: n"); 的学习成绩,按从高到低的顺序找出前m(m10)名学生来 scanf("%d %d",&n, &b); 并将这些学生数据存放在一个动态分配的连续存储区中, fun(n, b); 此存储区的首地址作为函数值返回 请改正函数fun中指定部位的错误,使它能得出正确的 结果 注意:不要改动main函数,不得增行或删行,也不得更 27、给定程序MODC是建立一个带头结点的单向链表,改程序的结构 并用随机函数为各结点赋值。函数fumn的功能是将单向链表 include #include STU 'fun(stu al, int m) typedef struct aa f STU bIN],*t: i int data; struct aa next: NODE i,i, k; /率布率布布 found*事事率事事事事率/ (STU*)calloc(sizeof(STU), m) NODE for(=0,KN,计++)b=a; for(k=0; kb0.s) 率布率事事 found· sum+=p->data; t(kBo; 你率率布布事*率布率 found*事事率事事事摩率率/ b]s=0; p=h->next; return sum. outresult(StU al, FILe pf) NODE *creatlink(int n) t NODE h, *p,*s, *q: for(i=0,idataran%16 STU >nexEp->next, aN]={{"A01"81},{"AO2",89},{"A03",66},{"A04"87},"A0 "A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10°,71}} p->next=NULL; return STU· pOrder
宏为世纪教育 www.greatc.cn 4 月上机考试题库 改错题 7 请改正 fun 函数中的错误,使它能得出正确的结果。 注意:不要改动 main 函数。不得增行或删行,也不得 更改程序的结构! #include #include void fun( int m, int k ) { int aa[20], i; for( i = 0; m; i++ ) { /**********found**********/ aa[i] = m/k; m /= k; } for( ; i; i-- ) /**********found**********/ printf( "%d", aa[ i ] ); } main() { int b, n; printf( "\nPlease enter a number and a base:\n" ); scanf( "%d %d", &n, &b ); fun( n, b ); printf("\n"); } 27、给定程序 MODI1.C 是建立一个带头结点的单向链表, 并用随机函数为各结点赋值。函数 fun 的功能是将单向链表 结点 (不包括头结点)数据域为偶数的值累加起来, 并且作 为函数值返回。 请改正函数 fun 中指定部位的错误, 使它能得出正确的 结果。 注意: 不要改动 main 函数, 不得增行或删行, 也不得更 改程序的结构! #include #include typedef struct aa { int data; struct aa *next; }NODE; int fun(NODE *h) { int sum = 0 ; NODE *p; /***********found**********/ p=h; while(p) { if(p->data%2==0) sum +=p->data; /***********found**********/ p=h->next; } return sum; } NODE *creatlink(int n) { NODE *h, *p, *s, *q; int i, x; h=p=(NODE *)malloc(sizeof(NODE)); for(i=1; idata=rand()%16; 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 ,"\n\nTHE LIST :\n\n HEAD " ); while(p) { fprintf(pf ,"->%d ",p->data ); p=p->next; } fprintf (pf,"\n"); } outresult(int s, FILE *pf) { fprintf(pf,"\nThe sum of even numbers : %d\n",s);} main() { NODE *head; int even; head=creatlink(12); head->data=9000; outlink(head , stdout); even=fun(head); printf("\nThe result :\n"); outresult(even, stdout); } 28、给定程序 MODI1.C 中函数 fun 的功能是: 对 N 名学生 的学习成绩,按从高到低的顺序找出前 m(m≤10)名学生来, 并将这些学生数据存放在一个动态分配的连续存储区中, 此存储区的首地址作为函数值返回。 请改正函数 fun 中指定部位的错误, 使它能得出正确的 结果。 注意: 不要改动 main 函数, 不得增行或删行, 也不得更 改程序的结构! #include #include #include #define N 10 typedef struct ss { char num[10]; int s; } STU; STU *fun(STU a[], int m) { STU b[N], *t; int i,j,k; /**********found**********/ t=(STU *)calloc(sizeof(STU),m) for(i=0; i b[j].s) j=i; /**********found**********/ t(k)=b(j); b[j].s=0; } return t; } outresult(STU a[], FILE *pf) { int i; for(i=0; i<N; i++) fprintf(pf,"No = %s Mark = %d\n", a[i].num,a[i].s); fprintf(pf,"\n\n"); } main() { STU a[N]={ {"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A0 5",77}, {"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} } ; STU *pOrder;
为世纪教育www.greatc.cn4月上机考试题库改错题 Int 1, m >data-rando%on S->next=p->next, printf("***** The Original data ****n); p->nexts P-p outresult(a, stdout) printf("n Give the number of the students who have better /**********found***********/ return p, while( m>10) outlink(NODE·h) i printf("\nGive the number of the students who have better NODE "p ") scanf("%d", &m) printf("n\nTHE LIST nn HEAD"); while(p) pOrderfun(a, m); i printf("->%d",p->data); printf("***** THE RESULT*****n"); intf("The for(F=0, 1+A411+A2 1+A1 int fun( int m 例如,若n=10,则应输出:0617977。 i int k=2 请改正程序中的语法错误,使它能得出正确的结果。 while(k 你率率率布事率事春市 found·事率事春摩率和事 /率率布事率事布* found*本布事率/ if(m=k) int fun( int n) se return 0. 事枣* found*率事事事事春布事率事/ A=1.0(1+A), printf("nPlease enter n: ) scanf( " %d",&n ) if( fun( n))printf("YES In") else printf("NO! \ n"); i int n: printf("plEase enter n: " scanf("%d",&n 30、给定程序 MODILO中的函数 Creatlink的功能是创建带 printf("A%d=%fn,n, fun(n)) 头结点的单向链表,并为各结点数据域赋0到m-1的值。 请改正函数 Creatlink中指定部位的错误,使它能得出 正确的结果 32、给定程序 MODILO中函数fun的功能是:依次取出字 注意:不要改动main函数,不得增行或删行,也不得更符串中所有数字字符,形成新的字符串,并取代原字符串。 改程序的结构 请改正函数fun中指定部位的错误,使它能得出正确的 #include 结果 #include 注意:不要改动main函数,不得增行或删行,也不得更 typedef struct a 改程序的结构! i int data #include void fun(char·s) NODE, NODE"Creatlink(int n, int m) t NODE *h=NULL, *p, *s, ifs[=0&&s[=9) Int found事率率率布事事*率/ p=(NODE )malloc(sizeof(NODE)); /率事事事事* found事序*率事事 p->next=NULL, } for(i=1;i<=n;计+) mainO t S=(NODE")malloc(sizeof(NODE)), f char item[80]
宏为世纪教育 www.greatc.cn 4 月上机考试题库 改错题 8 int i, m; printf("***** The Original data *****\n"); outresult(a, stdout); printf("\nGive the number of the students who have better score: "); scanf("%d",&m); while( m>10 ) { printf("\nGive the number of the students who have better score: "); scanf("%d",&m); } pOrder=fun(a,m); printf("***** THE RESULT *****\n"); printf("The top :\n"); for(i=0; i int fun ( int m ) { int k = 2; while ( k #include typedef struct aa { int data; struct aa *next; } NODE; NODE *Creatlink(int n, int m) { NODE *h=NULL, *p, *s; int i; /**********found***********/ p=(NODE )malloc(sizeof(NODE)); h=p; p->next=NULL; for(i=1; idata=rand()%m; s->next=p->next; p->next=s; p=p->next; } /**********found***********/ return p; } outlink(NODE *h) { NODE *p; p=h->next; printf("\n\nTHE LIST :\n\n HEAD "); while(p) { printf("->%d ",p->data); p=p->next; } printf("\n"); } main() { NODE *head; head=Creatlink(8,22); outlink(head); } 31、给定程序 MODI1.C 中函数 fun 的功能是:根据整型形 参 n,计算如下公式的值。 例如,若 n=10,则应输出: 0.617977。 请改正程序中的语法错误,使它能得出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include /************found************/ int fun ( int n ) { float A=1; int i; /************found************/ for (i=2; i void fun(char *s) { int i,j; for(i=0,j=0; s[i]!='\0'; i++) if(s[i]>='0' && s[i]<='9') /**********found**********/ s[j]=s[i]; /**********found**********/ s[j]="\0"; } main() { char item[80];
为世纪教育www.greatc.cn4月上机考试题库改错题 printf("\eNter a string :") gets(item); return sum printf("nn The string is V"%sl"\n", item); fun(item) main( printf("nln The string of changing is 1"%s\"n", item ) 33、假定整数数列中的数不重复,并存放在数组中。给定程 printf("%f\n", fun(n)); 序 MODIL. C中函数fun的功能是:删除数列中值为x的元} 素。n中存放的是数列中元素的个数 请改正程序中的错误,使它能得出正确结果 35、给定程序MODC中函数fun的功能是:将s所指字 注意:不要改动main函数,不得增行或删行,也不得串中最后一次出现的与t所指字符串相同的子串替换成 更改程序的结校 口2所指字符串所形成的新串放在w所指的数组中。在此处 #include 要求t1和t所指字符串的长度相同。 #definen 20 例如,当s所指字符串中的内容为:" abcdabfabc",tl un(int a, int n, int x) 所指子串中的内容为:"ab,t所指子串中的内容为:"99 时,结果,在w所指的数组中的内容应为:" abcdab a nx 请改正程序中的错误,使它能得出正确的结果 while( xI=alp)) 注意:不要改动main函数,不得增行或删行,也不得 更改程序的结构 /*率事事率*布布 found布*事事*/ #include return-1 #include int fun(char *s, char *tl, char *t2, char *w) for(i=p;i #include S0=sI: sI=s2: s2=S: /率率布事*布* found*率率布事事率率事布事率 率布和事率率布布摩 found事率事布摩事布 t int a, b, c, k; double S
宏为世纪教育 www.greatc.cn 4 月上机考试题库 改错题 9 printf("\nEnter a string : ");gets(item); printf("\n\nThe string is : \"%s\"\n",item); fun(item); printf("\n\nThe string of changing is : \"%s\"\n",item ); } 33、假定整数数列中的数不重复,并存放在数组中。给定程 序 MODI1.C 中函数 fun 的功能是:删除数列中值为 x 的元 素。n 中存放的是数列中元素的个数。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构。 #include #define N 20 fun(int *a,int n,int x) { int p=0,i; a[n]=x; while( x!=a[p] ) p=p+1; /**********found**********/ if(P==n) return -1; else { for(i=p;i #include /************found************/ fun(int n) { double sum, s0, s1, s2, s; int k; sum = 1.0; if (n #include int fun (char *s, char *t1, char *t2 , char *w) { int i; char *p , *r, *a; strcpy( w, s ); /************found************/ while ( w ) { p = w; r = t1; while ( *r ) /************found************/ IF ( *r == *p ) { r++; p++; } else break; if ( *r == '\0' ) a = w; w++; } r = t2; while ( *r ){ *a = *r; a++; r++; } } main() { char s[100], t1[100], t2[100], w[100]; 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("\nThe result is : %s\n", w); } else printf("\nError : strlen(t1) != strlen(t2)\n"); } 36、给定程序 MODI1.C 中函数 fun 的功能是:求出以下分 数序列的前 n 项之和。和值通过函数值返回到 main 函数。 2 3 5 8 13 21 ┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , ┄┄ , …… 1 2 3 5 8 13 例如,若 n = 5,则应输出:8.391667。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动 main 函数,不得增行或删行,也不得 更改程序的结构! #include /************found************/ void fun ( int n ) { int a, b, c, k; double s;
为世纪教育www.greatc.cn4月上机考试题库改错题 参m,计算如下公式的值 for(k=1;k printf("nThe value of function is: %lfn", fun( n)): double fun( int m double t=l0 37、给定程序MOD1C中函数fun的功能是:计算n!。 例如,给n输入5,则输出120.00000 for(i=2,i double fun( int n) /**事布率 found事率本事率事/ return 1.0 while( n >1&& n 请改正程序中的错误,使它能得出正确的结果 #define M 注意:不要改动main函数,不得增行或删行,也不得 int aM]M]={0 更改程序的结构! /*亭事事事 found*本事事布率本事/ #include #include void fun(char *s, char * t for(=0;j<m; j++) for(k=0; k<m; k++) 你率率布布率率布 found中事事事事事摩率率布摩事/ 体布亭事市事事率布布 found*率率事*本事/ for(=0,i<sl;++) main to=ssl-i]; printf("Enter n: " ) scanf ("%d", &n for(F0; i<sl; 1++) fun (a, n) for(i=0; i<n; 1++) nf("%4d",叫[]); maino printf("In); i char s[100), t[ 100]: ase enter str printf("The result is: %sIn",t) 41、给定程序 MODILO中函数fun的功能是:先从键盘上 输入一个3行3列矩阵的各个元素的值,然后输出主对角线 39、给定程序 MODILO中fun函数的功能是:根据整型形元素之和
宏为世纪教育 www.greatc.cn 4 月上机考试题库 改错题 10 s = 0.0; a = 2; b = 1; for ( k = 1; k double fun ( int n ) { double result = 1.0 ; /************found************/ if n = = 0 return 1.0 ; while( n >1 && n #include void fun (char *s, char *t) { /************found************/ int i; sl = strlen(s); for (i=0; i double fun( int m ) { double t = 1.0; int i; for( i = 2; i #define M 10 int a[M][M] = {0} ; /**************found**************/ void fun(int **a, int m) { int j, k ; for (j = 0 ; j < m ; j++ ) for (k = 0 ; k < m ; k++ ) /**************found**************/ a[j][k] = k * j ; } main ( ) { int i, j, n ; printf ( " Enter n : " ) ; scanf ("%d", &n ) ; fun ( a, n ) ; for ( i = 0 ; i < n ; i++) { for (j = 0 ; j < n ; j++) printf ( "%4d", a[i][j] ) ; printf ( "\n" ) ; } } 41、给定程序 MODI1.C 中函数 fun 的功能是: 先从键盘上 输入一个 3 行 3 列矩阵的各个元素的值, 然后输出主对角线 元素之和