计算机二级C语言考试改错题

上传人:re****.1 文档编号:579164418 上传时间:2024-08-26 格式:PDF 页数:74 大小:8.65MB
返回 下载 相关 举报
计算机二级C语言考试改错题_第1页
第1页 / 共74页
计算机二级C语言考试改错题_第2页
第2页 / 共74页
计算机二级C语言考试改错题_第3页
第3页 / 共74页
计算机二级C语言考试改错题_第4页
第4页 / 共74页
计算机二级C语言考试改错题_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《计算机二级C语言考试改错题》由会员分享,可在线阅读,更多相关《计算机二级C语言考试改错题(74页珍藏版)》请在金锄头文库上搜索。

1、改 错 题第 01套给定程序MODU.C中 函 数 fu n 的功能是:计算n!。例 如 , 给 n 输入5 , 则输出120.000000。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include double fun ( int n ) double result = 1.0 ;/*found亭 * * X*/if n = = 0return 1.0;while( n 1 & n 170 )/*ound字 * * * * * * * * * * * /result *= n-return result;改为:

2、if(n=0)改为:result *= n -;main () int n ;printf(nInput N:M) ;scanfCd, &n);printf(nnn%d! =%lftnn, n, fun(n);解题思路:第一处:条件语句书写格式错误,应改为:if(n=0)。第二处:语句后缺少分号。第 02 套给定程序MODU.C中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行,也不得更改程序的结构!给定源程序:#include void fun(char *s

3、) int i,j;for(i=O,j=O; si!=W; i+)if(si=,0, & si=9)/* fou nd*/sj=si;/* fou nd*/sj=O;改为:sj+=si;改为:sIj=O;.main() char item80;printfCXnEnter a string : n);gets(item);printf(MnnThe string is : ,%snn,item);fun(item);printf(MnnThe string of changing is : n%sun,item );解题思路:第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串,程序中

4、是使用变量j来控制新字符串的位置,所以应改为:sj+=si;。第二处:置新字符串的结束符,所以应改为:sj=(y; .第 03 套给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0 到 m-1的值。请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行, 也不得更改程序的结构!给定源程序:#include #include typedef struct aa int data;struct aa *next; NODE;NODE *Creatlink(int n, int m) NODE

5、 *h=NULL, *p,次s;int i;/* fou nd*/p=(NODE )malloc(sizeof(NODE);h=p;p-next=NULL;for(i=l; idata=rand()%m; s-next=p-next;p-next=s; p=p-next;return p;outlink(NODE *h) NODE *p;p=h-next;printf(nnTHE LIST :nn HEAD );while(p) printf(M-%d M,p-data);改为:p=(NODE *)malloc(sizeof(NODE);改为:return h;p=p-next;printf(

6、nnn);main() NODE *head;head=Creatlink(8,22);outlink(head);解题思路:第一处:指向刚分配的结构指针,所以应改为:p=(NODE *)malloc(sizeof(NODE);第二处:在动态分配内存的下一行语句是,使用临时结构指针变量h 保存p 指针的初始位置,最后返回不能使用P,是因为p 的位置已经发生了变化,所以应改为返回h。第 04 套给定程序MODU.C中函数fun的功能是:在字符串的最前端加入n 个* 号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动

7、main函数, 不得增行或删行, 也不得更改程序的结构!给定源程序:#include #include void fun ( char s, int n )(char a80, *p;int i;/* fou nd*/s=p;改为:p=s;for(i=0; in; i+)do ai=*p;i+;)/* found* */while(*p+) 改为:while(*p+);ai=0;strcpy(s,a);)main() int n; char s80J;printf(nEnter a string : ); gets(s);printf(nnThe string s“n”,s);printf(n

8、nEnter n ( number of * ): ); scanf(u%dM,&n);fun(s,n);printf(nThe string after insert: V%sV n ,s);解题思路:第一处:指针P 应指向S ,所以应改为:p=s;第二处:死循环,当 do while循环执行一次,临时变量p 应该指向字符串的下一位置,所以应改为:while(*p+); o第 05 套给定程序MODI1.C中函数fun的功能是:对 N 名学生的学习成绩, 按从高到低的顺序找出前m(mW10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。请改正函数

9、fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行, 也不得更改程序的结构!给定源程序:#include #include #include #define N 10typedef struct ss char num10;int s; STU;STU *fun(STU a, int m) STU bN, *t;int i,j,k;/* *found */t=(STU *)calloc(sizeof(STU),m) 改为:t=(STU *)calloc(sizeof(STU),m);for(i=0; iN; i+) bi=ai;for(k=0; km;

10、k+) for(i=j=0; ibU.s)j=i;/* fou nd*/t(k)=b(j); 改为:tk=bj;bj|.s=O;)return t;)outresult(STU a, FILE *pf) int i;for(i=0; i10) printf(MnGive the number of the students who have better score:);scanf(%d,&m);pOrder=fun(a,m);printf(”* THE RESULT *n”);printf(nThe top :n);for(i=0; im; i+)printf(,f %s %dnn,pOrd

11、eri.num , pOrderi.s);free(pOrder);)解题思路:第一处: 语句最后缺少分号。第二处: 应该使用方括号,而不是圆括号。 像此类,使用编译,即可发现。第 06 套给定程序MODU.C中函数fun的功能是:比较两个字符串, 将长的那个字符串的首地址作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行, 也不得更改程序的结构!给定源程序:#include /* *found *字*/char fun(char *s, char *1) int sl=0,H=0; char *ss, *tt;ss=s; tt

12、=t;while(*ss) sl+;/* *found */(*ss)+;改为:char *fun(char *s,char *t)改 为 : ss+;while(*tt) tl+;/* found* */(*tt)+;)if(tlsl) return t;else return s;改为:tt+;main() char a80,b80,*p,*q; int i;printf(nEnter a string :); gets(a);printf(MnEnter a string again : ); gets(b);printf(MnThe longer is :nnM%sVnn,fun(ab

13、);解题思路:第一处: 试题要求返回字符串的首地址,所以应改为:char *fun(char*s,char*。第二处: 取字符串指针ss 的下一个位置,所以应改为:SS+; 。第三处:取字符串指针tt的下一个位置,所以应改为:注+ + ; 。第 07套给定程序MODI1.C中 函 数 fu n 的功能是: 求出数组中最大数和次最大数, 并把最大数和a0中的数对调、次最大数和al中的数对调。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #define N 20int fun ( int * a, int

14、 n ) int i, m, t, k ;for(i=0;i2;i+) /* found* */m=0;for(k=i+ l;kam) k=m;t=ai ;ai=am ;am=t;改为:m=i;改为:if(akam)m=k;main() int x, bN= 11,5,12,0,3,6,9,7,10,8, n=10, i;for( i=0; in; i+ ) printf(H%d n, bi);printfCn1);fun ( b, n );for ( i=0; iam)m=k;。第 08 套给定程序MODI1.C中函数fun的功能是: 求 k!(k13),所求阶乘的值作为函数值返回。 例如:

15、 若 k = 10,则应输出:3628800请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include long fun ( int k)ifk 0return (k*fun(k-l);/*found*/else if ( k=0 )return IL;main() int k = 10 ;printf(n%d!=%ldn, k, fun ( k );)解题思路:第一处:条件判断缺少圆括号。第二处:判断相等的符号是二= 。改为:if(k0)改为:else if(k=0)第09套给定程序MODI1.C中函数fun的功

16、能是:将s所指字符串中的字母转换为按字母序列的后续字母( 但Z转换 为A, z转 换 为a),其它字符不变。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include void fun (char *s)/*found*/while(*s!=) if(*s=A, & *sv=Z II *s=a & *sv=z) if(*s=Z,) *s=A;else if(*s=z) *s=a*;else *s += 1;)/* fou nd*不* * * * * * * /(*s)+;改为:whil

17、e(*s)改为:s+;main() chars80;printf(Mn Enter a string with length 80. :nn ); gets(s);printf(n The string : nn n); puts(s);fun ( s );printf (nnn The Cords :nn ); puts(s);解题思路:第一处:使 用while循环来判断字符串指针s是否结束,所以应改为:while(*s)o第二处:取字符串指针s的下一个位置,所以应改为:S+;。第 10套给定程序MODI1.C中 fun函数的功能是:根据整型形参m ,计算如下公式的值。例如,若主函数中输入5

18、 , 则应输出-0.283333。请改正函数fun中的错误或在横线处填上适当的内容并把横线删除, 使它能计算出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include double fun( int m )(double t = 1.0;int i;for( i = 2; i = m; i+ )t= 1.0-1 /i;改为:t-=L/i;应填 return t;main()(int m ;printf( XnPlease enter 1 integer numbers:n);scanf( n%d &m);printf( nnThe resul

19、t is %lfn fun( m );解题思路:第一处:在除法运算中,如果除数和被除数都是整数,所么所除结果也是整数,因此应改为第二处:应是返回公式的值,函数中公式的值是存放在临时变量t 中,所以应填return t;。第 11套给定程序MODI1.C中函数firn的功能是:计算s 所指字符串中含有t 所指字符串的数目,并作为函数值返回。请改正函数fun中指定部位的错误, 使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行,也不得更改程序的结构!给定源程序:#include #include #define N 80int fun(char *s, char *t) int n

20、;char *p, *r;n=0;while ( *s) P=s;/* found* */r=P;while(*r)if(*r=*p) r+; p+; else break;/* *fou nd */if(*r= 0)n+;s+;改为:r=t;改为:if(*r=O)return n;main() char aN,bN; int m;printf(HnPlease enter string a : ); gets(a);printf(MnPlease enter substring b : ); gets( b );m=fun(a, b);printf(MnThe result is : m =

21、 %dnn,m);解题思路:第一处: 程序中子串是由变量t来实现的,第二处:是判断相等的条件,所以应改为:再根据下面while循环体中语句可知,所以应改为:r=t; oif(*r=0)o第 12套给定程序M O D U . C 中函数fun的功能是:将 s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中( 规定第一个字符放在第0 位中) 。例如, 字符串中的数据为: A A B B C C D D E E F F , 贝 I J 输出应当是:ABBCDDEFFo请改正函数fun中指定部位的错误, 使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行, 也不

22、得更改程序的结构!给定源程序:#include #include #define N 80void fun(char *s, char t) int i,j=0;for(i=0; istrlen(s); i+)/*found*/if(i%2 & si%2=0)tj+=si;/* * *fou nd *字*/li=0;)main() char sN, tN;printf(HnPlease enter string s : ); gets(s);改为:if(i%2 II si%2=0)改为:tj=o;fun(s, t);printf(nThe result is : %sn,t);)解题思路:第一

23、处:根据试题分析,两个条件之间应该是“ 或”的关系,而不是“ 与”的关系,所以应改为:if(i%2llsi%2=0)o第二处:当字符串处理结束后, 应该补上字符串的结束符, 那么字符串t 的位置是由i 来控制, 所以应改为:tj=O; 第13套给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点( 不包括头结点) 数据域中的最大值, 并且作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行,也不得更改程序的结构!给定源程序:#include #include typ

