您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > 四川省二级c语言29次机试试题及答案
四川省第二十九次计算机二级考试C与C++语言机试试题(2008年10月19日)第1页共16页(第一套)(60分钟)一、程序调试题(40分)磁盘上有一程序test1-1.c,其中函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串长N。请改正程序中的错误,使程序能得出正确的结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#includestdio.h#includestring.h#defineM5#defineN20voidfun(char(*ss)[N]){inti,j,k=0,n,m,len;for(i=0;iM;i++){len=strlen(ss[i]);if(i=0)n=len;if(lenn){n=len;k=i;}}for(i=0;iM;i++)if(i!=k){m=n;len=strlen(ss);for(j=len;j=0;j--)ss[i][m--]=ss[i][j];for(j=0;jn+len;j++)ss[i][j]='*';}}voidmain(){charss[M][N];inti;FILE*fp;fp=fopen(test1-1.in,r);if(fp==NULL){printf(Filecannotopen!\n);exit(0);}for(i=0;iM;i++)fscanf(%s,ss[i]);printf(\nTheoriginalstringsare:\n);for(i=0;iM;i++)printf(%s\n,ss[i]);printf(\n);四川省第二十九次计算机二级考试C与C++语言机试试题(2008年10月19日)第2页共16页fun(ss);for(i=0;iM;i++)printf(%s\n,ss[i]);fclose(fp);}二、编写程序test1-2.c(60分)程序的功能是:删除一个字符串中指定的字符。编写fun函数,其功能是删除一个字符串中指定的字符。假设字符串为:turbocandborlandc++,指定要删除的字符为n,则删除后的字符串变为:turbocadborladc++。如果输入的字符在字符串中不存在,则字符串照原样输出。同一字母的大、小按不同字符处理。在main函数中输入一个字符串(可以有空格)和一个要删除的字符,调用函数fun,最后输出结果。四川省第二十九次计算机二级考试C与C++语言机试试题(2008年10月19日)第3页共16页(第二套)(60分钟)一、程序调试题(40分)磁盘上有一个名为test2-1.c的C程序,其中函数fun的功能是:用下面的公式求的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:71513141例如,程序运行后,输入0.0001,则程序输出3.1414。请改正程序中的错误,使程序能得出正确的结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#includemath.h#includestdio.hfloatfun(floatnum){ints;floatn,t,pi;t=1;pi=0;n=1;s=1;while(t=num){pi=pi+t;n=n+2;s=-s;t=s%n;}pi=pi*4;return;}main(){floatn1,n2;FILE*fp;fp=fopen(test2-1.out,r);if(fp==NULL){printf(\nFilecannotopen!\n);exit(0);}printf(Enterafloatnumber:);scanf(%f,&n1);n2=fun();printf(%6.4f\n,n2);fprintf(fp,Result=%6.4f\n,n2);fclose(fp);}二、编写程序test2-2.c(60分)编写函数fun,其功能是:将形参指针a指向的字符顺序放入形指针c指向的字符串中,再把形参指针b指针的字符串逆序放入形参指针c指向的字符串中。注:不能使用字符串的复制和连接函数。例如:a指向的字符串为adcb,b指向的字符串为213,则字符串c中的内容为adcb312。四川省第二十九次计算机二级考试C与C++语言机试试题(2008年10月19日)第4页共16页(第三套)(60分钟)一、程序调试题(40分)磁盘上有一个名为test3-1.c的C程序文件,其中函数fun的功能是:将数组a中n个整数进行移动,大于等于0的数放在数组的前面,小于0的数放在后面。例如:数组中的数为:12-3456-9-10259-82490,移动后的结果为:12562592490-34-9-10-8在main函数中,从一文本文件test3-1.in中读取10个整数放入整型数组中,调用函数fun,并输出最后的结果。请改正程序中的错误,使其能得到正确的结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#includestdio.hvoidfun(inta[],intn){inti,j=0,b[20];for(i=0;in;i++)if(a[i]=0)b[j]=a[i];for(i=0;in;i++)if(a[i]0)b[j++]=a[i];for(i=0;in;i++)a[i]=b[i];}voidmain(){inta[10],i;charfilename[20];FILE*fp;printf(Inputfilename:);scanf(%c,filename);if((fp=fopen(filename,r))==NULL){printf(Cannotopenthefile.\n);exit(0);}for(i=0;i10;i++)fscanf(fp,%d,a[i]);fun(a,10);for(i=0;i10;i++)printf(%4d,a+i);fclose(fp);}二、编写程序test3-2.c(60分)编写函数fun,函数fun的功能是:将字符串s最右边的n个字符赋值到新串t中,若n大于s的长度,则将s复制到t中。注:不能使用字符串的复制函数。四川省第二十九次计算机二级考试C与C++语言机试试题(2008年10月19日)第5页共16页例如:字符串s为abcdefgh,n=5,则字符串t为defgh。main函数中输入一字符串s及n的值,调用fun函数并输出结果。四川省第二十九次计算机二级考试C与C++语言机试试题(2008年10月19日)第6页共16页(第四套)(60分钟)一、程序调试题(40分)磁盘上有一个名为test4-4.c的C程序文件,其功能是:在main函数中随机生成一个N*N的二维数组,fun函数使该数组左下半三角元素中的值乘以n。例如n=3,当a数组中的值为:654832791a,运行程序后a数组的值就变为:181512896793a在main函数中将运行结果输出到屏幕上和文件test4-4.out中。请改正程序中的错误,使它能得出正确结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#includestdio.h#defineN=3intfun(inta[][N],n){inti,j;for(i=0;iN;i++)for(j=0;jN;j++)if(i=j)a[i][j]=*n;}main(){inta[N][N],n,i,j;FILE*fp;for(i=0;iN;i++){for(j=0;jN;j++){a[i][j]=rand()%10;printf(%4d,a[j][i]);}printf(\n);}don=rand()%10;while(n=3)printf(n=%4d\n,n);fun(a,n);fp=fopen(test4-1.out,w);if(fp==NULL){printf(\nFilecannotopen!\n);exit(0);}for(i=0;iN;i++){for(j=0;jN;j++){printf(%4d,a[i][j]);四川省第二十九次计算机二级考试C与C++语言机试试题(2008年10月19日)第7页共16页fprintf(fp,%4d,a[[i][j]);}printf(\n);}fclose(fp);}二、编写程序test4-2.c(60分)假定输入的字符串只包含字母和*号。请编写函数fun(),它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出字符串的长度,形参h给出字符串中前导*号的个数,形参e给出字符串中尾部*号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容****A*BC*DEF*G*******,删除后,字符串中的内容则应该是A*BC*DEF*G。四川省第二十九次计算机二级考试C与C++语言机试试题(2008年10月19日)第8页共16页(第五套)(60分钟)一、程序调试题(40分)给定程序test5-1.c,函数fun的功能是求两个形参的乘积和商,其结果存入形参指针所指的地址中,函数io实现数据的输入和输出。假设输入文件test5-1.in有数据61.82和12.65,则两个数的乘积和商分别为782.02300和4.886957。main函数调用函数io。请改正程序中的错误,使程序能得出正确结果。、注意:不得增行或删行,也不得更改程序结构。源程序如下:#includestdio.hvoidfun(doublea,b,*x,*y){x=a*b;y=a/b;}io(){inti;doublea,b,c,d;file*rf,*wf;rf=fopen(test5-1.in,r);wf=fopen(test5-1.out,w);fscanf(rf,%lf%lf,&a,&b);fun(a,b,c,d);fprintf(c=%lf\nn=%lf\n,c,d);printf(c=%lf\nn=%lf\n,c,d);fclose(rf);fclose(wf);}voidmain(){doublea,b,c,d;clrscr();io();}二、编写程序test5-2.c(60分)用函数调用方式编写程序。要求实现:在主函数中输入一个3×4的整型矩阵,调用函数covert对其进行转置并将结果存放在另一个二维数组中,最后在主函数中输出结果。答案29-1套参考答案:一、程序调试题(文件名为test1-1.c)(40分)#includestdio.h#includestring.h#defineM5#defineN20voidfun(char(*ss)[N]){inti,j,k=0,n,m,len;四川省第二十九次计算机二级考试C与C++语言机试试题(2008年10月19日)第9页共16页for(i=0;iM;i++){len=strlen(ss[i]);if(i=0)n=len;/*改为:i==0*/if(lenn)/*改为:lenn*/{n=len;k=i;}}for(i=0;iM;i++)if(i!=k){m=n;len=strlen(ss);/*改为:ss[i]*/for(j=len;j=0;j--)ss[i][m--]=ss[i][j];for(j=0;jn+len;j++)/*改为:n-len*/ss[i][j]='*';}}voidmain(){charss[M][N];inti;FILE*fp;fp=fopen(test1-1.in,r);if(fp==NULL){printf(Filecannotopen!\n);exit(0);}for(i=0;iM;i++)fscanf(%s,ss[i]);/*改为:fp,%s,ss[i]*/printf(\nTheoriginalstringsare:\n);for(i=0;iM;i++)printf(%
本文标题:四川省二级c语言29次机试试题及答案
链接地址:https://www.777doc.com/doc-2588858 .html