四川省二级c语言29次机试试题及答案上课讲义.doc

上传人:1595****071 文档编号:52291426 上传时间:2022-10-22 格式:DOC 页数:42 大小:457KB
返回 下载 相关 举报
四川省二级c语言29次机试试题及答案上课讲义.doc_第1页
第1页 / 共42页
四川省二级c语言29次机试试题及答案上课讲义.doc_第2页
第2页 / 共42页
点击查看更多>>
资源描述

《四川省二级c语言29次机试试题及答案上课讲义.doc》由会员分享,可在线阅读,更多相关《四川省二级c语言29次机试试题及答案上课讲义.doc(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Good is good, but better carries it.精益求精,善益求善。四川省二级c语言29次机试试题及答案-(第一套)(60分钟)一、程序调试题(40分)磁盘上有一程序test1-1.c,其中函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串长N。请改正程序中的错误,使程序能得出正确的结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#include#include#defineM5#defineN20voidfun(char(*ss)N)inti,j,k=0,n

2、,m,len;for(i=0;iM;i+)len=strlen(ssi);if(i=0)n=len;if(lenn)n=len;k=i;for(i=0;i=0;j-)ssim-=ssij;for(j=0;jn+len;j+)ssij=*;voidmain()charssMN;inti;FILE*fp;fp=fopen(test1-1.in,r);if(fp=NULL)printf(Filecannotopen!n);exit(0);for(i=0;iM;i+)fscanf(%s,ssi);printf(nTheoriginalstringsare:n);for(i=0;iM;i+)printf

3、(%sn,ssi);printf(n);fun(ss);for(i=0;iM;i+)printf(%sn,ssi);fclose(fp);二、编写程序test1-2.c(60分)程序的功能是:删除一个字符串中指定的字符。编写fun函数,其功能是删除一个字符串中指定的字符。假设字符串为:turbocandborlandc+,指定要删除的字符为n,则删除后的字符串变为:turbocadborladc+。如果输入的字符在字符串中不存在,则字符串照原样输出。同一字母的大、小按不同字符处理。在main函数中输入一个字符串(可以有空格)和一个要删除的字符,调用函数fun,最后输出结果。(第二套)(60分钟

4、)一、程序调试题(40分)磁盘上有一个名为test2-1.c的C程序,其中函数fun的功能是:用下面的公式求的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:例如,程序运行后,输入0.0001,则程序输出3.1414。请改正程序中的错误,使程序能得出正确的结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#include#includefloatfun(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

5、;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.4fn,n2);fprintf(fp,Result=%6.4fn,n2);fclose(fp);二、编写程序test2-2.c(60分)编写函数fun,其功能是:将形参指针a指向的字符顺序放入形指针c指向的字符串中,再把形参指针b指针的字符串逆序放入形参指针c指向的字符串中。注:不能使用字符串的复制和连接函数。例如:a指向

6、的字符串为adcb,b指向的字符串为213,则字符串c中的内容为adcb312。(第三套)(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,并输出最后的结果。请改正程序中的错误,使其能得到正确的结果。注意:不得增行或删行,也不得更改程序结构。源

7、程序如下:#includevoidfun(inta,intn)inti,j=0,b20;for(i=0;i=0)bj=ai;for(i=0;i0)bj+=ai;for(i=0;in;i+)ai=bi;voidmain()inta10,i;charfilename20;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,ai);fun(a,10);for(i=0;i

8、10;i+)printf(%4d,a+i);fclose(fp);二、编写程序test3-2.c(60分)编写函数fun,函数fun的功能是:将字符串s最右边的n个字符赋值到新串t中,若n大于s的长度,则将s复制到t中。注:不能使用字符串的复制函数。例如:字符串s为abcdefgh,n=5,则字符串t为defgh。main函数中输入一字符串s及n的值,调用fun函数并输出结果。(第四套)(60分钟)一、程序调试题(40分)磁盘上有一个名为test4-4.c的C程序文件,其功能是:在main函数中随机生成一个N*N的二维数组,fun函数使该数组左下半三角元素中的值乘以n。例如n=3,当a数组中的

9、值为:,运行程序后a数组的值就变为:在main函数中将运行结果输出到屏幕上和文件test4-4.out中。请改正程序中的错误,使它能得出正确结果。注意:不得增行或删行,也不得更改程序结构。源程序如下:#includestdio.h#defineN=3intfun(intaN,n)inti,j;for(i=0;iN;i+)for(j=0;j=j)aij=*n;main()intaNN,n,i,j;FILE*fp;for(i=0;iN;i+)for(j=0;jN;j+)aij=rand()%10;printf(%4d,aji);printf(n);don=rand()%10;while(n=3)p