24、edef struct aa int data;struct aa *next; NODE;fun ( NODE *h ) int max=-1;NODE *p;/* * *fou nd * 字* * * * * * * * /p=h ;改为:p=h-next;while(p) if(p-datamax)max=p-data;/* *found* */p=h-next; 改为:p=p-next;)return max;)outresult(int s, FILE *pf) fprintf(pf,nThe max in link : %dns);NODE *creatlink(int n, in

25、t m) NODE *h, *p, *s, *q;int i, x;h=p=(NODE *)malloc(sizeof(NODE);h-data=9999;for(i=l; 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;fprintfCpf/AnTHE LIST :nn HEAD );while(p) fprintf(pf,n-%d n,p-data); p=p-next; fprintf(pfjn);)main(

26、) NODE *head; int m;head=creatlink(12, 100);outlink(head, stdout);m=fun(head);printf(nTHE RESULT :nH); outresult(m, stdout);)解题思路:程序中是使用while循环语句和结合结构指针p 来找到数据域中的最大值。第一处: p 指向形参结构指针h 的 next指针,所以应改为:p=h-next; o第二处: p 指向自己的下一个结点,所以应改为:p=p-next,第 14套给定程序MODI1.C是建立一个带头结点的单向链表, 并用随机函数为各结点赋值。 函数fun的功能是将单向

27、链表结点( 不包括头结点) 数据域为偶数的值累加起来, 并且作为函数值返回。请改正函数fun中指定部位的错误, 使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行,也不得更改程序的结构!给定源程序:#include #include typedef struct aa int data; struct aa *next; JNODE;int fun(NODE *h) int sum = 0 ;NODE *p;/* * found* */p=h;while(p) if(p-data%2=0)sum +=p-data;/* * *fou nd *字*/p=h-next;改为:p=h

28、-next;改为:p=p-next;return sum;NODE *creatlink(int n) NODE *h, *p, *s, *q;ini i, x;h=p=(NODE *)malloc(sizeof(NODE);for(i=l; 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 ,nnTHE LIST :nn HEAD );while(p) fprintf(pf ,-%d ,

29、p-data ); p=p-next; fprintf(pf,nH);)outresult(int s, FILE *pf) fprintf(pf,nnThe sum of even numbers : %dnM,s);main() NODE *head; int even;head=creatlink( 12);head-data=9000;outlink(head, stdout);even=fun(head);printf(nThe result :nn); outresult(even, stdout);)解题思路:本题是考察如何使用单向链表把数据域的值按条件进行累加。第一处:试题要求

30、不计算头结点,所以应改为:p=h-next;第二处:指向p 的下一个结点来实现循环,所以应改为:p=p-next;第 15套给定程序MODI1.C中函数fun的功能是: 利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中, 。待排序的字符串已在主函数中赋予。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include #include #define N 80void

31、insert(char *aa) int i,j,n; char ch;/* found* */n=strlen aa ;for( i= 1; i=0) & ( chaaj) aaj+l=aaj;j - ;改为:n=strlen(aa);改为:ch=aai;aaj+l=ch;)main() char aN=QWERTYUIOPASDFGHJKLMNBVCXZn;int i ;printf (The original string : %sn, a);insert(a);printf(nThe string after sorting : %snn,a );解题思路:第一处:函数应该使用圆括号,

32、所以应改为:n=strlen(aa) ; o第二处: 变量c 没有定义,但后面使用的是ch变量,所以应改为:ch=aai;。第 16套给定程序MODILC中 fu n 函数的功能是: 将p 所指字符串中每个单词的最后一个字母改成大写。 ( 这里的“ 单词”是指由空格隔开的字符串) 。例如, 若 输 入 I am a student to take the examination., 则应输出 MI aM A studenT tO takE thEexamination. o请修改程序中的错误之处, 使它能得出正确的结果。注意:不要改动m ain函数,不得删行, 也不得更改程序的结构!给定源程序

33、:#include #include void fun( char *p )int k = 0;for( ; *p; p+ )if( k )/*found*/if( P = = )改为:if(* p = = ,)k = 0;* (p-1) = toupper( *( p - 1 ) 改为:*(p-l) = toupper( *( p -1 );elsek= 1;main()char chrstr|64;int d ;printf( HnPlease enter an English sentence within 63 letters: ) ;gets(chrstr);d=strlen(chr

34、str);chrstrd= ;chrstrd+l = 0 ;printf(nnBefore changing:n %s, chrstr);fun(chrstr);printf(nAfter changing:n %s, chrstr);第 17套给定程序MODI1.C中函数fun的功能是: 在 p 所指字符串中找出ASCII码值最大的字符, 将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为:eABCDFGH。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结

35、构。给定源程序:#include fun( char *p ) char max,*q; int i=0;max=pi;while( pi!=0) if( maxp) *q=*(q-l);q-;改为:while(qp)pO=max;main() char str80;printf(nEnter a string: ); gets(str);printf(nThe original string: “) ; puts(str);fun(str);printf(nnThe string after moving: ); puts(str); printf(nn);)解题思路:第一处:在语句后缺少分

36、号,所应改为:q=p+i; o第二处:保留字while写错,所应改为:while(qp)o第 18套给定程序MODI1.C中 函 数 fu n 的功能是:将 s 所指字符串中最后一次出现的与t l 所指字符串相同的子串替换成t2 所指字符串, 所形成的新串放在w 所指的数组中。在此处,要求t l 和 t2所指字符串的长度相同。例如,当 s 所指字符串中的内容为: abcdabfabc”,t l 所指子串中的内容为:“ ab”,t2 所指子串中的内容为:“99”时, 结果,在 w 所指的数组中的内容应为: abcdabf99c,请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数

37、,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include int fun (char *s, char *tl, char *t2 , char *w)(int i; char *p , *a;strcpy( w, s );/*found*/while ( w ) 改为:while(*w) p = w; r = 11;while ( *r)/*ound*/IF ( *r = *p ) 改为:if( *r = *p ) r+; p+; else break;if(*r = A O1) a = w;w+;)r = t2;while ( *r ) *a = *r; a+

38、; r+; )main()(char s100, tl100, t2100, w100;printf(nPlease enter string S:); scanf(u%sn, s);printf(nnPlease enter substring tl:); scanf(u%sn, tl);printf(nnPlease enter substring t2:M); scanf(u%sn, t2);if ( strlen(t 1 )=strlen(t2) fun( s, tl, t2, w);printf(nThe result is : %sn, w);)else printf(unErro

39、r : strlen(tl) != strlen(t2)nH);解题思路:第一处:判断W指针所指的值是否是结束符,应改为:while(*w)。第二处:if错写成If。第 19套给定程序MODI1.C中函数fun的功能是: 从N 个字符串中找出最长的那个串, 并将其地址作为函数值返回。各字符串在主函数中输入, 并放入一个字符串数组中。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include #include #define N 5#define M 81/*found*/fun(char (*sq)M) 改为:char

40、 *fun(char (*sq)M) int i; char *sp;sp=sqO;for(i=0;iN;i+)if(strlen( sp)strlen(sqi)sp=sqi;/* fou nd*/return sq; 改为:return sp;)main() char strNM, *longest; int i;printf(Enter %d lines :n,N);for(i=0; iN; i+) gets(stri);printf(nThe N string :n,N);for(i=0; iN; i+) puts(stri);longest=fun(str);printf(MnThe

41、longest string :n); puts(longest);)解题思路:第一处: 要求返回字符串的首地址,所以应改为:char *fun(char(*sq)M)o第二处: 返回一个由变量sp控制的字符串指针,所以应改为:return sp; o第 20套给定程序MODI1.C中 函 数 fu n 的功能是:统计字符串中各元音字母( 即:A、E、I、O、U)的个数。注意:字母不分大、小写。例如:若输入:THIs is a b o o t,则输出应该是:1、0、2、2、0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程

42、序:#include fun ( char *s, int num5) int k, i=5;for ( k = 0; k= 0)num|i+;main() char sl81; int numl5, i;printf( nPlease enter a string: ); gets( si );fun ( si, numl );for ( i=0; i 5; i+ ) printf (”d =num 1 i); printf (nn);解题思路:第一处: num初始化错误, 应为:numk=0; o第二处:由于s 是指针型变量,所以应改为:switches) 。第 21套给定程序MODI1.

43、C的功能是:读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行( 这 里 的 “ 单词”是指由空格隔开的字符串) 。例如,若输入:I am a student to take the examination.,则应输出:I Am A Student To Take The Examination.请改正程序中的错误,使程序能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include /* *found * */include 改为:# include /*1ound*/upfst ( char p )

44、 改为: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 chrstr81;printf( nnPlease enter an English text line: ); gets( chrstr);printf( nnBefore changing:n %s, chrstr);upfst( chrstr);printf( nAfter changingAn %snu, chrstr);)解题思路:第一处

45、:包含头文件的标识错误,在 include前漏写了# 。第二处:由于传入的参数是字符串,所以应为upfst(char*p)。第 22套给定程序MODI1.C中 fun函数的功能是:将 n 个无序整数从小到大排序。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include fun ( int n, int *a ) int i, j, p, t;for (j = 0; jn-l ; j+ )( P = j;/* * fou nd * 不* * * * * * * * * * /for ( i=j+l;

46、 in-l ; i+ ) 改为:for ( i=j+l; iai)/*found*/t=i;改为:p=i;if ( p!=j) t = aj;aj = ap;ap = t; )putarr( int n, int *z ) int i;for ( i = 1; i = n; i+, z+ ) printf( 4d”, *z );if( !(i% 10)printf(,nM); printfCAn1);)main() intaa20=93,0,4,1,2,5,6,8,10,7, n=ll;printf( nnnBefore sorting %d numbersAn, n ); putarr( n

47、, aa );fun( n, aa);printf( nnAfter sorting %d numbers:nM, n ); putarr( n, aa );解题思路:第一处:for循环的终止值应该n或者是=n-l。第二处:使用临时变量p 来保存最小值位置i , 所以应改为:p=i;o第 23套给定程序MODI1.C中函数fun的功能是:交换主函数中两个变量的值。例如:若变量a 中的值原为8,b中的值为3。程序运行后a 中的值为3, b 中的值为8。请改正程序中的错误, 使它能计算出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include /

48、*found*/int fun(int x,int y) 改为:int fun(int *x,int *y)(int t;/* found* */t=x;x=y;y=t; 改为:t=*x;*x=*y;*y=t;main()(int a,b;a=8;b=3;fun(&a,&b);prinlf(%d, %dn,a,b);)解题思路:第一处:函数形参定义不正确,在定义第2 个形参时, 也应加上int。由于通过该函数实现两数交换,在 C 语言中,必须交换地址中的值,所以应定义为int *x,int *y。第二处:要交换地址中的值,不能交换地址,必须指定地址中的值,因此应改为t=*x;*x=*y;*y=

49、t;。第 24套假定整数数列中的数不重复,并存放在数组中。给定程序MODILC中函数fu n 的功能是:删除数列中值为 x 的元素。n 中存放的是数列中元素的个数。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include #define N 20fun(int *a,int n,int x) ini p=O,i;an=x;while( x!=ap)P=P+1;/*found*/if(P=n) return -1; 改为:if(p=n) return -1;else for(i=p;in;i+)/*found*/ai+

50、l=ai; 改为:ai=ai+l;)main() int wN= -3,0,1,5J,99,10,15,30,90,x,n,i;n=10;printf(MThe original data :nH);for(i=0;in;i+) printf(H%5dn,wi);printf(nnlnput x (to delete): ); scanf(d”,&x);printf(nDelete: %dn,x);n=fun(w,n,x);if ( n=-l ) printf(*Not be found!*nn);else printfCThe data after deleted:n);for(i=0;in

51、;i+) printf(H%5dn,wi);printf(nnnH);)解题思路:第一处: 条件语句中的小写p 错写成大写P 了。第二处: 删除元素,应该是后面位置的元素值赋值给前面的位置上,所以应改为:ai=ai+l;,第 25套给定程序MODH.C中函数fun的功能是:从 s 所指字符串中,找出与t 所指字符串相同的子串的个数作为函数值返回。例如,当 s 所指字符串中的内容为: abcdabfab,t 所指字符串的内容为:“ ab,则函数返回整数3。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #

52、include int fun (char *s, char *t)(int n; char *p , *r;n = 0;while ( *s) p = s;r = t;while ( *r)if ( *r = *p ) r+; p+改为:r+ + ; p+ + ;else break;/* ijtfou nd*#*/if(r= = W )n+;s+;改为:if(*r=O)return n;main()chars100,t100; int m;printf(MnPlease enter string S:n); scanf(u%sn, s);printf(nPlease enter subst

53、ring I:); scanf(n%s, t);m = fun( s, t);printf(nThe result is: m = %dn, m);解题思路:第一处:语句后缺少分号。第二处:判断r 的当前字符是否是字符串结束符,所以应改为:if(*=O)。第 26套给定程序M O DI1.C中函数fun的功能是: 用选择法对数组中的n 个元素按从小到大的顺序进行排序。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行和删行,也不得更改程序的结构!给定源程序:#include #define N 20void fun(int a, int n) int i,j, t,

54、 p;for(j= 0;j n-l ;j+) /*found*/P=Jfor (i = j;i n; i+)if(ai ap)/*found*/改为:P = jP=J;t = ap ; ap = aj ; aj = t;改为:p = i :main()int aN=9,6,8,3,-l,i,m = 5;printf( 排序前的数据: ) ;for(i = 0;i m;i+) printf(M%d M,ai); printf(nn);fun(a,m);printf( 排序后的数据: “ ) ;for(i = 0;i m;i+) printf(%d ,ai); printf(n);解题思路:第一处

55、:语句后缺少分号。第二处:保存最小值的位置,所以应改为:p = i;。第 27套给定程序MODI1.C中函数fu n 的功能是: 统计substr所指子字符串在str所指字符串中出现的次数。例如,若字符串为aaaslkaaas,子字符串为a s ,则应输出2。请改正程序中的错误,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include fun (char *str,char *substr) int i,j,k,num=O;for(i = 0, stri, i+)for(j=i,k=0;substrk=str|j;k4-+,j+)I

56、f(substrk+1 =10,)改 为 : for(i = 0; stri; i+)改为:if(substrk+l=d(T) num+;break;return num;)main()(char str80,substr80;printf(nInput a string:);gets(str);printf(Input a substring:);gets(substr);printf(n%dnfun(str,substr);解题思路:第一处:循环for语句中应有分号。第二处:if错写成开。第 28套给定程序MODI1.C中函数fun的功能是:通过某种方式实现两个变量值的交换, 规定不允许增

57、加语句和表达式。例如变量a 中的值原为8, b 中的值原为3 ,程序运行后a 中的值为3, b 中的值为8。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m a i n 函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include int fun(int *x,int y)intt = x ; x = y ;/* * found* */return(y);)main()(int a = 3, b = 8 ;改为:t=*x;*x=y;改为:return(t);printf(n%d %dnM, a, b );b = fun(&a, b );printf(M%d %dn, a,

58、 b );)解题思路:第一处:由于x 是整型指针变量,所以地址不能赋值给整型变量,因此必须取x 地址上的值, 所以应改为 t=*x;*x=y;o第二处:已交换后的值存放在t 中,所以返回值应为return; 。第 29套给定程序MODI1.C中函数fun的功能是:应用递归算法求形参a 的平方根。求平方根的迭代公式如下:1 axl = (xO + )2 xO例如,a 为 2 时,平方根值为:1.414214o请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include #include /* found* */double

59、 fun(double a, dounle xO) 改为:double fun(double a, double xO) double xl, y;x 1 =(x0+ a/x0)/2.0;/* found* *萃 * * 亭 * * * * /if( fabs(xl-xo)0.00001 ) 改为:if( fabs(xl-x0)0.00001 )y=fun(a,xl);else y=x 1;return y;main() double x;printf(nEnter x: ”); scanf(%lf,&x);printf(nThe square root of %lf is %lfnM,x,f

60、un(x, 1.0);解题思路:第一处:第二个变量定义的保留字double写错。第二处: 变量xO错写成xo 了。第 30套给定程序MODU.C中函数fun的功能是:从 s 所指字符串中删除所有小写字母c。请改正程序中的错误,使它能计算出正确的结果。注意:不要 改 动 m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include void fun( char *s ) int i,j;for(i=j=0; si!=0; i+)if(si!=c)/* * *fou nd 字 字 * * * * * * * * * * /sj=si;改为:sj+=si;/ * * * * *

61、 * * * * * * 宇 found 孝 * * , * * * * * * * * /si=W;改为:sj=O;)main() char s80;prinlf(Enter a string: ); gets(s);printf(nThe original string: ); puts(s);fun(s);printf(HThe string after deleted : ); puts(s);printf(nn);)解题思路:第一处:新字符串的位置值是由变量j 来控制的, 但程序中字符赋值后没有对j 进行增量的语句, 所以应改为:sj+=si;(第二处:对新字符串添加字符串结束符,

62、由于程序中使用变量j 对新字符串来控制的, 所以应改为: sj=O;。第 31套给定程序MODI1.C中 函 数 fu n 的功能是:用下面的公式求n 的近似值,直到最后一项的绝对值小于指定 的数( 参数num ) 为止:Ji 1 1 1-=1 -+ -+ .4 3 5 7例如, 程序运行后, 输入0.0001,则程序输出3.1414,请改正程序中的错误,使它能输出正确的结果。注意:不要 改 动 m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include float fun ( float num ) int s ;float n, t, pi ;t

63、= l ; pi = O ;n = l;s = l;/* found* */while(t = num)pi = pi + t ;n = n + 2 ;s = -s ;/*found*/t = s % n ;)pi = pi * 4 ;return p i;改为:while(fabs(t)=num)改为:t=s/n;main() float n 1, n2 ;printfCEnter a float number:);scanfC%, & nl);n2 = fun(nl);printf(n%6.4fn, n2);解题思路:第一处:要判断t 的最后一项绝对小于指定的数,由于t 是实数,那么应改为

64、while(fabs(t)=num)。第二处:t 是 s 除以n 的值,而不是取余数,所以应改1=$历; 。第 32套给定程序MODU.C中函数fun的功能是:根据以下公式求“ 值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。其 1 1 2 1 2 3 1 2 3 4=1+ + X + X X + X X X+.2 3 3 5 3 5 7 3 5 7 9请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include #include double fun(double

65、eps) double s,t; int n=l;s=0.0;/* * fou nd */t=0;改为:t=l;while( teps) s+=t;t=t * n/(2*n+l);n+;/*found*/return(s);)main() double x;printf(nnPlease enter a precision: ”); scanf(*%lfn,&x);printf(nneps=%lf, Pi=%lfnn,x,fun(x);改 为 : return(2*s);解题思路:第一处: 初始化t 的值,根据程序中的计算程序和试题的要求得出,t 应 为 1。第二处: 根据公式冗/ 2 得出,

66、所以返I口 I时应原有s 的基础上乘以2 作为返回值。第 33套给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在 t 中。高位仍在高位,低位仍在低位。例如,当 s 中的数为:87653142时,t 中的数为:8642。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include void fun (long s, long *t) int d;long sl=l;*t = 0;while ( s 0) d = s%10;/*found*/if(d%2=0) *i=d*

67、 sl+ *t;si *= 10;改为:if(d%2=0)/* * *fou nd 字 字 * * * * * * * * * * /s= 10;main() long s, t;printf(nPlease enter s:); scanf(%ld, &s);fun(s, &t);printf(The result is: %ldn, t);)解题思路:第一处:判断相等的条件是= = 。改为 s s /= 10;第二处:整除的符号是/ 。第34套给 定 程 序M 0DI1.C中函 数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。请改正

68、函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include void fun(int a,int *b,int *c) int i,j,d,y;for(i=3;i=a/2;i=i+2) /* found* */Y=l;for(j=2;j=sqrt(double)i);j4-+)if(i%j=O) y=0;if(y=l) /* *Qund * */d=a-i;for(j=2;j=sqrt(double)d);j+)if(d%j=O) y=0;if(y=l) *b=i; *c=d; 改为:y=l

69、;改为:d=a-i;main() int a,b,c;do printf(nlnput a: ”); scanf(d”,&a); while(a%2);fun(a,&b,&c);printf(nnn%d = %d + %dnn,a,b,c);解题思路:第一处:变 量y错写成Y。第二处:给变量d进行赋值,所以应改为:d = a - i ; o第35套给定程序M 0DI1.C中 函 数fu n的功能是:将十进制正整数m转 换 成k(2WkW9)进制数,并按高位到低位顺序输出。例如,若 输 入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)o请 改 正fu n函数中的错误,使它能得

70、出正确的结果。注意:不 要 改 动m ain函数。不得增行或删行,也不得更改程序的结构!给定源程序:#include #include void fun( int m, int k )(int aa20, i;for( i = 0; m; i+ )(/* found* */aai = m/k; 改为:aai=m%k;m /= k;)for(; i; i - )/* fou nd*/prinlf( %d, aa i ); 改为:printf(%d,aai-l);)main()(int b, n;printf( nPlease enter a number and a base An);scanf

71、( n%d %d”, &n, &b );fun( n, b );printf(nnn);解题思路:第一处:应该取模而不是整除,所以应为:aai=m%k;第二处:输出aa的位置不正确,所以应为:printf(%d,aai-l);第36套给定程序MODI1.C中函数fun的功能是:求出s 所指字符串中最后一次出现的t 所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值为NULL。例如,当字符串中的内容为:abcdabfabcdx, t 中的内容为:“ab”时, 输出结果应是:abcdx=当字符串中的内容为:abcdabfabcdx”, t 中的内容为:“ab

