《2024计算机二级C语言考试真题汇总.docx》由会员分享,可在线阅读,更多相关《2024计算机二级C语言考试真题汇总.docx(14页珍藏版)》请在优知文库上搜索。
1、模拟卷11填空题下列给定程序中,函数fun的功能是:在形参S所指字符串中找寻与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。例如,若S所指字符串为baacda,C中的字符为a,执行后S所指字符串为baaaacdaa”。请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。留意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:*includevoidfun(chars,charc)(inti,j,n;found/for(i三0;si!gl;i+)if(s(i=c)(found/n三12j;while(si1+n!三,0,)
2、n;for(j-in1;ji;jsj+1=sj;found/sj1=L11;i-i+1;)mainOchars8wbaacdaw,c;printf(nThestring:%snrs);printf(wViInputacharacter:n);scanf(n%ca,f&c);fun(src);参考解析:【参考答案】printf(,nTheresultis:%s(1),0,(2)0(3)C【解题思路】填空1:for语句循环条件是推断是否到达字符串结尾,即当前字符是否为0。填空2:WhiIe语句用以确定字符串的长度,所以变量n赋初值为0。填空3:题目要求假如找到与参数C相同的字符,就在后面插入一个相
3、同的字符,且找到后应当给数组元素赋值,本题目给出参数为c。二、程序修改题2简答题下列给定程序中函数fun的功能是:逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。例如,若主函数中a字符串为BCDeFgHMb字符串为Abed”,则C中的字符串应为“aBcdeFgH”。请改正程序中的错误,使它能得出正确的结果。留意:部分源程序在文件MoDlLC中,不得增行或删行,也不得更改程序的结构!#inclul*tinclulevoilfun(char*p.har*q,charc)*(bundintIc=I;/*fbul*,*/whil
4、e(*p!三q)Iif(*p*q)ck=q:elseck=p;if(p)p+;if(q)q+;main()Ihara10=JBCDdH”,b10=wABcdlc80=ltQ,;fun(avb,c);print(,Thestringa:);puts(a);printf(*11estringb:w);puts(b);printf(Theresult:);puts(c);I参考解析:【参考答案】(Dintk=0;(2)while(*p*q)【考点分析】本题考查:变量初始化,需依据题意确定变量含义,然后对其进行初始化操作;WhiIe循环语句。【解题思路】(1)变量k存放数组e的下标,因此应初始化为0。
5、(2)WhiIe循环语句的循环条件是推断两个字符串是否到达结尾。.程序设计题3简答题规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。例如,字符串中的内容为:*A*BC*DEF*G*”.删除后,字符串中的内容应当是:”*A*BC*DEF*G。在编写函数时,不得运用C语言供应的字符串函数。留意:部分源程序在文件PROGLC中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。Wincluck*Moidfun(lara)main()Ichars8!;voidNONO();pnntf(Enter
6、astring:n);grf();fun(s);prinlf(TheHiringafterdrlrted:n);puls();NONO()jvoidNONO()本函数用于打开文件,输人数据,调用函数,输出数据.关闭文件/HLE*in,out;inti;char8l;in三fopen(in.dal,r);out三fopen(out.dat*.w);for(i=0;iIO;i+)fM-anf(in,s.s)ifun(s);fprintf(out,m);fclueie(in);(c)jw(out);参考解析:【参考答案】vdfun(chara)wile(a!三,0):/指竹指向字符申的尾部/whil
7、e(;/指Wa指向JH后一个字母/(1)”;/在字符串JG加上结束标志符/I【考点分析】本题考查:删除字符串尾部+号;删除的主要思想是把不删除的字符保留起来。【解题思路】对于一个字符串要删除其尾部的*号,只须要在最终一个不是*号的字符后面加上结束符号,0,。详细操作为:首先找到字符串的结尾,然后从最终一个字符起先往前逐个推断是否为*号,直到找到非*号字符为止,最终在该字符后面加上结束符号0。模拟卷2一、程序填空题1 填空题下列给定程序中,函数fun的功能是:从形参SS所指字符串数组中,删除全部串长超过k的字符串,函数返回剩余字符串的个数。ss所指字符串数组中共有N个字符串,且串长小于M请在程序
8、的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。留意:部分源程序在文件BLANKLC中。不得增行或删行,也不得更改程序的结构!#includeWincludeWdefineN5WdeftneM10inifun(char(ss)M.intk)Iintij=0Jen;found*,Irn=slrlrn(ss:i);/*found*/if(Irn=2】)/*found*/strrpy(ssJ+J.3);rrlumj;main()IcharxNM三Brijing*.-Shanghai.Tianjin,Nanjing,/WHha,;iniivf;prinlf(mnThroriginalst
9、ringnn,*);fbr(i=0;iN;i+)PUbxi);printf(11m);f=fun(x.7);printf(t,T1usiringwitchlengthislesslhaorculIo7:n,t);for(i=0;if;i+)PUlMxi);Printf(W参考解析:【参考答案】(I)N(2)kssi【考点分析】本题考查:for循环语句;if语句条件表达式;字符串拷贝函数Strepy的运用。【解题思路】填空1:for循环语句作用是遍历字符串数组中的每一个字符串,所以循环变量i的循环条件是填空2:题目要求删除串长度小于k的字符串,所以if条件语句的条件表达式是len=k填空3:通过
10、字符串拷贝函数将串长不大于k的字符串另存,并记录个数。【解题宝典】字符串拷贝函数StrCPy,其格式为:StrePy(字符数组名1,字符数组名2)功能:把字符数组2中的字符串拷贝到字符数组1中。字符串结束标识0也一同拷贝。字符数名2,也可以是一个字符串常量。这时相当于把一个字符串给予一个字符数组。二、程序修改题2 简答题给定程序MoDlLC中,函数fun的功能是:推断输入的任何一个正整数n,是否等于某个连续正整数序列之和。若是,则输出全部可能的序列,否则输出“不能分解”。例如:当输入100时,输出:IoO=9+10+11+12+13+14+15+16100=18+19+20+21+22请改正函
11、数fun中指定部位的错误,使它能得出正确的结果。留意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:tincludevoidfun(intn)Iinj.b,c.m,ag0;for(b=I;b三c)(bund/m=m-c;cI/*found*/if(m!=0)Iprintf(*%d=M,n);for(j三bjjc-ljj+)rintf(-%dtj);printf(%dn-tj);(11;if(flag=O)Pnntf(-不能分*n);Imain()Iintn(Primf(C请箱人一个整数jcanf(-%d-,&n);fun(n):I参考解析:【参考答案】(l)m=n;(2
12、)m=m-c;c+;(3)if(m=0)【解题思路】(1)每次循环,程序须要对n执行减去连续的正整数序列来推断n是否刚好为0,即n是否是连续的正整数序列之和,所以须要运用临时变量m寄存n的值,每次循环对In执行减运算操作,不满意接着下一轮。另外,程序声明变量m时,未初始化它的值,所以此处应当修改为:m=n0(2)语法错误。C语言中每个语句必需以分号结束,所以应修改为:m=m-c;c+;。(3)题目推断n是否是连续的正整数序列之和,若是,则输出全部序列,程序中m依次减去连续的正整数,当m为0时,表示m(即11)满意条件,再输出当前序列中的每个正整数,所以此处推断条件反了,应修改为:ifGn=O)
13、。3 简答题请编写函数fun,其功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从0P(含P,P小于等于n-l)的数组元素平移到数组的最终。例如,一维数组中的原始内容为:1、2、3、4、5、6、1、8、9、10;P的值为3。移动后,一维数组中的内容应为:5、6、7、8、9、10、1、2、3、4。留意:部分源程序给出如下。请勿改动主函数main和其他函数中的内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:include#defineN80voidfun(int*w,int,intn)mainOintaN-(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);Intirp,n-15;printf(Theoriginaldata八n);for(i=0;in;i)Printf3dw,ai);printfnnEnterp:H);scanf(*%do,4p);fun(a,p,n);printf(nThedataaftermov-ing:nR);for(i-0;in;i