10、rintf(n=%4dn,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,aij);fprintf(fp,%4d,aij);printf(n);fclose(fp);二、编写程序test4-2.c(60分)假定输入的字符串只包含字母和*号。请编写函数fun(),它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出字符串的长度,形参h给出字符串中前导*号的个数,形参e给出字符串中

11、尾部*号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容*A*BC*DEF*G*,删除后,字符串中的内容则应该是A*BC*DEF*G。(第五套)(60分钟)一、程序调试题(40分)给定程序test5-1.c,函数fun的功能是求两个形参的乘积和商,其结果存入形参指针所指的地址中,函数io实现数据的输入和输出。假设输入文件test5-1.in有数据61.82和12.65,则两个数的乘积和商分别为782.02300和4.886957。main函数调用函数io。请改正程序中的错误,使程序能得出正确结果。、注意:不得增行或删行,也不得更改程序结构。源程序如下:#includ

12、evoidfun(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=%lfnn=%lfn,c,d);printf(c=%lfnn=%lfn,c,d);fclose(rf);fclose(wf);voidmain()doublea,b,c,d;clrscr();io();二、编写程序test5-2.c(60分)用函数调用方式编写程序。要

13、求实现:在主函数中输入一个34的整型矩阵,调用函数covert对其进行转置并将结果存放在另一个二维数组中,最后在主函数中输出结果。答案29-1套参考答案:一、程序调试题(文件名为test1-1.c)(40分)#include#include#defineM5#defineN20voidfun(char(*ss)N)inti,j,k=0,n,m,len;for(i=0;iM;i+)len=strlen(ssi);if(i=0)n=len;/*改为:i=0*/if(lenn*/n=len;k=i;for(i=0;i=0;j-)ssim-=ssij;for(j=0;jn+len;j+)/*改为:n-

14、len*/ssij=*;voidmain()charssMN;inti;FILE*fp;fp=fopen(test1-1.in,r);if(fp=NULL)printf(Filecannotopen!n);exit(0);for(i=0;iM;i+)fscanf(%s,ssi);/*改为:fp,%s,ssi*/printf(nTheoriginalstringsare:n);for(i=0;iM;i+)printf(%sn,ssi);printf(n);fun(ss);for(i=0;iM;i+)printf(%sn,ssi);fclose(fp);评分标准:每改对一处得8分二、编程题(程序文

15、件取名为test1-2.c)(60分)评分标准:1.main函数30分2.fun函数30分1)字符串和字符输入正确10分1)删除字符方法正确10分2)函数调用参数传递正确10分2)指针使用正确10分3)输出结果正确10分3)si=010分参考程序:#include#defineN100intfun(chars,intc)char*p=s;inti;while(*p)if(*p!=c)si+=*p;p+;si=0;main()charstrN,ch;printf(nEnterstring:);gets(str);printf(Enterachartobedeleted:);scanf(%c,&c

16、h);fun(str,ch);printf(Result=%sn,str);29-2套参考答案:一、程序调试题(文件名为test2-1.c)(40分)#include#includefloatfun(floatnum)ints;floatn,t,pi;t=1;pi=0;n=1;s=1;while(t=num)/*改为:fabs(t)=num*/pi=pi+t;n=n+2;s=-s;t=s%n;/*改为:s/n*/pi=pi*4;return;/*改为:returnpi*/main()floatn1,n2;FILE*fp;fp=fopen(test2-1.out,r);/*改为:w*/if(fp

17、=NULL)printf(nFilecannotopen!n);exit(0);printf(Enterafloatnumber:);scanf(%f,&n1);n2=fun();/*改为:n2=fun(n1)*/printf(%6.4fn,n2);fprintf(fp,Result=%6.4fn,n2);fclose(fp);评分标准:每改对一处得8分二、编程题(程序文件取名为test2-2.c)(60分)评分标准:1.fun函数编写40分2.main函数20分1)函数定义、形参书写正确10分1)能正确字义数组,并能对字符串进2)能正确将字符数组a复制到字符数组c10分行正确的输入和输出10

18、分3)能正确将字符数组b复制到字符数组c10分2)能正确调用fun函数10分4)ck=010分参考程序:#include#includevoidfun(char*a,char*b,char*c)inti,j,k;for(i=0;ai!=0;i+)ci=ai;for(k=i,j=strlen(b)-1;j=0;k+,j-)ck=bj;ck=0;voidmain()chara50,b50,c100;printf(Inputstringa:);gets(a);printf(Inputstringb:);gets(b);fun(a,b,c);printf(stringc:%sn,c);29-3套参考答