72、d”时,则程序输出未找到信息: not be found!。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include char * fun (char *s, char *t)char *p , *r, *a;a = Null;while ( *s ) p = s; r = t;while ( *r)改为:a = NULL;if ( r = p ) 改为:if(*r=*p) r+; p+; else break;if(*r = A O1) a = s;s+;)return a ;main()(ch

73、ar s100, t100, *p;printf(nPlease enter string S scanf(%s, s );printf(nPlease enter substring t s c a n f ( ”s, t );p = fun( s, t);if ( p ) printf(nThe result is : %sn, p);else printf(unNot found !n);)解题思路:第一处:指向空指针错误,Null应 NULL。第二处:比较指针位置的值是否相等,所以应改为:if(*r=*p)。第 37套给定程序MODI1.C中函数fun的功能是:求三个数的最小公倍数。例

74、如,给主函数中的变量x l、*2、* 3 分别输入15 1 1 2 ,则输出结果应当是:330。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include /* * *fou nd */fun(int x, y, z ) 改为:fun(int xjnt y, int z) intj,t ,n ,m;j= 1 ;t=j%x;m=j%y ;n=j%z;while(t!=0llm!=0lln!=0)j= j+ l;t=j%x;m=j%y;n=j%z;)/* found字 * * * * * * * * * * * /retu

75、rn i;改为:return j;main() int xl,x2,x3,j ;printf(MInput xl x2 x3: ); scanf(n%d%d%dn,&x 1 ,&x2,&x3);printf(xl=%d, x2=%d, x3=%dnu,xl,x2,x3);j=fun(xl,x2,x3);printf(nThe minimal common multiple is : %dnn,j);)解题思路:第一处:函数中形参的定义不正确,应改为:fun(int x,int y, int z)第二处: 程序中三个数的最小公倍数是用j 处理的,所以应返回j 的值。第 38套给定程序MODH.C

76、中函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若 给 num l和 num2分别输入49和 2 1 ,则输出的最大公约数为7;若 给 num l和 num2分别输入27和 8 1 ,则输出的最大公约数为27。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include int fun(int a,int b) int r,t;if(ab) /* * found 孝 * * , * * * * * * * * /t=a; b=a; a=t; 改为:t=a;a=b;b=t;)r=a%b;whi

77、le(r!=0) a=b; b=r; r=a%b; /* * fou nd 字* * * * * * * * * * * /retum(a); 改为:return(b);)main() int numl, num2,a;printf(Input numl num2: ); scanf(,%d%d,&num 1 ,&num2);printf(nnuml= %d num2= %dnnM,num 1 ,num2);a=fun(numl,num2);printf(nThe maximun common divisor is %dnn,a);解题思路:第一处:交换值的次序有问题,所以应改为:t=a;a=

78、b;b=t;。第二处:返回值错误,应改为:return(b);。第 39套给定程序MODI1.C中函数fun的功能是:逐个比较p、q 所指两个字符串对应位置中的字符,把 ASCII值大或相等的字符依次存放到c 所指数组中,形成一个新的字符串。例如, 若主函数中a 字符串为: aBCDeFgH,主函数中b 字符串为: ABcd,则 c 中的字符串应为: aBcdeFgH。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include #include void fun(char *p ,char *q, char *c)/*

79、found*/int k = 1;/* * *found* */while( *p != *q ) if( *p*q ) ck=*q;else ck=*p;if(*p) p+;if(*q) q+;k+;改为:int k=0;改为:while( *p I I *q )main() char a10=HaBCDeFgHn, b10=ABcd; c80=、0;fun(a,b,c);printf(nThe string a: *); puts(a);printf(nThe string b: ); puts(b);printfCThe result: ); puts(c);解题思路:第一处: 存放字符

80、串初始位置也是从0 开始存放的,由于k 是控制c 字符串的位置值,所以k 值应为0。第二处: 判断两个字符串中是否有字符串结束符产生,所以应改为:while(*pll*q),而不是两字符串中对应位置的值不相等。第 40套给定程序MODI1.C中函数fun的功能是:计算正整数num的各位上的数字之积。例如,若输入:2 5 2 ,则输出应该是:20。若输入:2 0 2 ,则输出应该是:0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include long fun (long num)/*found*/long k;do

81、 k*=num%10 ;/*found字*/num=10 ;) while(num);return (k);改为:long k=l;改为:num/=10 ;main() long n ;printf(nPlease enter a number:) ; scanf(ld”,&n);printf(n%ldn,fun(n);)解题思路:第一处:由于在k 定义时没有赋初值,所以k 是一个随机数,根据试题要求,k 应赋值为1。第二处:整除的符号是/ 。第 41 套给定程序MODI1.C中函数fun的功能是:根据整型形参n , 计算如下公式的值。例如,若 n=如, 则应输出: 0.617977,请改正程

82、序中的语法错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include /* * fou nd *不 * * * * * * * * * * /int fun ( int n ) 改为:float fun(int n) float A=l; int i;/*found*/for (i=2; in; i+) 改为:for (i=2; i=n; i+)A= 1.0/(1+A);return A ;main() int n ;printf(nnPlease enter n: );scanf(u%d &n );printf(,A%d=%f

83、nn, n, fun(n);)解题思路:第一处:函数的返回是浮点型数,所以应改为:float fun(int n)o第二处:for的终止条件应是i=n。第 42套给定程序MODH.C中 函 数 fu n 的功能是:用冒泡法对6 个字符串按由小到大的顺序进行排序。请改正程序中的错误,使它能得出正确的结果。注意: 不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include #define MAXLINE 20fun ( char *pstr6) int i,j ;char *p ;for (i = 0 ; i 5 ; i+ ) for(j = i

84、+ l,j6,j+)改为:for (j = i + 1; j 0)(p = *(pstr + i);/* * Qund* *(pstr + i) = pstr + j ;*(pstr + j) = p ;改为:*(pstr+i)=*(pstr+j);main() int i ;char *pstr6, str6MAXLINE;for(i = 0; i 6 ; i+) pstri = stri;printf( nEnter 6 string(l string at each line): nn);for(i = 0 ; i 6 ; i+) scanf(%s, pstrfi);fun(pstr);

85、printf(nThe strings after sorting:nn) ;for(i = 0 ; i 6 ; i+) printf(n%sn, pstri);)解题思路:第一处:for循环语句中缺少分号。第二处:应该把pstr+j位置上的值赋值给*(psir+i)上,所以应改为: *(pstr+i)=*(pstr+j);。第 43套:给定程序MODI1.C中函数fun的功能是:从整数1 到 5 5 之间,选出能被3 整除、且有一位上的数是5的那些数, 并把这些数放在b 所指的数组中,这些数的个数作为函数值返回。规定,函数中a l 放个位数,a2放十位数。请改正程序中的错误,使它能得出正确结

86、果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include fun( int *b) int k,al,a2,i=0;for(k=10; k=55; k+) /* fou nd*#*/a2=k/IO;al=k-a2*10;if(k%3=0 & a2=5)ll(k%3=0 & al=5) bi=k; i+; 改为:a2=k/10;return k;改为:return i;main() int a100,k,m;m=fun( a );printf(nThe result is :n);for(k=0; km; k+) printf(n%4d,ak); pri

87、ntfCAn1);解题思路:第一处: 取当前变量k 的十位数字上的数,所以应改为:a2=k/10;第二处:要求统计个数并存入变量i 中,最后返回i , 所以应改为:return i;第 44 套给定程序M O DI1.C中函数fun的功能是: 将 p 所指字符串中的所有字符复制到b 中, 要求每复制三个字符之后插入一个空格。例如,在调用fun函数之前给a 输入字符串:ABCDEFGHIJK,调用函数之后,字符数组b 中的内容则为:A B C DEF GHIJK.请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include

88、 void fun(char *p, char *b) int i, k=0;while(*p) i=l;while( il)例如,当给n 输入5 时,函数值为18;当给n 输入3 时,函数值为14。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include /* * * fou nd */fun ( n ) 改为:fun (int n) int c;/*ound*/if(n=l)改为:if(n=l)c = 10;elsec= fun(n-l)+2;return(c);)main() int n;printf(Ente

89、r n : ); scanf(%d,&n);prinlf(nThe result: %dnn fun(n);)解题思路:第一处:形参n 没有定义类型,所以应改为:fun (int n)o第二处:判断相等的符号是二= 。第 46套已知一个数列从第0 项开始的前三项分别为0, 0, 1 , 以后的各项都是其相邻的前三项之和。给定程序MODI1.C中函数fun的功能是: 计算并输出该数列前n 项的平方根之和。n 的值通过形参传入。 例如,当n = 1 0 时,程序的输出结果应为:23.197745。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序

90、的结构!给定源程序:#include #include / * * * * * * * * * * * 萃 found */fun(int n) 改为:double fun(int n) double sum, sO, si, s2, s; int k;sum = 1.0;if (n = 2) sum = 0.0;s0 = 0.0;sl =0.0; s2= 1.0;for (k = 4; k = n; k+) s = sO + si + s2;sum += sqrt(s);sO = si; si = s2; s2 = s;/*found*/return sum改为:return sum;mai

91、n () int n;printf(Input N=n);scanf(n%d, &n);printf(%fnu, fun(n);)解题思路:第一处:由于函数返回是实数,所以必须定义返回的类型,只有整型或无结果返回可以忽略,其他必须定义返回的类型,所以要在此行前加上double或 float。第二处:该行缺少分号。第 47套给定程序MODI1.C中函数fu n 的功能是:求 S 的值。例如,当 k 为 10时,函数值应为:1.533852。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include

92、/*found*/void fun( int k ) int n; float s, w, p, q;n = 1;s= 1.0;while ( n = k ) w = 2.0 * n;p = w - 1.0;q = w + 1.0;改为:double fun(int k)n+;* w *w/p/q;/*found*/return s改为:return s;main ()printf(%fn, fun(10);解题思路:第一处:由于函数返回是实数,所以必须定义返回的类型,只有整型或无结果返回可以忽略,其他必须定义返回的类型,所以要在此行前加上double或 float。第二处:缺少分号。第 48

93、 套给定程序MODILC中函数fun的功能是:计算小于形参k 的最大 的 10个能被13或 17整除的自然数之和。k 的值由主函数传入,若 k 的值为5 0 0 ,则函数值为4622。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include int fun( int k ) int m=0, mc=0, j ;while (k = 2) & (me 10)(/* * fou nd * 不* * * * * * * * * * /if(k%13 = 0) II (k%17 = 0) 改为:if (k% 13 = 0

94、) II (k% 17 = 0) m = m+ k; mc+; k-;return m;/* fou nd*#*/应 填 main ()(printf(%dn, fun (500);)解题思路:第一处:判断相等的条件是= = , 而不是=,所以只能在比较处再添加 个= 。第二处:经过编译可知, ” 和 没有配对,所以在横线处加上第 49 套给定程序MODILC中 函 数 fu n 的功能是:由形参给定n 个实数,输出平均值,并统计在平均值以上( 含平均值) 的实数个数。例如,n=8 时, 输入:193.199,195.673,195,757,196,051,196.092,196.596,19

95、6.579,196.763所得平均值为: 195.838745,在平均值以上的实数个数应为:5请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include int fun(float x, int n)int j, c=0, float xa=0.0;for (j=O;jn;j+)改为:int j, c=0; float xa=0.;xa += xj/n;printf(nave =%fn,xa);for (j=0; j xa) 改为:if (xj )=xa)C+;return c;main () float x100

96、 = 193.199, 195,673, 195.757, 196.051, 196.092, 196.596, 196.579,196.763;printf(dn”, fun (x, 8);)解题思路:第一处:两种类型变量定义之间应该用分号,所以应改为:intj,c=0; float xa=0.;。第二处:在 C 语言中,大于等于应表达为 二。第 50套给定程序MODI1.C中函数fun的功能是: 计算函数F(x,y,z)=(x+y)/(xy)+(z+y)/(zy)的值。 其中x 和 y 的值不等,z 和 y 的值不等。例如,当 x 的值为9、y 的值为11、z 的值为15时,函数值为-3.

97、50o请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include #include #include /*found*/#define FU(m,n) (m/n) 改为:#define FU(m,n) (m)/(n)float fun(float a,float b,float c) float value;value=FU(a+b,a-b)+FU(c+b,c-b);/* * nd * 不* * * * * * * * * * /Retum(Value); 改为:return(value);)main() float

98、x,y,z,sum;printfCInput x y z: ) ;scanf(%f%f%f,&x,&y,&z);printf(,x=%f,y=%f,z=%fn,x,y,z);if (x=ylly=z)printf(Data error !nn);exit(0);sum=fun(x,y,z);printf(nThe result is : %5.2fnM,sum);)解题思路:第一处:define 定义错误,所以应改为:#define FU(m,n) (m)/(n)o第二处:return错写成R eturn,变量value错写成Value。第 51套给定程序MODU.C中 函 数 fu n 的功

