C语言笔试--程序改错题
更新时间:2024-04-13 02:48:01 阅读量: 综合文库 文档下载
C语言机试程序改错题
gc22.c程序是输入一个字符串, 将此字符串中最长的单词输出,程序在注释行附近有两个错误,请试调试改正,但调试改正中不得增删语句。
int alph(char c) { if((c>='a'&&c<='z')||(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;i<=strlen(str);i++) if(alph(str[i])) if(flag) { flag=0; point=i; } else len++; else /* Find 2 */ { flag=0; /////////////flag=1; if(len>length) { length=len; place=point; len=0; } } return(place); }
main( ) { int i; char line[100]; printf(\ gets(line);
printf(\
for(i=longest(line);alph(line[i]);i++) printf(\ printf(\ }
2下列程序是建立一个包含学生有关数据的单向链表。但该程序有2个错误,错误出现在
每个注释行附近,请调试改正。调试改正中,不得改变程序结构,也不得增删语句。
#define NULL 0 struct stud {
long num; char name[10]; float 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(\ /* ……………comment …………… */ head=NULL; while(p1!=0) //////////while(p1->num!=0) { n=n+1; if(n==1) head=p1; else p2->next=p1; p1=(struct stud *)malloc(size(struct stud)); scanf(\ }
p2->next=NULL; return(head);
}
gc56.c程序用于将字符串中的小写字母转换为大写字母,程序中有两处错误,请调试改正之,但不得增删语句.
#include
{
char s[255]; int i;
scanf(\for (i=0;s[i];i++)
if(s[i]>='b' && s[i]<='z') //////s[i]>='a' && s[i]<='z' s[i] = s[i] +'a' + 'A'; //////s[i] = s[i] -'a' + 'A' printf(\
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 a[8]={5,3,1,4,2,8,9,6}; void jhmaxmin();
printf(\ for(i=0; i<8; i++)
printf(\ printf(\ jhmaxmin(a,8);
printf(\ for(i=0; i<8; i++)
printf(\ printf(\}
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
if(*q t=*max; *max=*min; *min=t; } gc101.c的功能为:输入8个整数,使用指针以选择法对其进行排序(从小到大).程序中有两处错误代码,请改正.注意,不得改变程序结构。 #include int a[8],*p=a; int i,j; int tempmin,tempcode; printf(\ for (i=0;i<8;i++) scanf(\ tempmin=*p; for (i=0;i<7;i++) { for (j=i;j<8;j++) if (j==i||*(p+j) { tempmin=*(p+i); //////////tempmin=*(p+j); tempcode=j; }; if (tempcode!=i) { *(p+tempcode)=*(p+i); *(p+j)=tempcode; /////////////*(p+i)=tempmin; } } for (i=0;i<8;i++) printf(\ return(1); } gc137.c中的sub函数的功能是:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。请改正函数sub中的两个错误,使它能得出正确的结果。注意:不要改动main 函数,不得增行或删行,也不得修改程序的结构。 #include \ #include \ #include \ void sub( char *s, char *t ) { int i, d; d=strlen( s ); for( i=1; i< d ; i++ ) ///////for(i=0;i t[2*d]='/0' ; /////////t[2*d]='\\0'; } main( ) { char s[100], t[100]; clrscr( ) ; printf( \ enter string S : \ scanf(\ sub(s,t) ; printf( \ result is : %s \\n \ } gc155.c的功能是从键盘输入一行字符,分别统计其中的字母、数字、空格和其它字符的个数。但该程序中有2处错误,请调试并改正。不允许改变程序结构和增删语句。 #include int letter=0,digit=0,space=0,other=0; printf(\ while (c=getchar()!='\\n') //////while((c=getchar())!='\\n') if (c>='a'&&c<='z'||c>='A'&&c<='Z') letter++; else if (c>='0'&&c<='9') digit++; else if (c=' ') //////////else if(c==' ') space++; else other++; printf(\ printf(\ printf(\ printf(\} 本程序用于输出如下所示的图形。请将源程序文件中的两个错误改正过来,注意在答题过程中不得对源程序增行或删行,也不得更改程序的结构。 1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321 1234567890987654321 12345678987654321 123456787654321 1234567654321 12345654321 123454321 1234321 12321 121 1 #include int i,j,n; char s[20]=\printf(\ /* ...........comment 1................*/ n=10; //////////////////////n=19; for(i=-n/2; i<=n/2; i++) { for(j=0;j<=15+abs(i); j++)printf(\ /* ...........comment 2................*/ for(j=0;j<=n/2-abs(i);j++)printf(\ for(j=n/2-abs(i); j<19;j++)printf(\ ///////////j=n/2+abs(i)+1 printf(\ } } gc279.c的功能:函数prn_star(m,left)输出正菱形图案,其中参数m 代表图案的行数(为一奇数),left代表图案距屏幕左边的列数。 函数prt_str(m,left)中有两处错误代码,请指出并改正之。 #include for(i=1;i for (j=1;j<=left+(m-(2*p-1))/2;j++) printf(\ for (j=1;j<=2*p-1;j++) printf(\ printf(\ } } main() { int m,left; printf(\请输入正菱形图案的行数:\ scanf(\ printf(\请输入正菱形图案距屏幕左边的列数:\ scanf(\ prn_star(m,left); } gc280.c功能为:M个人围成一圈,从第一个人开始依次从1至N循环报数,每当报数为N时,此人出圈,直到圈中只剩下一个人为止。请按退出次序输出出圈人原来的编号以及留在圈中的最后一个人原来的编号。程序中有两处错误代码,请指出并改正之。 #include #define M 10 /*number of person*/ #define N 2 /*eliminate a person for N compartment*/ void main() { int i,j,k,n; static a[M]; int b[M]; /*eliminate persons from array a to array b */ for (n=0,j=k=M-1;n for (i=0;i b[n]=j+1; /*record No. of eliminated person*/ a[j]=-1; } /*output*/ for (i=0;i printf(\ \ for (i=0;i printf(\} gc304.c中的函数fun()的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。例如:当s中的字符串为:\时,则t中的字符串应为:\。 现在程序中发现有两个错误,错误就出现在那些注释行的附近,请你找出错误并将它们改正过来,要求在调试过程中不允许改变程序结构,更不得增删语句。 #include void fun (char *s, char *t) { int i, st; st = strlen(s); /* .............. comment one .............. */ for(i=0; i < st; i++) t[st] = s[i]; //////////////t[i]=s[i]; for (i=0; i < st; i++) t[st+i] = s[st-i-1]; /* .............. comment two .............. */ t[st] = '\\0'; /////////////t[2*st]='\\0'; } void main( ) { char s[100], t[100]; printf(\ gets(s); fun(s, t); printf(\} gc305.c程序的功能是:对由n个一位数数字组成的数字串,使其前面各数顺序向后移n-m个位置,最后m个数变成最前面的m个数。 请改正程序中的两个错误,使程序能输出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! main() { int number[20],n,m,i; printf(\ scanf(\ printf(\ scanf(\ for(i=0;i scanf(\ scanf(\ move(number,n,m); for(i=0;i printf(\ printf(\ } move(array,n,m) int n,m,array[20]; { int *p,array_end; array_end=*(array+n-1); for(p=array+n-1;p>array;p--) *p=*(p+1); ////////*p=*(p-1); array=array_end; ///////*array=array_end; m--; if(m>0) move(array,n,m); } gc306.c输出如下图案。 AAAAAAA #BBBBBB ##CCCCC ###DDDD ####EEE 程序中有2处错误,请指出改正之。 #include char ch='A'; for (i=0; i<7;i++) //////for(i=0;i<5;i++) { for (j=1;j<=i;j++) printf(\ for ( j=1;j<7;j++) //////for(j=0;j<7-i;j++) printf(\ printf(\ ch++; } } gc307.c功能为:使用指针将数组中元素按升序排序。程序中有两处错误代码,请指出并改正之。 #include int k,m,change,a[10]; int *p1; int **p2=p1; p1=a; printf(\ for (k=0;k<10;k++) scanf(\ for (k=0;k<9;k++) { for (m=0;m<9+k;m++) //////m<9+k改成m<9-k { if ((*p2)[m]>(*p2)[m+1]) { change=(*p2)[m]; (*p2)[m]=(*p2)[m+1]; (*p2)[m+1]=change; } } } for (k=0;k<10;k++) printf(\ return(1); } gc342.c的功能是:计算字符串中子串出现的次数 请改正程序中的两个错误,使程序能输出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include \ #include \ main() { char str1[20],str2[20],*p1,*p2; int sum=0; printf(\ scanf(\ p1=str1;p2=str2; while(*p1!='\\0') { if(*p1==*p2) {while(*p1==*p2||*p2!='\\0') ////////////////||改为&& {p1++; p2++;} } else p2++; ///////////////p1++; if(*p2=='\\0') sum++; p2=str2; } printf(\ getch(); } gc367.c通过接受键盘输入的月数量,再根据当前的月份,可以计算出某一年的月份。例如,当前的月份是10,加输入的月数量5,月份是3;加输入的月数量 –13,月份是9。程序中输出的月份以英文字符显示。CURRENT为当前月份。程序有两处错误,请找出并修正,使之符合上述要求。不得增加行或删除行,也不得更改程序结构。 #define CURRENT 11 #include main() { int month,monthnum; char *ch; char *month_name(int); printf(\scanf(\ /*------------Found Mistake Below------------*/ if(monthnum>=0) month=(CURRENT-1+monthnum)+1; else month=(12+(CURRENT-1+monthnum))+1; ch=month_name(month); printf(\ printf(\%d Months is: %s\\n\ //////////month改为 monthnum } /*------------Found Mistake Below------------*/ char *month_name(int n) { char *name[]={\c\////\前加\ } return(name[n]); gc369.c功能为:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。程序中有两处错误代码,请指出并改正之。不得增加行或删除行,也不得更改程序结构。 *Find the saddle point*/ #include main(){ int i,j,k,flag1,flag2,a[N][M],max,maxi,maxj; for (i=0;i scanf(\ flag2=0; for (i=0;i max=a[j][0]; ///////////// max=a[i][0] for (j=0;j maxj=j; } for (k=0,flag1=1;k printf(\ flag2=1; } } if (flag2) //////////// !flag2 printf(\} gc393.c程序通过接受键盘输入的字符串,通过调用函数trimspace(),实现去掉字符串的前空格和尾空格。 程序有两处错误,请找出并修正,使之符合上述要求。不得增加行或删除行,也不得更改程序结构。 #include char str[100]; void trimspace(char *); gets(str); trimspace(str); puts(str); } /*------------Found Mistake Below------------*/ void trimspace(char *p) { char *q; if(*p!='\\0') q=strlen(p); ////////////////*q=strlen(p) else return; /*------------Found Mistake Below------------*/ for(;*q==' ';q--); *q='\\0'; for(q=p;*q==' ';q++); strcpy(p,q); return; ///////////////册除return }?? gc394.c中函数str1的功能是输入一个英文句子(字符串),将其中每个单词的最后一个字母改写成大写,然后输出此句子。(这里的\单词\是指由空格隔开的字符串)。例如:若输入:\则应输出:\请改正函数str1中的两个错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 #include \#include \#include \void str1(char *p) { int k=0; for(;*p;p++) if(k) { if(p==' ') /////////////*p==' ' { k=0; *p=toupper(*(p-1)); ///////////*(p-1)=toupper(*(p-1)) } } else k=1; } void main() { char str[100]; int d; clrscr(); printf(\ gets(str); str1(str); printf(\ }?? gc397.c功能为:设数组a[10]包括10个整型元素,求出a[10]中各相邻二个元素之和,并将这些和存储在数组b[10]中,最后按每行三个输出。程序中有三处错误代码,请改正.注意,不得改变程序结构。 #include for(i=0;i<=10;i++) ///////////for(i=0;i<10;i++) { scanf(\ //////////&a[i] } for(i=1;i<10;i++) { b[i]=a[i]+a[i-1]; } for(i=1;i<10;i++) { printf(\ } } if ( (i/3)==0) printf(\ //////i%3==0 gc398.c功能为:输入一个大写字母,打印出一个菱形。该菱形中间一行由此字母组成,其相邻的上下两行由它前面的一个字母组成,按此规律,直到字母A出现在第一行和最末行为止。程序中有三处错误代码,请指出并改正之。 例如:输入字母D,打印出如下图形: A BBB CCCCC DDDDDDD CCCCC BBB A #include scanf(\ k=ch-'A'+1; for (i=1;i<=k;i++){ for (j=40;j>=i;j--) printf(\ for (j=1;j<=i-1;j++) //////////////////for(j=1;j<=2*i-1;j++) printf(\ printf(\ } k=ch-'A'; for (i=k;i>=1;i--){ for (i=40;i>=i;i--) ///////////////for(j=40;j>=i;i--) printf(\ for (j=1;j<2*i-1;j++) //////////////for(j=1;j<=2*i-1;j++) printf(\ printf(\ } } gc405.c中,函数fun的功能是:'根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。 例如, 若输入2 则输出: 1 2 2 4 若输入4 则输出: 1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16 程序有两处错误,请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include fun(int **a, int m) ///////////**a改为a[M][M] { int j,k; for (j=0;j for (k=1;k main() { int i,j,n; clrscr(); printf(\fun(a,n); for(i=0;i printf(\ printf(\} } 在给定gc406.c程序中,函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:7531。 请改正函数fun中的三处错误,使它能得出正确的结果。 注意:不得改变程序的结构和算法,也不能增加或删减程序行 #include void fun(long s, long *t) { int d; long sl = 1; /************found************/ t = 0; ///////// *t=0 while (s > 0) { d = s; /************found************/ if (d%2 == 0) //////// d%2!=0 { *t = d * sl + *t; sl *= 10; } /************found************/ s = 10; /////// s/=10 } } main() { long s, t; clrscr(); printf(\ fun(s, &t); printf(\} gc407.c程序的功能是:读入一个数字b,求sum=b+bb+bbb。例如:读入数字7,则输出下列表达式的和sum=7+77+777。请指正程序中的三处错误,使它能得出正确的结果。 注意:不得改变程序的结构和算法,也不能增加或删除程序行。 #include \ #include \main() { int i=-1,j; long int b,temp,sum; scanf(\ ////////// &b do { i++; temp=0; for (j=0;j<=i;j++) temp=temp+(long int)pow(10,j-1)*b; //////temp=(long int)pow(10,j)*b sum+=temp; }while(i<=3); ////////// while(i<3) printf(\} gc453.c程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。程序有两处错误,请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include { char a[]=\int i, j, k; k=strlen(a); for(i=0; i<=k-2; i+=2) for(j=i+2; j<=k; j++ ) //////// for(j=i+2;j<=k;j+=2) if( a[i]a[j] { t=a[i]; a[i]=a[j]; a[j]=t; } puts(a); printf(\} gc461.c程序功能为:使用冒泡法对数组data中的数据按升序排列,如data中数据为5,6,3,8,7,则输出为3,5,6,7,8。程序中有三处错误代码,请指出并改正之.注意,不得改变程序结构。 main() { int i,data[]={5,6,3,8,7}; sort(4,data[1]); ///////sort(5,data) printf(\ for(i=1;i<=4;i++) /////// for(i=0;i<5;i++) printf(\ } sort(int n,int array[]) { int i,j,t; for(i=0;i for(j=0;j<=n-1;j++) /////////// for(j=0;j array[j]=t; array[j]=array[j+1]; array[j+1]=t; } } } gc462.c程序的功能是:打印出如下形式的杨辉三角形。要求根据用户的输入,决定输出几行。程序中有三处错误,请指出并改正。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ...... 注意:不得改变程序的结构和算法,也不能增加或删除程序行。 #include \ int yanghui(int x,int y) ////////加上分号; main() { int i,j,n; clrscr(); printf(\ scanf(\ for (i=1;i<=n;i++) { for (j=0;j<=n-i;j++) printf(\ \ for (j=1;j<=i;j++) printf(\ printf(\ } } int yanghui(x,y) //////// int yanghui( int x,int y) { int z; if (y==1||y==x) z=1; else z=yanghui(x,y-1)+yanghui(x-1,y); ////////// z=yanghui(x-1,y-1)+yanghui(x-1,y) return z; } 输入一个范围-32768——32767的整数,调用函数split(),拆解出各位的数字,放入字符数组s[]中。 正数前面加“+”号,负数前面加“-”号,零不加符号。 gc486.c程序有两处错误,请找出并修正,使之符合上述要求。不得增加行或删除行,也不得更改程序结构。 #include void split(int t,char *ps) { int i; char *q=ps,tmp; if (t>0) *ps++='+'; if (t<0) { *ps++='-'; t=-t; } /*------------Found Mistake Below------------*/ while(t/10!=0) /////// while(t!=0) { i=t/10; *ps++=t-i*10; t=i; } *ps++='0'+t; *ps='\\0'; /*------------Found Mistake Below------------*/ } for(q++;q gc488.c程序的功能是:读入一个整数n,求sum=1!+2!+3!+...+n!。请指正程 序中的三处错误,使它能得出正确的结果。 注意:不得改变程序的结构和算法,也不能增加或删除程序行。 #include \ long int factorial(int n) { int i; long int p=0; /////// p=1 for (i=1;i<=n;i++) p=p*i; return p; } void main() { int i,n; long int sum=0; scanf(\ /////// &n for (i=1;i<=n;i++) sum=sum+factorial(n); ///////sum=sum+factorial(i) printf(\ When you are old and grey and full of sleep, And nodding by the fire, take down this book, And slowly read, and dream of the soft look Your eyes had once, and of their shadows deep; How many loved your moments of glad grace, And loved your beauty with love false or true, But one man loved the pilgrim soul in you, And loved the sorrows of your changing face; And bending down beside the glowing bars, Murmur, a little sadly, how love fled And paced upon the mountains overhead And hid his face amid a crowd of stars. The furthest distance in the world Is not between life and death But when I stand in front of you Yet you don't know that I love you. The furthest distance in the world Is not when I stand in front of you Yet you can't see my love But when undoubtedly knowing the love from both Yet cannot be together. The furthest distance in the world Is not being apart while being in love But when I plainly cannot resist the yearning Yet pretending you have never been in my heart. The furthest distance in the world Is not struggling against the tides But using one's indifferent heart To dig an uncrossable river For the one who loves you. 倚窗远眺,目光目光尽处必有一座山,那影影绰绰的黛绿色的影,是春天的颜色。周遭流岚升腾,没露出那真实的面孔。面对那流转的薄雾,我会幻想,那里有一个世外桃源。在天阶夜色凉如水的夏夜,我会静静地,静静地,等待一场流星雨的来临… 许下一个愿望,不乞求去实现,至少,曾经,有那么一刻,我那还未枯萎的,青春的,诗意的心,在我最美的年华里,同星空做了一次灵魂的交流… 秋日里,阳光并不刺眼,天空是一碧如洗的蓝,点缀着飘逸的流云。偶尔,一片飞舞的落叶,会飘到我的窗前。斑驳的印迹里,携刻着深秋的颜色。在一个落雪的晨,这纷纷扬扬的雪,飘落着一如千年前的洁白。窗外,是未被污染的银白色世界。我会去迎接,这人间的圣洁。在这流转的岁月里,有着流转的四季,还有一颗流转的心,亘古不变的心。
正在阅读:
C语言笔试--程序改错题04-13
鼓风炉炼铅故障排除方法03-28
我国中小企业筹资中存在问题及对策分析07-27
17.1.2反比例函数的图象和性质(2)04-23
第4章表的操作(2)06-09
废水环境管理方案05-30
免费下载2003年全国审计师考试审计专业相关知识试卷(全)很含答案05-30
市容环境综合整治情况的通报范文02-22
公司关于新产品开发的管理规定107-29
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 错题
- 笔试
- 语言
- 程序
- 南通大学08级暑期实习报告 - 图文
- 小学数学教师培训心得体会
- 最新苏教版六年级上册数学第4单元 解决问题的策略 教案
- 浅谈设计心理学在生活案例中的运用 - 图文
- 危货运输企业管理制度与操作规程
- 2014年中考化学真题及答案-江苏泰州化学(含解析)
- 中国石油大学物理答案15章习题详细答案 03
- 农机作业EZ-Guide 250 光靶导航系统应用修改
- 沥青上面层试验段方案 - 图文
- 2016年实务选择题知识点7.8
- 实验三基尔霍夫电流定律
- 八年级物理下册 第六章物质的物理属性单元自测卷(无答案) 苏科
- D.CAXA实体设计快速入门
- 11规则船舶管理要点
- 施工组织设计(普宣路面四标)2014.7.1doc
- 安全生产应急管理组织体系及事故应急处理预案
- 大学生SQL server存储过程练习题
- 黄博,20124670311防火防爆 - 图文
- 英语专升本改错专题
- 2015年《全国计算机二级C语言》考试真题