19、案:一、程序调试题(文件名为test3-1.c)(40分)#includevoidfun(inta,intn)inti,j=0,b20;for(i=0;i=0)bj=ai;/*改为:j+*/for(i=0;i0)/*改为:*/bj+=ai;for(i=0;in;i+)ai=bi;voidmain()inta10,i;charfilename20;FILE*fp;printf(Inputfilename:);scanf(%c,filename);/*改为:%s*/if(fp=fopen(filename,r)=NULL)printf(Cannotopenthefile.n);exit(0);fo

20、r(i=0;i10;i+)fscanf(fp,%d,ai);/*改为:&ai*/fun(a,10);for(i=0;i10;i+)printf(%4d,a+i);/*改为:ai*/fclose(fp);评分标准:每改对一处得8分二、编程题(程序文件取名为test3-2.c)(60分)评分标准:1fun函数编写40分:1)函数定义、形参书写正确10分2)能正确处理n大于s的长度的情况10分3)能正确处理n小于s的长度的情况10分4)tj=010分2main函数20分:1)能正确定义数组,并能正确进行输入输出10分2)能正确调用函数10分参考程序:#include#includevoidfun(c

21、har*s,char*t,intn)inti,j,k;k=strlen(s);if(n=k)for(i=0;si!=0;i+)ti=si;ti=0;elsefor(i=k-n,j=0;si!=0;i+,j+)tj=si;tj=0;voidmain()chars80,t80;inti,n;printf(Inputstring:);gets(s);printf(Inputn:);scanf(%d,&n);fun(s,t,n);printf(Result:);puts(t);29-4套参考答案:一、程序调试题(文件名为test4-1.c)(40分)#includestdio.h#defineN=3/

22、*改为:3*/intfun(intaN,n)/*改为:intn*/inti,j;for(i=0;iN;i+)for(j=0;j=j)aij=*n;/*改为:*=*/main()intaNN,n,i,j;FILE*fp;for(i=0;iN;i+)for(j=0;jN;j+)aij=rand()%10;printf(%4d,aji);/*改为:aij*/printf(n);don=rand()%10;while(n=3)/*改为:(n=3);*/printf(n=%4dn,n);fun(a,n);fp=fopen(test4-1.out,w);if(fp=NULL)printf(nFilecan

23、notopen!n);exit(0);for(i=0;iN;i+)for(j=0;jN;j+)printf(%4d,aij);fprintf(fp,%4d,aij);printf(n);fclose(fp);评分标准:每改对一处得8分二、编程题(程序文件取名为test4-2.c)(60分)评分标准:1fun函数编写20分:1)函数定义、形参书写正确10分2)for循环书写正确10分2main函数40分:1)字符串输入和输出正确5分2)字符串的长度计算准确10分3)字符串前导*号个数计算准确10分4)字符串尾部*号个数计算准确10分5)函数调用参数传递正确5分参考程序:#includevoidf

24、un(char*a,intn,inth,inte)inti,j=0;for(i=h;in-e;i+)aj+=ai;aj=0;voidmain()chars81,*t,*f;intm=0,tn=0,fn=0;printf(Enterastring:n);gets(s);t=f=s;while(*t)t+;m+;t-;while(*t=*)t-;tn+;while(*f=*)f+;fn+;fun(s,m,fn,tn);printf(Thestringafterdeleted:n);puts(s);29-5套参考答案:一、程序调试题(文件名为test5-1.c)(40分)#includevoidfu

25、n(doublea,b,*x,*y)/*改为:doubleb,double*x,double*y*/x=a*b;y=a/b;/*改为:*x=a*b;*y=a/b;*/io()inti;doublea,b,c,d;file*rf,*wf;/*改为:FILE*/rf=fopen(test5-1.in,r);wf=fopen(test5-1.out,w);fscanf(rf,%lf%lf,&a,&b);fun(a,b,c,d);/*改为:fun(a,b,&c,&d)*/fprintf(c=%lfnn=%lfn,c,d);/*改为:fprintf(wf,c=%lfnn=%lfn,c,d);*/prin

26、tf(c=%lfnn=%lfn,c,d);fclose(rf);fclose(wf);voidmain()doublea,b,c,d;clrscr();io();评分标准:每改对一处得8分二、编程题(程序文件取名为test5-2.c)(60分)评分标准:1convert函数25分1)函数定义(参数)正确10分2)转置正确15分2main函数35分1)二维数组定义正确5分2)数据输入正确10分3)函数调用参数传递正确10分4)结果输出正确10分参考程序:#includevoidconvert(inta4,intb3)inti,j;for(i=0;i3;i+)for(j=0;j4;j+)bji=aij;voidmain()inta34,b43;inti,j;for(i=0;i3;i+)for(j=0;j4;j+)scanf(%d,&aij);convert(a,b);for(i=0;i4;i+)for(j=0;j3;j+)printf(%5d,bij);printf(n);-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