99、能是:从 n(形参) 个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回, 平均分存放在形参aver所指的存储单元中。例如,若 输 入 8 名学生的成绩:80.5 60 72 90.5 98 51.5 88 64则低于平均分的学生人数为: 4 ( 平均分为:75.5625 ),请改正程序中的错误,使它能统计出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #define N 20int fun ( float *s, int n, float *aver) float ave, t = 0.0 ;int count = 0

100、, k, i ;for ( k = 0 ; k n ; k+ )/* */t = sk; 改为:t+=sk;ave = t/n ;for ( i = 0 ; i n ; i+ )if ( s i ave ) count+ ;/* found* */*aver = Ave ; 改为:*ave=ave;return count;)main() float s30, aver ;int m, i ;printf (HnPlease enter m: ); scanf (%dn, &m );printf (HnPlease enter %d mark :n , m );for( i = 0 ; i m

101、 ; i+ ) scanf (s + i );printf( nnThe number of students : %d n, fun ( s, m, &aver);printf( *Ave = %fnn, aver );)解题思路:第一处:应求累加和,而不赋值,所以应改为t+=sk;。第二处:ave不需要取地址,直接赋给* aver就可以了。第 52套:例 如 , 若 q 的值为: 5 0 .0 ,则函数值为: 49.394948。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include double fun(

102、 double q ) int n; double s,t;n = 2;s = 2.0;while (s=q)t=s;/*found*/s=s+(n+l)/n;n+;printf(n=%dnH,n);/* * fou nd */return s;改为:s+=(float)(n+l)/n;改为:return t;main ()printf(n%fnH, fun(50);解题思路:第一处:如果两个整数类型相除, 结果仍为整数,所以必须转换其中一个数的类型,所以应改为:s+=(float)(rn- l)/n; o第二处:返回结果错误,应改为:return t;。第 53套给定程序MODI1.C中函数

103、fun的功能是:求整数x 的 y 次方的低3 位值。例如, 整数5 的 6 次方为15625,此值的低3 位值为625请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行, 也不得更改程序的结构!给定源程序:#include long fun(int x,int y,long *p ) int i;long t=l;/ * * * * * * * * * * * * * * * * * * * * * * * * /for(i=l; iy; i+)t=t*x;*p=t;/ * * * * * * * * * * * * 孝 字 found */t

104、=t/1000;return t;改为:for(i=l; i=y; i+)改 为 :t=t%1000;main() long t,r; int x,y;printf(nnlnput x and y: ); scanf(,%ld%ld,&x,&y);t=fun(x,y,&r);printf(Mnnx=%d, y=%d, r=%ld, last=%ldnnH,x, y,r,t);解题思路:第一处:错误在for循环语句上,根据试题要求,终止条件应该是i=y。第二处:要取低3 位的值时,应 模 1000取余数,而不是整除1000取商。第 54套给定程序MODI1.C中函数fun的功能是:将s 所指字符

105、串中出现的与t l 所指字符串相同的子串全部替换成 t2所指字符串, 所形成的新串放在w 所指的数组中。在此处,要求t l 和 t2所指字符串的长度相同。例如,当 s 所指字符串中的内容为: abcdabfab”,t l 所指子串中的内容为:“ab”,t2所指子串中的内容为:“99”时, 结果在w 所指的数组中的内容应为: -99cd99f99o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include int fun (char *s, char *tl, char *t2 , char *w)(

106、int i; char *p , *r, *a;strcpy( w, s );while ( *w) p = w; r = tl;/*found*/while ( r ) 改为:while(*r)if ( *r = *p ) r+; p+; else break;if( *r = W ) a = w; r = t2;while ( *r)/ * * * * * * * * * * * 不 fou nd */*a = *r; a+; r+ 改为:*a = *r; a+; r+;)w += strlen(t2);)else w+;main()char sl00, tlflOO, t2100, w1

107、00;printf(nPlease enter string S:); scanf(u%sn, s);printf(MnPlease enter substring tl:“) ; scanf(n%sn, tl);printf(MnPlease enter substring )scanf(u%sn, t2);if ( strlen(t 1 )=strlen(t2) fun( s, tl, t2, w);printf(nnThe result is : %snH, w);else printf(HError : strlen(tl) != strlen(t2)nu);解题思路:第一处:判断字符

108、串当前字符是否是字符串结束符,所以应改为:while(*r)。第二处:语句后缺少分号。第 55套给定程序MODI1.C中 fun函数的功能是:求出以下分数序列的前n 项之和。2 3 5 8 13 21, , , , , , ,1 2 3 5 8 13和值通过函数值返回main函数。例如,若 n = 5 , 则应输出: 8.391667,请改正程序中的错误,使它能得出正确的结果。注意:不要 改 动 m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include * * found */fun (int n ) 改为:double fun(int n) int a = 2, b

109、 = 1, c, k ;double s=0.0;for ( k = 1; k = n; k+ )s = s4-1.0*a/b;/ * * * * * * * * * * * * 字 * found */c = a; a += b; b += c; 改为:c = a; a += b; b = c;return(s);)main() int n = 5 ;printf( nThe value of function is: %lfn, fun ( n ) ) ;)解题思路:第一处:由于计算的实型值要通过函数返回,所以必须定义函数的返回类型,只要int或 void可以省略,其他都要定义类型。由于返

110、回是实型值,所以应在数名前加上double或 float等定义。第二处:根据公式可知,在 for循环内b 的值应是c。第 56套给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s 中奇数位上的数, 依次构成一个新数放在t 中。高位仍在高位, 低位仍在低位。例如,当 s 中的数为:7654321时,t 中的数为:7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include /* fou nd*/void fun (long s, long t) 改为:void fun(long sjong

111、*t) long sl=10;*t = s% 10;while ( s 0) s = s/100;*t = s%10 * si + *t;/*found*/si = si* 100; 改为:sl=sl*10;main() long s, t;printf(nPlease enter s:); scanf(%ld, &s);fun(s, &t);printf(The result is: %ldn, t);)解题思路:第一处:在函数fun中使用了* t , 但在函数定义时没有使用* t , 所以应改为:void fun(longs,long *1)。第二处:每循环次,s i的值就乘以1 0 ,所

112、以应改为:sl=sl*10;第 57套给定程序MODU.C中函数fun的功能是:用递归算法计算斐波拉契数列中第n 项的值。从 第 1 项起,斐波拉契数列为:1、1、2、3、5、8、13、21、例如,若给n 输入7 , 该项的斐波拉契数值为:13。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include long fun(int g)(/* fou nd*/switch(g); 改为:switch(g) case 0: return 0;/* found* */case 1 ;case 2 : return 1 ; 改

113、为:case 1: return 1; case 2:return 1;)return( fun(g-1 )+fun(g-2);main() long fib; int n;printf(nInput n: ); scanf(%d,&n); printf(Mn = %dnH,n);fib=fun(n);printf(nfib = %dnn,fib);)解题思路:第一处:switch后有多余的分号。第二处: case 1后没有返回语句, 也应该为return 1;。所以应改为:case 1: return 1; case 2:return l;o第 58套给定程序MODU.C中函数fun的功能是

114、:找出一个大于形参m 且紧随m 的素数,并作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include int fun(int m) int i, k ;for (i = m + 1 ; i+) for (k = 2 ; k i ; k+)/* * * fou nd * */if(i% k !=0) 改为:if(i%k=0)break ;/* found* */if(k=i)也可以。第 59套给定程序MODI1.C中函数fun的功能是:根据整型形参m 的值,计算如下公式的值。2*2 3*3 m*m例如,

115、若 m 中的值为: 5 , 则应输出: 0.536389。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include double fun ( int m ) double y = 1.0 ;int i ;/*found*/for(i = 2 ; i m ; i+) 改为:for(i=2; i=m; i+)/* * *found* */y -= 1 /(i * i); 改为:y-=lJ(i*i);return( y );)main() int n = 5 ;prinlf( nThe result is %lfn, f

116、un ( n );解题思路:第一处:使用for循环计算公式,必须计算到m , 所以应改为for(i=2; i=m; i+)。第二处:在除法运算中,如果除数和被除数都是整数,所么所除结果也是整数,因此应改为 y-=l./(i*i)。第 60套给定程序MODU.C中函数fun的功能是: 将m 个字符串连接起来,组成一个新串,放入pt所指存储区中。例如:把 3 个串:“ abc“JCD,“EF”连接起来,结 果 是 abcCDEF,请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include int fu

117、n ( char str10, int m, char *pt)(/* * *found* */Int k, q, i ; 改为:int k,q,i;for ( k = 0; k m; k+ ) q = strlen ( str k);for (i=0; iq; i+)/* * * fou nd */pti = strk,i; 改为:ptij = strki;pt += q ;ptO = 0 ;)main() int m, h ;chars1010,p120;printf( nPlease enter m:n);scanf(n%d, &m); gets(s0);printf( nPlease

118、enter %d string:nn, m );for ( h = 0; h m; h+ ) gets( sh);fun(s, m, p );printf( HnThe result is : %sn p );)解题思路:第一处:保留字int错写成Int。第二处:字符数组的字符串书写格式错误。第 61套给定程序MODI1.C中函数fun的功能是:给一维数组a 输入任意4 个整数,并按下例的规律输出。例如输入1、2、3、4 , 程序运行后将输出以下方阵。4 12334 12234 11234请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行, 也

119、不得更改程序的结构!给定源程序:#include #define M 4* *found */void fun(int a) 改为:void fun(int *a) intprintf(MEnter 4 number : ) ;for(i=0; i0;i ) k=aM-l;for(j=M-1 ;jO;j )/*found*/aaj=aj-l; 改为:aj=aLj-l;a0=k;for(m=0; mM; m+) printf(%d ,am);printf(n);)1main() intaM;fun(a); printf(nn);)解题思路:第一处:在函数fun体中,a是一个整型数组,所以形参a应

120、定义为指针型整数变量。第二处:变量书写错误,aa应为a。第 62套给定程序MODI1.C中 fu n 函数的功能是:求 s = aa. aa -. - aaa - aa - a( 此处aa a a 表 示 n 个 a, a 和 n 的 值 在 1 至 9 之间)例 如 a = 3, n = 6, 则以上表达式为:s = 333333 - 33333 - 3333 - 333 - 33 - 3 其值是:296298a 和 n 是 fu n 函数的形参,表达式的值作为函数值传回main函数。请改正程序中的错误,使它能计算出正确的结果。注意: 不要改动m ain函数,不得增行或删行,也不得更改程序的

121、结构!给定源程序:#include long fun (int a, int n) intj ;/* *孝 字 found */long s = 0, t = 1 ;for (j = 0 ; j n ; j+)t = t * 10 + a ;s = t ;for(j = 1 ;j n ;j+) /* * *fou nd * */t = t% 10;改为:longs = 0,t = 0;改 为 : t=t/10;)return(s);)main() int a, n ;printf( nPlease enter a and n:M) ;scanf( n%d%d; &a, &n );printf(

122、 nThe value of function is: %ldnM, fun ( a, n );)解题思路:第一处:根据for循环计算I的值可知,变量t的初值不正确,应为0。第二处:每次循环都是取t除 以10的值,而不是取余数,所以应改第6 3套给定程序MODILC中 函 数 fu n 的功能是:计算并输出high以内最大的10个素数之和。high的值由主函数传给fun函数。若 high的值为: 100,则函数的值为: 732。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include int f

