1、C语言笔试程序改错题 C语言机试程序改错题gc22.c程序是输入一个字符串, 将此字符串中最长的单词输出,程序在注释行附近有两个错误,请试调试改正,但调试改正中不得增删语句。 int alph(char c) if(c=a&c=A&c=Z) return(1); else return(0); /* find 1 */ int longest(char str) / int longest(char *str) int len=0,i,length=0,flag=1,point,place; for(i=0;ilength) length=len; place=point; len=0; re
2、turn(place); main( ) int i; char line100; printf(Enter stringn); gets(line); printf(the longest is:); for(i=longest(line);alph(linei);i+) printf(%c,linei); printf(n); 2下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。 #define NULL 0 struct stud long num; char name10; float
3、score; struct stud *next; ; /* comment */ int n; struct stud create() /struct stud *create(void) struct stud *head,*p1,*p2; n=0; p1=p2=(struct stud *)malloc(sizeof(struct stud); scanf(%ld,%s,%f,&p1-num,p1-name,&p1-score); /* comment */ head=NULL; while(p1!=0) /while(p1-num!=0) n=n+1; if(n=1) head=p1
4、; else p2-next=p1; p1=(struct stud *)malloc(size(struct stud); scanf(%ld,%s,%f,&p1-num,p1-name,&p1-score); p2-next=NULL; return(head);gc56.c程序用于将字符串中的小写字母转换为大写字母,程序中有两处错误,请调试改正之,但不得增删语句.#includevoid main(void) char s255; int i; scanf(%s,s); for (i=0;si;i+) if(si=b & si=a & si=z si = si +a + A; /si =
5、 si -a + A printf(%s,s);gc57.c的功能是互换给定数组中的最大数和最小数。如将下面8个数: 5,3,1,4,2,8,9,6变成: 5,3,9,4,2,8,1,6程序中,最大数与最小数的互换操作通过函数调用来实现,让指针max和min分别指向最大数和最小数。程序有二处错误,请改正。注意:不得增行和删行,也不得修改程序的结构。main() int i; static int a8=5,3,1,4,2,8,9,6; void jhmaxmin(); printf( Original array: n); for(i=0; i8; i+) printf(%5d,ai); pr
6、intf(n); jhmaxmin(a,8); printf( Array after swaping max and min: n); for(i=0; i8; i+) printf(%5d,ai); printf(n);void jhmaxmin(p,n) int p, n; / int *p,n; int t, *max, *min, *end, *q; end=p+n; max=min=p; for(q=p+1; q*max) max=q; if(*qmax) min=q; /*q*min t=*max; *max=*min; *min=t;gc101.c的功能为:输入8个整数,使用指
7、针以选择法对其进行排序(从小到大).程序中有两处错误代码,请改正.注意,不得改变程序结构。#include main() int a8,*p=a; int i,j; int tempmin,tempcode; printf(n input the numbers:n); for (i=0;i8;i+) scanf(%d,p+i); tempmin=*p; for (i=0;i7;i+) for (j=i;j8;j+) if (j=i|*(p+j)tempmin) tempmin=*(p+i); /tempmin=*(p+j); tempcode=j; ; if (tempcode!=i) *(
8、p+tempcode)=*(p+i); *(p+j)=tempcode; /*(p+i)=tempmin; for (i=0;i8;i+) printf(%d, ,*(p+i); return(1); gc137.c中的sub函数的功能是:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。请改正函数sub中的两个错误,使它能得出正确的结果。注意:不要改动main 函数,不得增行或删行,也不得修改程序的结构。 #include stdio.h #include conio.h #include
9、string.h void sub( char *s, char *t ) int i, d; d=strlen( s ); for( i=1; i d ; i+ ) /for(i=0;id;i+) ti=sd-1-i ; for( i=0; id; i+ ) td+i=si ; t2*d=/0 ; /t2*d=0; main( ) char s100, t100; clrscr( ) ; printf( n Please enter string S : ); scanf(%s , s ); sub(s,t) ; printf( n The result is : %s n , t ); g
10、c155.c的功能是从键盘输入一行字符,分别统计其中的字母、数字、空格和其它字符的个数。但该程序中有2处错误,请调试并改正。不允许改变程序结构和增删语句。#include main() int c; int letter=0,digit=0,space=0,other=0; printf(Please input a string:n); while (c=getchar()!=n) /while(c=getchar()!=n) if (c=a&c=A&c=0&c=9) digit+; else if (c= ) /else if(c= ) space+; else other+; print
11、f(letter=%d, ,letter); printf(digit=%d, ,digit); printf(space=%d, ,space); printf(other=%dn,other);gc163.c的功能是实现求1000以内的自然数中的完数及其个数(所谓完数,指它恰好等于除它本身之外的因子之和,如:6=1+2+3,28=1+2+4+7+14),并显示结果。但该程序中有2处错误,请调试并改正。不允许改变程序结构和增删语句。#include void main(void) int i,k,m,n,s,p; /p=0 int a100; printf(n10000以内的自然数中的完数有
12、:); for (i=2;i=10000;i+) s=0; m=0; for (k=1;k=i/2;k+) if (i%k=0) s=s+k; am=k; m=m+1; if (s=i) /if(s=i) p=p+1; printf(n%d=%d,s,a0); n=1; while (nm) printf(+%d,an); n=n+1; printf(n总个数为: %dn,p);gc165.c 程序中的函数find_str()用来返回字符串s2在字符串s1中第一次出现的首地址;如果字符串s2不是s1的子串,则该函数返回空指针NULL。 现在程序中发现有两个错误,错误就出现在那些注释行的附近,请你找出错误并将它们改正过来,要求在调试过程中不允许改变程序结构,更不得增删语句。include #include char *find_str(char *s1,char *s2) int i,j,ls2; ls2=strlen(s2); for(i=0;i=strlen(s1)-ls2;i+)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1