《2024计算机二级C语言考试真题汇总.docx》由会员分享,可在线阅读,更多相关《2024计算机二级C语言考试真题汇总.docx(14页珍藏版)》请在第壹文秘上搜索。
1、模拟卷11填空题下列给定程序中,函数fun的功能是:在形参S所指字符串中找寻及参数C相同的字符,并在其后插入一个及之相同的字符,若找不到相同的字符则不做任何处理。例如,若S所指字符串为baacda,C中的字符为a,执行后S所指字符串为baaaacdaa”。请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。留意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:*includevoidfun(char*s,charc)inti,j,n;/found*/for(i三0;si!1;i+)if(s(i=c)(found/n三2j;while(si*1n!三,0,)
2、n*;141518参考解析:【参考答案】for(j-i+n1;ji;jsj+1=sj);*found/sjl=3j;i-i+1;)ImainO(charswbaacdaw,c;printf(,nTestring:%snrs);printf(,nlnputacharacter:r);scanf(%cf4c);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所指两个字符串对应位置上的字符,并把ASCll值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。例如,若主函数中a字符串为aBCDeFgH,b字符串为Abcd”,则c中的字符串应为“aBcdeFgH”。请改正程序中的错误,使它能得出正确的结果。留意:部分源程序在文件MODlLC中,不得增行或删行,也不得更改程序的结构!fincludr#in(*lulevoiIfun(clarp.har*q,charc)I/*found*/inik=1;/*fb
4、unl*/while(pJ三q)Iif(*p*q)ck=*q:riseck=p;iK*P)P+;if(q)q+;main()Ihara!0=aBCDdH”,b10=mABcdfc80=,Q,l;fun(atb.c):prinlf(,Thestringa:);put(a);Printf(Thestringb:w);puts(b);printf(Theresult:);PUtS(C);I参考解析:【参考答案】(Dintk=0;(2)while(*p*q)【考点分析】本题考查:变量初始化,需依据题意确定变量含义,然后对其进行初始化操作;WhiIe循环语句。【解题思路】(1)变量k存放数组e的下标,因
5、此应初始化为0。(2)While循环语句的循环条件是推断两个字符串是否到达结尾。三.程序设计题规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。例如,字符串中的内容为:*A*BC*DEF*G*”.删除后,字符串中的内容应当是:*A*BC*DEF*G。在编写函数时,不得运用C语言供应的字符串函数。留意:部分源程序在文件PROGLC中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。main()Icharj81;VoidN0N0();pnnlf(Enterafitring:n)W);un()
6、;prinlf(TheMringaftercirlrled:n);puU();NONO();IvoidNONO()本函数用于打开文件,输人数据,调用函数,输出数据.关闭文件-/HLE*in.out;intiIchar8);infopen(in.dat,r);out三fopen(out.iato.,w,*);for(i三0;i10;i+)IfM-anf(in,s.s)sfun();fprintf(out,%n,a);Ifdose(in);(close(oul);参考解析:【参考答案】voidfun(char*a)Iwhile(a;.W)-x指付指向字符串的星部/while(a三;/,指针,指向J
7、后一个字母/(1)”;/在字符率最后加上结束物志符/【考点分析】本题考查:删除字符串尾部+号:删除的主要思想是把不删除的字符保留起来。【解题思路】对于一个字符串要删除其尾部的*号,只须要在最终一个不是*号的字符后面加上结束符号0O详细操作为:首先找到字符串的结尾,然后从最终一个字符起先往前逐个推断是否为*号,直到找到非*号字符为止,最终在该字符后面加上结束符号O。模拟卷2一、程序填空题1填空题下列给定程序中,函数fun的功能是:从形参SS所指字符串数组中,删除全部串长超过k的字符串,函数返回剩余字符串的个数。SS所指字符串数组中共有N个字符串,且串长小于M请在程序的下划线处填入正确的内容并将下
8、划线删除,使程序得出正确的结果。留意:部分源程序在文件BLANKLC中。不得增行或删行,也不得更改程序的结构!#includeWinclukIhlefinrN5WtlefineMIOinifun(char(s)M.inik)Iirti,j0Jen;/*found*/fbr(i=0;i1;i+)Irn=trlrn(i.);/*found*/if(Ien=2】)/(bundslrcpy(sJ+J.3);rrtumj;Inain()IcharxNfM三,Beijing.ShanghaiTianjinJNanjing.Wuhan;intitf;prinl(nTh*originalstring1111)
9、;fbr(i三OiN;i)pula(xi);PriMWf=fun(x.7);rinlf(wT1esiringwitchlengthinIeusthanorrquull7:n);for(i=0;if;i+)puts(xiJ);printf(,n);参考解析:【参考答案】(I)N(2)k(3)ssi【考点分析】本题考查:for循环语句;if语句条件表达式;字符串拷贝函数StrePy的运用。【解题思路】填空1:for循环语句作用是遍历字符串数组中的每一个字符串,所以循环变量i的循环条件是填空2:题目要求删除串长度小于k的字符串,所以if条件语句的条件表达式是len=k填空3:通过字符串拷贝函数将串长
10、不大于k的字符串另存,并记录个数。【解题宝典】字符串拷贝函数SlrCPy,其格式为:StrePy(字符数组名1,字符数组名2)功能:把字符数组2中的字符串拷贝到字符数组1中。字符串结束标识0也一同拷贝。字符数名2,也可以是一个字符串常量。这时相当于把一个字符串给予一个字符数组。二、程序修改题给定程序MODiLC中,函数fun的功能是:推断输入的任何一个正整数n,是否等于某个连续正整数序列之和。若是,则输出全部可能的序列,否则输出“不能分解”。例如:当输入100时,输出:100=9+10+11+12+13+14+15+16100=18+19+20+21+22请改正函数fun中指定部位的错误,使它
11、能得出正确的结果。留意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#includevoidfun(intn)Iintj,b,c,m,flag=0;for(b=1;b三c)(bund*/m=m-cjc+I/found*/if(m!三0)Iprintf(h%d=m,n);for(j=b;jc-1;j+)rintf(-%d,j)jprintf(%dn-,j);三hif(lag=0)PnnML不能分*n);IInain()Iintn(Primf(”请输入一个整数:);Mann-%d&n);fun(n);参考解析:【参考答案】(l)m=n;(2)m=m-c;c+;(3)i(m
12、=0)【解题思路】(1)每次循环,程序须要对n执行减去连续的正整数序列来推断n是否刚好为0,即n是否是连续的正整数序列之和,所以须要运用临时变量m寄存n的值,每次循环对m执行减运算操作,不满意接着下一轮。另外,程序声明变量m时,未初始化它的值,所以此处应当修改为:m=n0(2)语法错误。C语言中每个语句必需以分号结束,所以应修改为:m=m-c;c+;o(3)题目推断n是否是连续的正整数序列之和,若是,则输出全部序列,程序中m依次减去连续的正整数,当m为。时,表示m(即11)满意条件,再输出当前序列中的每个正整数,所以此处推断条件反了,应修改为:if(m=0)03简答题请编写函数fun,其功能是
13、:移动一维数组中的内容,若数组中有n个整数,要求把下标从0P(含P,P小于等于nT)的数组元素平移到数组的最终。例如,一维数组中的原始内容为:1、2、3、4、5、6、7、8、9、10;P的值为3。移动后,维数组中的内容应为:5、6、7、8、9、IOs1、2、3、4。留意:部分源程序给出如下。请勿改动主函数main和其他函数中的内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:Hinclude!defineN80voidfn(intw,intp,intn)()mainOintaN1,2,3,4,5,6,7,8,9,10,11/12,13,14,15);Inti,p,n-15;printf(*Theoriginaldata八n);for(i=0;iprintf(l3d*,ai);printf(n11Enterp:);scanf(,%4p);fun(a,p,n);printf(