123、un( int high ) int sum = 0, n=0, j, yes;/* * fou nd */while (high = 2) & (n 10) yes = 1;for (j=2; j= 2) & (n 10)改为:yes=0; break;if (yes) sum +=high; n+; high-;return sum ;main ()(prinlf(%dn, fun (100);解题思路:第一处:括号没有匹配。Error: While statement missing ) in function fun 在函数 fun 中 While 语句缺少) 。第二处:缺少分号。Er

124、ror: Break statement missing ; in function fun 在函数 fun 中 break 语句缺少; 。 这种题型只要通过编译即可发现程序的错误所在。第 64套给定程序MODI1.C中函数fun的功能是:根据形参m 的 值 (2 m W 9 ),在 m 行 m 列的二维数组中存放如下所示规律的数据,由 main函数输出。例如,若输入2若输入4则输出:则输出:1 21 2 3 42 42 4 6 83 6 9 124 8 12 16请改正程序函数中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#in

125、clude #define M 10intaMM = 0;/* found* *亭 /fun(int *a, int m) intj,k ;for (j = 0 ; j m ; j+ )for (k = 0 ; k m ; k+ )/* * *fOU fid */a皿k = k * j ;改 为 : fun(int aM, int m)改为:ajk=(k+l)*(j+l);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

126、; j+)printf (%4d, aij);printf ( n);解题思路:第一处:在函数体fun中可知,a 是一个字符串数组型变量,所以应改为:fun(int int m)o第二处:根据输出的结果可知,应改为:ajk=(k+l)*(j+l);。第 65套给 定 程 序 M ODU.C中 函 数 fu n 的功能是:读入一个字符串( 长度20 ) , 将该字符串中的所有字符按ASCII码升序排序后输出。例如, 若输入: edcba,则应输出: abcde。请改正程序中的错误,使它能统计出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#inclu

127、de void fun( char l)(char c;inti, j;/* * found* */for( i = strlen( t ); i; i) 改为:for( i = strlen( t )-1; i; i - )for(j = 0;j i;j+ + )/* * *fou nd * # * 字* * * * * * * /if(tU ltj+l)(c = tj;tj = tj+ 1 ;tj + 1 = c;)main()(char s81;printf( XnPlease enter a character string:);gets( s );printf( unnBefore

128、sorting:n s”, s );fun( s );printf( nAfter sorting decendinglyAn %su, s );)解题思路:第一处:外 for循环的初始值应是strlen(t)-l。第二处:由于是按升序排序,所 以 应 if(tjtj+l)第 66套给定程序MODH.C中 函 数 fu n 的功能是:实现两个整数的交换。例如给a 和 b 分别输入:6 0 和 6 5 ,输出为:a = 65 b = 60请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include /* * *fk)

129、und* */void fun ( int a, b ) int t;/* *found* */t = b;b = a ;a = t;改为:void fun ( int*a, int*b )改为:t=*b;*b=*a;*a=t;main () int a, b;printf ( Enter a , b : ); scanf (n%d,%du, &a, &b );fun ( &a , &b );printf ( a = %d b = %dn , a, b );解题思路:第 处 :函数形参定义不正确,在定义第2 个形参时,也应加上int。由于通过该函数实现两数交换,在 C语言中,必须交换地址中的值

130、,所以应定义为int*a,int*b。第二处:要交换地址中的值,不能交换地址,必须指定地址中的值,因此应改为t=*b;*b=*a;*a=t;。第 67套给定程序MODI1.C中函数fun的功能是:先从键盘上输入一个3 行 3 列矩阵的各个元素的值, 然后输出主对角线元素之和。请改正函数fun中的错误或在横线处填上适当的内容并把横线删除, 使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include int fun()(int a33,sum;int i,j;* * fou nd */;应填:sum=0;for (i=0;i3;i+) f

131、or (j=O;j3;j+)/ * * * * * * * * 不 fou nd*不 * * * * * /scanf(%d,aij); 改为:scanf(%d,&aij);for (i=0;i3;i+)sum=sum+a|i|i;printf(Sum=%dn,sum);)main()(fun();)解题思路:第一处:变量sum进行初始化,由于计算累加和,所以应为:sum=0;。第二处:读入整型数,应使用地址读入,所以应为:scanf(%d,&aij); 第 68套给定程序MODI1.C中 fu n 函数的功能是:根据形参m ,计算如下公式的值。1 1 1 1t = 1 + +- + - +

132、+ 2 3 4 m例如,若 输 入 5 , 则应输出2.283333请改正程序中的错误或在下划线处填上适当的内容并把下划线删除, 使它能计算出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include double fun( int m )(double t = 1.0;int i;for( i = 2; i = m; i+ )/* * *fou nd *#*/t+= 1.0/k; 改为:t+=1.0/i;/* found* */应填:return t;)main()(int m;printf( nPlease enter 1 integer

133、number:);scanf( %d, &m);printf( nThe result is %lfn, fun( m );)解题思路:第一处:在此变量k 没有定义过,再根据公式和for循环语句中所用的变量可知,这里的k 实际上是i。第二处:应是返回公式的值,函数中公式的值是存放在临时变量t 中,所以应填return t;。第 69套给定程序MODU.C中 fu n 函数的功能是:分别统计字符串中大写字母和小写字母的个数。例如, 给字符串s 输入:AAaaBBbl23CCccccd,则应输出结果: upper = 6, lower = 8。请改正程序中的错误,使它能计算出正确的结果。注意:不要

134、改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include /*found*#*/void fun ( char *s, int a, int b ) 改为:void fun ( char int* a, int *b )while ( *s) if(*s= A & * sv = Z )/* * *fk) und* */*a=a+l ;if ( *s = ra* & *s = *z)/* *found* */*b=b+l;改为:*a=*a+l;改为:*b=*b+l;s+;)main() char s100; int upper = 0, lower = 0 ;pri

135、ntf( nPlease a string : ); gets ( s );fun ( s, & upper, &lower );printf( n upper = %d lower = %dn, upper, lower);)解题思路:第一处:由于a 和 b 是指针变量。第二处:在等式右边应写* a。第三处:在等式右边应写* b。第 70套给定程序MODI1.C中函数fun的功能是:根据整型形参m ,计算如下公式的值。y = -+ .+ .+ .+ -100*100 200*200 300*300 m*m例如,若 m = 2 0 0 0 ,则应输出: 0.000160o请改正程序中的语法错误

136、,使它能计算出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include /* found*/fun ( int m ) double y = 0, d ;int i ;/*ound*/for( i = 100, i = m, i += 100 ) d = (double)i * (double)i;y += 1.0 / d ;改 为 : double fun(int m)改为:for( i = 100; i = m; i += 100 )return( y );main() int n = 2000 ;printf( MnThe result

137、 is %lfnu, fun ( n );解题思路:第一处:由于计算的实型值要通过函数返回,所以必须定义函数的返回类型,只要int或 void可以省略,其他都要定义类型。由于返回是实型值,所以应在数名前加上double等定义,如果使用float则精度不够,所以在这里不能使用float定义。第二处:在 for循环中,两 个 “ ; ”不可省略,在此把“ ; ”错写成第71套给定程序MODI1.C中函数fun的功能是:首先把b 所指字符串中的字符按逆序存放, 然后将a 所指字符串中的字符和b 所指字符串中的字符,按排列的顺序交叉合并到c 所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当 a

138、 所指字符串中的内容为“ abcdefg,b 所指字符串中的内容为“1234”时,c 所指数组中的内容应该为 a4b3c2dlefg;而 当 a 所指字符串中的内容为“1234”,b 所指字符串中的内容为abcdefg”时,c 所指数组中的内容应该为“ lg2f3e4dcba”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include void fun( char *a, char *b, char *c )(int i , j; char ch;i = 0; j = strlen(b)-l;/

139、* * * * * * * * * * * 不 found */while ( i j ) 改为:while(ij) ch = bi; bi = bj; bj = ch;i+; j-;)while ( *a II *b ) / * * * * * * * * * * 字 星 found */If(*a)改为:if(*a) *c = *a; C+; a+; if(*b) *c = *b; C+; b+; )*c = 0;)main()charsl100,s2100,t200;printf(nnEnter si string : ,);scanf(,%s,sl);printf(HnEnter s2

140、 string : u);scanf(%s,s2);fun( si, s2, t );printf(nnThe result is : %sn, t );)解题思路:第一处:应该判断i 是否小于j , 所以应改为:while(ij)o第二处:if错写成If。第72套给定程序MODI1.C中函数fu n 的功能是:将 s 所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。 例如, 当 s 所指字符串为: “ ABCD” 时, 则 t 所指字符串中的内容应为: ABCDDCBA”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的

141、结构!给定源程序:#include #include /* *found* * */void fun (char s, char t)改为:void fun (char *s, char *t)int i, d;d = strlen(s);for (i = 0; id; i+) ti = si;for (i = 0; id; i+) td+i = sd-l-i;/* * found * */t2*d-ll = 0;改为:t2*d=0;main()char s100,t100;printf(HnPlease enter string S:M); scanf(M%sn, s);fun(s, t);

142、printf(nThe result is: %snn, t);解题思路:第一处:从函数体fun中可知,两个均为字符指针型变量,应改为:void fun (char *s, char *t)o第二处:字符串结束位置错误,应改为:t2*d=0;。第7 3套给定程序M ODU.C中 函 数fu n的功能是: 求出以下分数序列的前n项之和。 和值通过函数值返回到main函数。2 3 5 8 13 211 2 3 5 8 13例如,若n = 5 ,则应输出:8.391667.请改正程序中的错误,使它能计算出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#i

143、nclude /* found*/fun ( int n ) int a, b, c, k; double s;s = 0.0; a = 2; b = 1;for ( k = 1; k = n; k+ ) /* found 字*/改为:double fun (int n)s = s + (Double)a / b;c = a; a = a + b; b = c;改为:s = s + (double)a / b;return s;main() int n = 5;printf( HnThe value of function is: %lfn, fun ( n ) );)解题思路:第 处 :由于

144、计算的实型值要通过函数返回,所以必须定义函数的返回类型,只要int或 void可以省略,其他都要定义类型。由于返回是实型值,所以应在数名前加上double或 float等定义。第二处:double的 第 1 个字母错写成大写D。第 74套给定程序MODILC的功能是: 读入一个整数kQWkWlOOOO),打印它的所有质因子( 即所有为素数的因子) 。 例如,若输入整数:2 3 1 0 ,则应输出:2、3、5、7、11,请改正程序中的语法错误,使程序能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include /* #found */IsPr

