1、四川省计算机二级C语言试题和答案32(第一套)(60分钟)一、程序调试题(文件名为test1-1.c) (40分)在main函数中分别输入两个字符串s和t,调用fun函数,并将结果输出到屏幕和文本文件test1-1.txt中。函数fun的功能是:找出字符串s中,在s 和t中都出现过的字符,并将其放入字符串p中。例如:假设字符串s 为“abcdaef”,字符串t为“catbrd”,则输出“abcda”。请改正程序中的错误,使它能得出正确结果。注意:不得增行或删行,也不得更改程序结构。一、程序调试题(文件名为 test1-1.c)( 40 分 )#include void fun(char *s,
2、char *t,char p) /* 改为:char *p */ int i,j,k=0; for(i=0;si!=0;i+) for(j=0;tj!=0;j+) if(si=ti) /* 改为:tj */ pk=si; k+; break; pk-1=0; /* 改为:pk */void main() FILE *fp; char s80,t80,p80; if(fp=fopen(test1-1.txt,r)=NULL) /* 改为:w */ printf(Cannot open the file.n); exit(0); gets(s); gets(t); fun(s,t,p); prin
3、tf(Result:n); puts(p); fputc(p,fp); /* 改为:fputs */ fclose(fp);二、编写程序(程序文件名命为test1-2.c)(60分)(1)请编写函数fun,它的功能是:求两个整数x和y的最大公约数,最大公约数作为函数值返回。(2)在main函数中输入三个整数,通过调用fun函数求出三个数的最大公约数,并输出结果。参考程序:#include int fun(int x,int y) int t; while(y!=0) t=x%y; x=y; y=t; return x;void main() int a,b,c,d; printf(Input
4、3 numbers:n); scanf(%d%d%d,&a,&b,&c); d=fun(a,fun(b,c); printf(Result=%dn,d);(第二套)(60分钟)一、程序调试题(文件名为test2-1.c) (40分)fun函数功能是在一个字符串,根据给定的插入位置i,插入一个指定的字符ch。如果i超过了字符串的长度,则将字符ch添加到字符串的末尾。在main函数中,输入一个字符串、插入位置和要插入的一个字符,调用函数fun,最后将插入后的结果输出到屏幕和文件test1-2.dat中。例如输入abcdefg字符串,给定插入位置为3,插入字符为A。则输出结果为:abcAdefg。若
5、给定的插入位置为20,则输出结果为:abcdefgA。请改正程序中的错误,使它能得出正确的结果。注意:不得增行或删行,也不得更改程序的结构。一、程序调试题(文件名为 test2-1.c)( 40 分 )#include #include #include #define N 80char insert(char str,int i,char ch) /* 改为:char *str */ int j,len; len=strlen(str); if(ilen) /* 改为:i=i;j+) /* 改为:j- */ strj+1=strj; stri=ch; strlen=0; /* 改为:len+
6、1 */ else i=len; stri=ch; strlen+1=0; void main() char str81,ch; int i; FILE *fp; fp=fopen(test1-2.dat,r); /* 改为:w */ if(fp=NULL) printf(file can not open!n); exit(0); printf(Input a string:); gets(str); printf(Input insert position and character:); scanf(%d,%c,&i,&ch); insert(str,i,ch); printf(%sn,
7、str); fprintf(fp,%sn,str); fclose(fp); 二、编写程序(程序文件名命名为test2-2.c) (60分)(1)编写函数fun,该函数的功能是:求出整型数组a中N个数的平均值,并将大于平均值的整数放入数组b中,数组b的个数作为函数值返回。(2)在main函数中,输入N个整数,调用fun函数,最后输出结果。参考程序:#include # define N 10int fun(int *a,int *b) int i,j; double sum=0,aver; for(i=0;iN;i+) sum=sum+ai; aver=sum/N; for(i=0,j=0;i
8、aver) bj+=ai; return j;void main() int aN,bN,i,k; for(i=0;i10;i+) scanf(%d,&ai); k=fun(a,b); for(i=0;ik;i+) printf(%5d,bi);(第三套)(60分钟)一、程序调试题(文件名为test3-1.c) (40分)fun函数的功能是统计M行字符串中最长的字符串,并返回最长字符串的字符个数。在main函数中,从文件test3-1.dat中输入M行字符串(每行字符串的长度不超过80个字符),调用fun函数,然后输出最长字符串的字符个数。请改正程序中的错误,使它能得出正确结果。注意:不得增行
9、或删行,也不得更改程序结构。一、程序调试题(文件名为 test3-1.c)( 40 分 )# include # define M 10# define N 80void main() int max,lin,i=0,aM; char strMN; int fun(char MN,int *); FILE *fp; if(fp=fopen(test3-1.dat,r)=null) /* 改为:NULL */ printf(Cannot open file.n); exit(0); while(!feof(fp) gets(stri+,N,fp); /* 改为:fgets */ fclose(f
10、p); fun(str,a); /* 改为:max=fun(str,a) */ printf(max=%dn,max);int fun(char strN,int a) int i,j=0,max; for(i=0;iM;i+) while(strij) j+; ai=i; /* 改为:ai=j */ j=0; max=a0; for(i=1;imax) max=ai; return; /* 改为:return max */二、编写程序(程序文件名命名为test3-2.c) (60分)(1)编写函数fun,其功能是从给定的N个整数中顺序查找一个指定的数,找到则返回该数的位置,否则返回-1。(2
11、)在main函数中输入N个整数和需要查找的数,调用fun函数,若返回值大于等于0则输出该数以及该数在数组中的位置,否则输出-1。参考程序:#include # define N 10int search(int *r,int k) int t; for(t=0;tN;t+) if(k=rt) return t; return -1;void main() int a30,s; int i,k; printf(Enter %d numbers: ,N); for(i=0;iN;i+) scanf(%d,&ai); printf(Find what: ); scanf(%d,&s); k=sear
12、ch(a,s); if(k=-1) printf(Searching failed!n); else printf(Position is %d.n,k+1); (第四套)(60分钟)一、程序调试题(文件名为test4-1.c ) (40分)fun函数的功能是:将字符串s中的数字字符取出,转换成一个整数,整数作为函数值返回。例如:字符串为“ab12CD34”,则取出数字字符转换成整数1234。在main函数中调用fun函数,并将转换后的结果写到文本文件test4-1.dat中。请改正程序中的错误,使它能得出正确的结果。注意:不得增行或删行,也不得更改程序结构。一、程序调试题(文件名为 test
13、4-1.c)( 40 分 )#define N 20# include int fun(char s) /* 改为:char *s */ int i,t=0; for(i=0;si!=0;i+) if(si=0|si=9) /* 改为:& */ t=t*10+si; /* 改为:t=t*10+si- 0 */ return t;void main() char s20; int t; file *fp; /* 改为:FILE */ if(fp=fopen(test4-1.dat,w)=NULL) printf(Cannot open file!n); exit(0); gets(s); t=f
14、un(s); printf(t=%dn,t); fprintf(t=%dn,t); /* 改为:fp, t=%dn,t */ fclose(fp);二、编写程序(程序文件名命名为test4-2.c) (60分)(1)编写fun函数,其功能是对长度为N 的字符串中的N个元素进行从大到小冒泡排序。(2)在main函数中输入一个长度为N的字符串,调用 fun函数,然后输出排序后的结果。参考程序:# include # include # define N 80void sort(char *r) int a,b,t,len; len=strlen(r); for(a=1;alen;a+) for(b
15、=0;blen-a;b+) if(rbrb+1) t=rb; rb=rb+1; rb+1=t; void main() char strN; printf(Enter a string: ); scanf(%s,str); sort(str); printf(Result is: %sn,str);(第五套)(60分钟)一、程序调试题(文件名为test5-1.c )(40分)在main函数中,从文本文件test5-1.dat中读出N个数,调用fun函数,统计其中素数的个数,并在main函数中输出其素数的个数及其所有素数。请改正程序中的错误,使它能得出正确结果。注意:不得增行或删行,也不得更改程
16、序结构。一、程序调试题(文件名为 test5-1.c)( 40 分 )# include # define N 10int fun(int *a,int c) int i,j,k=0; for(i=0;iN;i+) for(j=2;j=*(a+i)/2;j+) if(*(a+i)/j=0) break; /* 改为:*(a+i)%j */ if(j*(a+i)/2 */ ck=a+i; /* 改为:*(a+i) */ k+; return k;void main() int aN,cN,cnt,i; FILE *fp; fp=fopen(test5-1.dat,r); /* 改为:test5-
17、1.dat */ if(fp=NULL) printf(Can not open file!n); exit(0); for(i=0;iN;i+) fscanf(%d,a+i,fp); /* 改为:fp,%d,a+i */ cnt=fun(a,c); printf(amount: %4dn,cnt); printf(prime number: ); for(i=0;icnt;i+) printf(%4d,ci);二、编写程序(程序文件名命名为test5-2.c) (60分)(1)编写函数fun,其功能是:将一个NN的二维数组进行转置,转置以后的结果仍然存放在原来的二维数组中。(2)在main函
18、数中按如下数据对一个二维数组a进行初始化,输出原始数组,调用 fun函数,输出转置后的数组。原始数据 1 2 3 4 转置后的数据 1 3 5 7 3 4 5 6 2 4 6 8 5 6 6 7 3 5 6 9 7 8 9 0 4 6 7 0参考程序:# include # define N 4void convert(int aN) int i,j,t; for(j=0;jN;j+) for(i=j+1;iN;i+) t=aij; aij=aji; aji=t; void main() int i,j; int aNN=1,2,3,4,3,4,5,6,5,6,6,7,7,8,9,0; pri
19、ntf(Before convert:n); for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d,aij); printf(n); convert(a); printf(After convert:n); for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d,aij); printf(n); (第六套)(60分钟)一、程序调试题(文件名为test6-1.c )(40分)fun函数的功能是:将一个字符串中连续的数字串转换成一个整数,依次存放在数组a中,并统计该字符串中共有多少个整数。在main函数中从test6-1.dat中读入一个字符串
20、,调用fun函数,然后输出字符串中的所有整数。例如,如读入的字符串为“wd123er34gdfk”,则输出的整数为123和34。请改正程序中的错误,使它能得出正确结果。注意:不得增行或删行,也不得更改程序结构。一、程序调试题(文件名为 test6-1.c)( 40 分 )# define N 80# include int fun(char p,int a) /* 改为:char *p */ int i=0,j=0,flag=0,val=0,d; while(p+i)!=0) /* 改为:*(p+i) */ if(*(p+i)9) /* 改为:| */ if(flag) aj+=val; fl
21、ag=val=0; else d=*(p+i)-48; val=val+10+d; /* 改为:*10 */ flag=1; i+; if(*(p+i)=0&flag) aj+=val; return j;void main() char strN; int aN,n,i; FILE *fp; if(fp=fopen(test6-1.dat,r)=NULL) printf(Cannot open the file!n); exit(0); fgets(fp,str,N-1); /* 改为:str,N-1,fp */ fclose(fp); n=fun(str,a); for(i=0;in;i+
22、) printf(%dn,ai); printf(nsum to %d data.n,n);二、编写程序(程序文件名命名为test6-2.c) (60分)(1)编写fun函数,其功能是将N个数按如下规律输出。例如输入:1,2,3,4,fun函数输出:4 1 2 33 4 1 22 3 4 11 2 3 4(2)在main函数中输入N个数,调用函数fun。参考程序:# include # define N 4void fun(int a) int i,j,k,m; for(i=N;i0;i-) k=aN-1; for(j=N-1;j0;j-) aj=aj-1; a0=k; for(m=0;mN;m+) printf(%3d,am); printf(n); void main() int i,aN; printf(Enter %d number: ,N); for(i=0;iN;i+) scanf(%d,&ai); fun(a);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1