145、ime ( int n ); 改为:IsPrime ( int n ) int i, m;m = 1;for ( i = 2; i n; i+ )/* found*/if !( n%i) 改为:if (!(n% i) m = 0; break ; return ( m );)main() intj, k;printf( unPlease enter an integer number between 2 and 10000: ); scanf( M%dH,&k);printf( HnnThe prime factor(s) of %d is( are k );for( j = 2; j = k

146、; j+ )if( ( !( k%j) )&( IsPrime( j ) printf( n %4d, j );printf(n);)解题思路:第一处:函数定义的行尾有多余的分号。第二处:条件判断缺少圆括号。第 75套给定程序MODILC中 函 数 fu n 的功能是: 判断ch 中的字符是否与str所指串中的某个字符相同; 若相同,什么也不做,若不同,则将其插在串的最后。请改正程序中的错误,使它能进行正确的操作。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include /* *found* */void fun(char str, c

147、har ch ) while ( *str & *str != ch ) str+;/* i * * 萃* * * * * * * /if ( *str = ch ) str 0 J = ch;/*found*#*/strl = ,O,;改为:void fun(char *str, char ch)改为:if(*str!=ch)改为:strl = 0;main() char s81 J, c ;printf( nPlease enter a string:n); gets ( s );printf (un Please enter the character to search : ) ;c

148、= getchar();fun(s, c );printf( unThe result is %snu, s);)解题思路:第一处:第 1个形参应该是字符串类型,所以应改为:void fun(char *str, char ch)o第二处:应该是判断不相等,所以应改为:if(*str!=ch)。第三次:置字符串结束符错误,所以应改为:strl = O;。第 76套给定程序MODILC中 函 数 fu n 的功能是: 判断一个整数是否是素数, 若是返回L 否则返回0。 在 main()函数中,若 fun返 回 1 输出Y E S ,若 fun返回0 输出NO!。请改正程序中的错误,使它能得出正确

149、的结果。注意:不要改动main函数。不得增行或删行,也不得更改程序的结构!给定源程序:#include int fun ( int m ) int k = 2;while ( k = m & (m%k)/* * found */k+/ * * * * * * * * * * 字 found */if (m = k )return 1;else return 0;改为:k+;改为:if (m = k )main() int n;printf( unPlease enter n: “ ) ; scanf( %d, &n );if(fun(n)printf(nYESnu);else printf(

150、NO!n);解题思路:第一处:语句后缺少分号。第二处:条件判断相等的符号是= = 。第 77套给定程序M0DI1.C中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在 t 中。高位仍在高位,低位仍在低位。例如,当 s 中的数为:87653142时,t 中的数为:7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include void fun (long s, long *t) int d;long sl=l; * * * * * * * * * * * 不 found */t = 0

151、;改为:*t=0;while ( s 0) d = s%10;/ * * * * * * * * * * 字 found */if(d%2 = 0) 改为:if(d%2!=0) *t = d * si + *t;si *= 10;)s/= 10;)main() long s, t;clrscr();printf(nnPlease enter s:); scanf(u%ldu, &s);fun(s, &t);printfCThe result is: %ldn, t);)解题思路:第一处:由于t 是一个指针变量,赋初值的方式应为:*t=0;。第二处:d%2条件判断时应为不是0 , 所以应改为:i

152、f(d%2!=0)。第 78套由 N 个有序整数组成的数列已放在一维数组中,给定程序MODI1.C中函数fun的功能是:利用折半查找算法查找整数m 在数组中的位置。若找到,返回其下标值;反之,返回-1。折半查找的基本算法是: 每次查找前先确定数组中待查的范围: low和 high (lowhigh,查找结束。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include #define N 10/*found*/void fun(int a, int m ) 改为:int fun(int a,int m) int low=

153、0,high=N-1 ,mid;while(low=high) mid=(low+high)/2;if(m amidj) 改为:else if(m amid)low=mid+l;else return(mid);)return(-l);)main() int i,aN=-3,4,7,9,13,45,67,89,100,180 ,k,m;printf(a数组中的数据如下for(i=0;i=0) printf(m=%d,index=%dnH,m,k);else printf(nNot be found!nH);)解题思路:第一处:函数有返回值,不能定义为v o id ,所以应改为:int fun(

154、int a口 , int m)。第二处:if错定成If。第 79套给定程序MODILC中 函 数 fu n 的功能是:将 tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。 例如,若输入Ab,cD”,则输出“ AB, CD”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include char* fun( char tt)int i;for( i = 0; tti; i+ )if(宣 v= tti )11( tti v= z)/* *found* */改为:if( a = tti )&

155、( tti = ,2*)tti += 32;return( tt);)main()(char tt81;printf( MnPlease enter a string: );改为:tti-=32;gets( tt);printf( nThe result string is:n%s, fun( tt);)解题思路:第 处 :判断是小写字母,则条件应该是与的关系。第二处:小写字母的ASCH值减去32正好是其大写字母。第 80套给定程序M 0DU.C中函数fun的功能是:输 出 M 行 M 列整数方阵,然后求两条对角线上元素之和,返回此和数。请改正程序中的错误,使它能得出正确的结果。注意:不要改动

156、main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #define M 5/* * * * * * * * * * 字 不 found */int fun(int n, int xx) int i, j, sum=0;printf( nnThe %d x %d matrix:n, M, M );for( i = 0; i M; i+ ) for(j = 0;jM ;j+)/* * * * * * * * * * 字, found */printf(%f, xxij);printf(n);改为:int fun(int n,int xxM)改为:printf(%( i

157、 ,xxijj);for( i = 0 ; i n ; i+ )sum += xxii+xxi n-i-1 ;return( sum);main() int aaMM=1,2,3,4,5,4,3,2,1,0),(6,7,8,9,0,9,8,7,6,5, 3,4,5,6,7);printf ( nThe sum of all elements on 2 diagnals is %d.,fun( M, aa );解题思路:第一处:形参必须定义字符串数组的长度,所以应改为:intfun(intn,intxxM)。第二处:由于xx是整型的双维数组,不能用浮点型输出,所以应改为:printf(d,xxi

158、j);。第 81套给定程序MODU.C中函数fun的功能是:根据整型形参m ,计算如下公式的值。1 1 1 1y = 1 + + + .+ .+ 2*2 3*3 4*4 m*m例如,若 m 中的值为: 5 , 则应输出:1.463611。请改正程序中的错误,使它能得出正确的结果。注意: 不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include double fun ( int m ) double y = 1.0 ;inti;/* * * * * * * * * * * 豕 * found * *亭 /for(i = 2 ; i m ; i+)/* * foU

159、 fid */y += 1 / (i * i) ;return( y ) ;改为:for(i=2; i=m; i+)改为:y+=l./(i*i);main() int n = 5 ;printf( nnThe result is %lfnu, fun ( n );解题思路:第一处:使用for循环计算公式,必须计算到m ,所以应改为for(i=2;iv=m;i+)。第二处:在除法运算中,如果除数和被除数都是整数,所以所除结果也是整数,因此应改为y+=l./(i*i)。第 82套给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t 中。高位仍

160、在高位, 低位仍在低位。例如,当 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)main() long s, t;printfCAnPlease enter s:M); scanf(%ld, &s);fun(s, &t);printf

161、(nThe result is: %ldn, t);解题思路:第一处:在函数fun体中,t 是一个指针型变量,因此定义形参时也应定义指针。第二处:条件应该s 0 ,所以应改为:while(s0)o第83套给定程序MODI1.C中函数fun的功能是:先将s 所指字符串中的字符按逆序存放到t 所指字符串中,然后把s 所指串中的字符按正序连接到t 所指串的后面。例如:当 s 所指的字符串为:ABCDE”时, 贝 Ijt所指的字符串应为: EDCBAABCDE”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #

162、include void fun (char *s, char *t)int i;si = strlen(s);for (i=0; isl; i+)改为:inti,si;ti = ssl-i;改为:=for (i=0; isl; i+)tsl+i = si;t2*sl = W;)main() chars100,t100;printfCVnPlease enter string s:H); scanf(u%sn, s);fun(s, t);printf(nThe result is: %sn, t);解题思路:第一处:变量s i没有定义。第二处:在 C 语言中,字符串开始位置从0 开始的,所以应

163、改为:=第84套给定程序MODI1.C中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为a u, 则将其转换为其后的第5 个字母; 若小写字母为v z ,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f ; 若形参是字母W,则转换为小写字母bo请改正函数fun中指定部位的错误, 使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行, 也不得更改程序的结构!给定源程序:#include #include char fun(char c) if( c=A & c=,a, & c=v&c=z,)c=c-21;return c;改为

164、:c=c+32;改为:c=c+5;main() char cl,c2;printf(nnEnter a letter(A-Z): ); cl=getchar();if( isupper( cl ) c2=fun(cl);printf(MnnThe letter %c change to %cn, cl,c2);else printf(nEnter (A-Z)!nM);解题思路:第一处:变量c 错写成大写C 了。第二处:要求转换为其后的第5 个字母,所以应改为:c=c+5;。第 85套给定程序MODI1.C中函数fun的功能是:先将在字符串s 中的字符按正序存放到t 串中,然后把s 中的字符按逆

165、序连接到t 串的后面。例 如 : 当 s 中的字符串为: ABCDE”时,则 t 中的字符串应为:ABCDEEDCBA”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include void fun (char *s, char *t) int i, si;si = slrlen(s);/* found 字*/for( i=0; i=sl; i +)ti = si;for (i=0; isl; i+)改 为 : for( i=0; i=sl; i +)tsl+i = ssl-i-!J;/* *fou

166、nd * */tsl = W; 改为:t2*sl = 0;)main() char s100, t100;printf(nPlease enter string s:); scanf(%s, s);fun(s, t);printf(The result is: %sn, t);)解题思路:第一处:变量si错写成了 si。第二处:新串t 的字符串结束位置不正确,应该是两倍的S1距离。第 86套给定程序MODI1.C中函数fun的功能是:根据输入的三个边长( 整型值) , 判断能否构成三角形;构成的是等边三角形, 还是等腰三角形。若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2 ,若能构

167、成一般三角形函数返回1 ,若不能构成三角形函数返回0。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行,也不得更改程序的结构!给定源程序:#include #include /*found*/void fun(int a,int b,int c) 改为:int fun(int a,int b,int c) if(a+bc & b+ca & a+cb) if(a=b & b=c)return 3;else if(a=bllb=clla=c)return 2;* * *fOU fid */else retrun 1 改为:else retrun

168、1;)else return 0;)main() int a,b,c,shape;printf(nnlnput a,b,c: ); scanf(n%d%d%dn,&a,&b,&c);printf(nna=%d, b=%d, c=%dn,a,b,c);shape =fun(a,b,c);printf(HnnThe shape : %dnn,shape);)解题思路:第一处:函数有返回值, 不能定义为v o id ,所以应改为:a,intb,intc)。第二处:语句后缺少分号。第 87套给定程序MODI1.C中函数fun的功能是:统计一个无符号整数中各位数字值为零的个数, 通过形参传回主函数;并把

169、该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为零的个数为3 , 各位上数字值最大的是8。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行,也不得更改程序的结构!给定源程序:#include int fun(unsigned n, int *zero) int count=0,max=0,t;do t=n%10;/* * n d *琴 /if(t=O)改为:if(t=O)count+;if(maxt) max=t;n=n/10;while(n);/* * fou nd */zero=count; 改为:*

170、zero=count;return max;)main() unsigned n; int zero,max;printf(HnInput n(unsigned): ); scanf(n%d,&n);max = fun( n,&zero );printf(nnThe result: max=%d zero=%dn,max,zero);)解题思路:第一处:条件相等符号为二= 。第二处:由于zero是一个指针型变量,所以给它进行赋值时应带指针,因此应改为: *zero=count;o第 88套给定程序MODU.C中函数fun的功能是:按顺序给s 所指数组中的元素赋予从2 开始的偶数,然后再按顺序对

171、每五个元素求一个平均值,并将这些值依次存放在w 所指的数组中。 若 s 所指数组中元素的个数不是 5 的倍数,多余部分忽略不计。例如s 所指数组有14个元素,则只对前10个元素进行处理,不对最后的4 个元素求平均值。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include #define SIZE 20fun(double *s, double *w) int k,i; double sum;for(k=2,i=0;iSIZE;i+) si=k; k+=2; /* * *fk) und* */sun=O.O;for(

172、k=0,i=0;iSIZE;i+) sum+=si;/* Qund 字孝字*/改为:sum=0.0;if(i+l%5=0) wk=sum/5; sum=O; k+; )return k;)main() double aSIZE,bSIZE/5;int i, k;k = fun(a,b);printf(The original data:nH);for(i=0; iSIZE; i+) if(i%5=0) printf(nnn);printf(M%4.0f, ai);)printf(nnnThe result :n);for(i=0; ik; i+) printf(M%6.2f H,bi);pri

173、ntf(nnn);)解题思路:第一处:变量名书写错误,应为sum。改为:if(i+l)%5=0)第二处:由于的优先级比+ 优先,所以必须加上括号,因此改为:if(i+l)%5=0)。第 89套给定程序MODI1.C中函数fun的功能是:计算整数n 的阶乘。请改正程序中的错误或在下划线处填上适当的内容并把下划线删除, 使它能计算出正确的结果。注意:不要改动m ain函数, 不得增行或删行,也不得更改程序的结构!给定源程序:#include double fun(int n)double result=1.0;while (nl & n170)/*found*/result*=-n;/* foun

174、d* */r e t u r n :)main()改 为 : result*=n ;应填:resultint n;printfCEnter an integer:);scanf(%d,&n);printf(nn%d!=%lgnn,n,fun(n);)解题思路:第一处:-n是先减1, n-是后减1。本题应该先乘以n , 再 减 1 , 才正确。第二处:返回计算结果,所以应填:result。第 90套数列中, 第一项值为3 ,后一项都比前一项的值增5;给定程序M ODH.C中 函 数 fu n 的功能是:计算前n(4n50)项的累加和; 每累加一次把被4 除后余2 的当前累加值放入数组中, 符合此

175、条件的累加值的个数作为函数值返回主函数。例 如 ,当 n的 值 为 2 0 时 , 该 数 列 为 3,8,13,18,23,28,.,93,98。 符 合 此 条 件 的 累 加 值应为42,126,366,570,1010。请改正函数fun中指定部位的错误, 使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行, 也不得更改程序的结构!给定源程序:#include #define N 20int fun(int n.int *a) int i,j,k,sum;/* n d *x/sum=j=0; 改为:sum=j=0;for(k=3,i=0;in;i+,k4-=5) sum=

176、sum+k;/ * * * * * * * * * * 孝 , 不 *fou nd * * * * , /if(sum%4=2) 改为:if(sum%4=2)afj+=sum;)return j;)main() int aN,d,n,i;printf(MnEnter n (4n=50): n);scanf(%d,&n);d=fun(n,a);printfCAnXnThe result :n);for(i=0; id; i+)printf(u%6d,ai);printf(nnnu);)解题思路:第一处:连续赋初值为0 , 中间使用条件相等符号了,所以应改为:sum=j=0;。第二处:条件相等符号

177、为= = 。第 91套给定程序MODI1.C中函数fun的功能是:计算n 的 5 次方的值( 规定n 的值大于2、 小于8),通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,7 的 5 次方是16807,其低3 位数的和值是15o请改正函数fun中指定部位的错误, 使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include int fun( int n ,int *value ) int d.s,i;/* 亭 萃 水 * * 不d=0; s=0;for(i=l; i=5; i+) d

178、=d*n;*value=d;for(i=l; i=3; i+) s=s+d%10;/* * n d *琴 /d=d10;改为:d=l; s=0;改 为 : d=d/10;return s;main() int n, sum, v;do printf(nnEnter n( 2n8): );scanf(d”,&n); while(n=8);sum=fun( n,&v );printf(nnThe result:n value=%d sum=%dnn,v,sum);解题思路:第一处:变量d 的初始值应为1。第二处:整除的符号是/ 。第 92套给定程序MODI1.C中函数fun的功能是:找出100至

179、n( 不大于1000)之间三位数字相等的所有整数, 把这些整数放在s 所指数组中, 个数作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行, 也不得更改程序的结构!给定源程序:#include #define N 100int fun(int *s, int n) int i,j,k,a,b,c;j=0;for(i=100; in; i+) /* found */k=n;改为:k=i;a=k%10;k/=10;b=k%10; k/=10;/*found*/c=k%10 改为:c=k%10;if( a=b & a=c ) sj+=

180、i;)return j;)main() int aN, n, num=O, i;do printf(nnEnter n( 1000);num = fun( a,n );printf(HnnThe result :n);for(i=0; inum; i+)printf(n%5dn,ai);printfCXnXn);)解题思路:第一处:k 应该取循环变量i 的值,所以应改为:k=i; o第二处:语句后缺少分号。第 93套给定程序MODI1.C中函数fun的功能是: 将字符串中的字符按逆序输出, 但不改变字符串中的内容。例如,若字符串为a b ed ,则应输出:deba,请改正程序中的错误,使它能计

181、算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include /* found 字 * * * * * * * * * * * /fun (char a) if(*a) fun(a+l);/ * * * * * * * * * * 字, found */prinlf(%c *a);改为:改为:fun (char *a)printf(%c , *a);main() chars10=uabcdu;printf( 处理前字符串二% sn处理后字符串二 ” , s);fun(s); printf(”n”) ;解题思路:第一处:形参a 应定义为字符串指针

182、。第二处:语句中缺少逗号。第 94套给定程序MODI1.C中函数fun的功能是:从 3 个红球,5个白球, 6 个黑球中任意取出8 个作为一组, 进行输出。在每组中, 可以没有黑球, 但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i 的值代表红球数, j 的值代表白球数, k 的值代表黑球数。请改正函数fun中指定部位的错误, 使它能得出正确的结果。注意:不要改动main函数, 不得增行或删行, 也不得更改程序的结构!给定源程序:#include int fun() int i,j,k,sum=0;printf(nThe result :nnu);/*亭 * n d

183、 *琴豕*/for(i=0; i=3; i+) for(j=l; j=0 & K=6) sum=sum+l;printf(nred:%4d white:%4d black:%4dn,i,j,k);改为:for(i=l; i=0 & k=6)return sum;main() int sum;sum=fun();printf(nsum =%4dnn,sum);解题思路:第一处:外 for循环的初始变量i 的值应为1 o第二处:变量k 写成了大写K 了。第 95套例如,若给m 输 入 “ 0 0 ,给 n 输入9 0 ,则函数求得的一个根值为2.000。请改正程序中的错误,使它能得出正确结果。注意

184、:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include #include double funx(double x) return(2*x*x*x 4*x*x+3*x-6); double fun( double m, double n)/*字*found*/int r;r=(m+n)/2; * 字 found */while(fabs(n-m)0.001) if(funx(r)*funx(n)0.001)1 .第 96套给定程序MODU.C中 函 数 fu n 的功能是:计算S = f(-n) + f(-n+l) +.+ f(0) + f(l) + f(2

185、) +.+ f(n )的值。例如,当 n 为 5 时, 函数值应为:10.407143. f(x)函数定义如下:r(x+l)/(x-2) x0 且 x r2f(x) = T 0 x=0 或 x=2HX-1)/(X-2) X0请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include * * * * * * * * * * 字 found */f( double x) 改为: double f( double x)(if(x = 0.0 llx= 2.0)return 0.0;else if (x0

186、.0)return (x -l)/(x-2);elsereturn (x +l)/(x-2);)double fun( int n ) int i; double s=0.0, y;for (i= -n; i=n; i+)y=f(1.0*i); s += y;/* found 字 * * * * * * * * * * * /return s改为:return s;)main ()printf(fn”, fun(5);)解题思路:第一处:由于返回值是实数型值,所以在函数名前加上double。第二处:语句后缺少分号。第 97套给定程序M 0 DI1.C中函数fun的功能是:将一个由八进制数字字符

187、组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5 位八进制数字字符。例如,若输入:77777,则输出将是:32767o请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include int fun( char *p ) int n;n=p+;while( *p!=0) n=n*8+*P-,o,;改为:n= *p-*0*;改为:n=n*8+ *p-*0*;p+;)return n;)main() char s6; int i; int n;printf(nEnter a string (Ocatal

188、 digits): ); gets(s);if(strlen(s)5) printf(HError: String too longer !nn);exit(0); for(i=0; si; i+)if(si,7,) printf(nEiTor: %c not is ocatal digits!nn,si);exit(O); printf(nThe original string: ); puts(s);n=fun(s);printf(n%s is convered to integer number: %dnnn,s,n);解题思路:第一和第二处:*p错写成* P, O错写成第 98套给定程

189、序MO D I 1 . C 中函数fun的功能是: 删除p 所指字符串中的所有空白字符( 包括制表符、回车符及换行符) 。 输入字符串时用 # 结束输入。请改正程序中的错误,使它能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include #include #include fun ( char *p) int i,t; char c80;For (i = 0,t = 0; pi ; i+)if(!isspace(*(p+i) ct+=pi;/ * * * * * * * * * * 字 * found*/ct=nO;strcpy(p,c);

190、main() char c,s80;int i=0;printf(HInput a string:0);c=getchar();while(c!=#) si=c;i+;c=getchar(); si=W;fun(s);puts(s);)解题思路:第一处:保留字for错写成For。第二处:置字符串结束符错误,应该是:0。改为:for (i = 0,t = 0; pi ; i+)改为:ct= AO1;第 99套给定程序MODILC中函数fun的功能是:把主函数中输入的3 个数,最大的放在a 中, 最小的放在c 中,中间的放在b 中。例如,输入的数为:55 12 3 4 , 输出结果应当是:a=55

191、.0,b=34.0,c=12.0o请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include void fun(float *a,float *b,float *c)/* nd*不 字 * * * * * * * /float *k;if( *a*c) k=*c; *c=*a; *a=k; if( *bv*c)改为:float k;改为:if(*a*c) k=*b; *b=*c; *c=k; main() float a,b,c;printf(HInput a b c: ); scanf(u%f%f%fH,&a,&b,

192、&c);printf(na = %4.1f, b = %4.1f, c = %4.1fnn,a,b,c);fun(&a,&b,&c);printf(na = %4.1f, b = %4.1f, c = %4.1fnnu,a,b,c);解题思路:第一处:在函数fun体中,k 是一个浮点型变量,所以应改为:float k;o第二处:三个数比较大小,第 1 个条件是第1 个比第2 个小,则交换。第 3 个条件是第2 个比第3 个小,则也交换。第 2 个条件是应该第1 和第3 个小,则交换就符合题意了,所以应改为:if(*av*c)。第 100套在主函数中从键盘输入若干个数放入数组中, 用 0 结束输

193、入并放在最后一个元素中。给定程序MODI1.C中函数fun的功能是: 计算数组元素中值为正数的平均值( 不包括0)例如:数组中元素中的值依次为:39,-47,21,2,-8,15,0,则程序的运行结果为:19.250000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构!给定源程序:#include double fun ( int x)/*字 不 found */int sum = 0.0;int c=0, i=0;while (xi != 0)if(xi0)sum += xi; C+; i+;)/* found */sum = c;return sum;改为:double sum=0.0;改为:sum /= c;main() intx1000;int i=0;printf( unPlease enter some data (end with 0):);do scanf(d”, &xi); while (xi+ != 0);printf(n%fn fun ( x );解题思路:第一处:由于sum是存放实数值,因此不能定义为整型,所以应改为double sum=0.0;或 float sum=0.0;。第二处: 除的运算符是

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号