2023年计算机二级C语言笔试真题文字版详细答案解析_第1页
2023年计算机二级C语言笔试真题文字版详细答案解析_第2页
2023年计算机二级C语言笔试真题文字版详细答案解析_第3页
2023年计算机二级C语言笔试真题文字版详细答案解析_第4页
2023年计算机二级C语言笔试真题文字版详细答案解析_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023年3月全国计算机等级考试二级C语言真题选择题下列叙述中对的的是:A、循环队列是队列的一种顺序存储结构B、循环队列是队列的一种链式存储结构C、循环队列是非线性结构D、循环队列是一直逻辑结构下列叙述中对的的是A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈和队列都是非线性结构D、以上三种说法都不对一棵二叉树共有25个节点,其中5个时子节点,那么度为1的节点数为A、4B、6C、10D、16在下列模式中,可以给出数据库物理存储结构与物理存取方法的是A、内模式B、外模式C、概念模式D、逻辑模式在满足实体完整性约束的条件下一个关系中可以没有候选关键词一个关系中只能有一个候选关键词一个关系中必须有多个候选关键词一个关系中应当有一个或者多个候选关键词有三个关系R、S和T如下:SASABCa12b21ABCa12b21c31TATABCa21b31则由关系R和S得到关系T的操作是A、自然连接B、并C、差D、交软件生命周期中的活动不涉及A、软件维护B、市场调研C、软件测试D、需求分析下面不属于需求分析阶段任务的是A、拟定软件系统的功能需求B、拟定软件系统的系统的系能需求B、制定软件集成测试计划D、需求规格说明书审评在黑盒测试方式中,设计测试用例的重要根据是A、程序外部功能B、程序内部逻辑C、程序数据结构D、程序流程图在软件设计中不使用的工具是A、系统结构图B、程序流程图C、PAD图D、数据流图(DFD图)11、针对简朴程序设计,以下叙述的实行环节对的的是A、拟定算法和数据结构、编码、调试、整理文档B、编码、拟定算法和数据结构、调试、整理文档C、整理文档、拟定算法和数据结构、编码、调试D、拟定算法和数据结构、调试、编码、整理文档12、关于C语言中数的表达,以下叙述对的的是A、只有整型数在允许范围内能精确无误的表达,实型数会有误差B、只要在在允许范围内整型和实型都能精确表达C、只有实型数在允许范围内能精确无误的表达,整型数会有误差D、只有八进制表达的数在不会有误差13、以下关于算法叙述错误的是A、算法可以用伪代码、流程图等多种形式来描述B、一个对的的算法必须有输入C、一个对的的算法必须有输出D、用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码14、以下叙述错误的是A、一个C程序可以包含多个不同名的函数B、一个C程序只能有一个主函数C、C程序在书写时,有严格的缩进规定,否则不能编译通过D、C程序的主函数必须用main作为函数名15、设有以下语句Charch1,ch2,scanf(”%c%c”,&ch1,&ch2);若要为变量ch1和ch2分别输入字符A和B,对的的输入形式应当是A、A和B之间用逗号间隔B、A和B之间不能有任何间隔符C、A和B之间可以用回车间隔D、A和B之间用空格间隔16、以下选项中非法的字符常量是A、’\102’B、’\65’C、’\xff’D、’17、有以下程序#include<sthio.h>Main(){IntA=0,B=0,C=0;C=(A-=A-5);(A=B,B+=4);Printf(“%d,%d,%d\n”,A,B,C)}程序运营后输出的结果是A0,4,5B4,4,5C4,4,4D0,0,018、设变量均已对的定义并且赋值,以下与其他三组输出结构不同的一组语句是A、x++;printf((“%d\n”,x);B、n=++x;printf((“%d\n”,n);C、++x;printf((“%d\n”,x);D、n=x++;printf((“%d\n”,n);19、以下选项中,能表达逻辑值“假”的是A1B0.000001C0D100.020、有以下程序#include<sthio.h>Main(){inta;Scanf(“%d”,&a);If(a++<9)printf((“%d\n”,a);Elseprintf((“%d\n”,a--);}程序运营时键盘输入9<回车>,则输出的结构是A、10B11C9D821、有以下程序#include<sthio.h>Main(){ints=0,n;For(n=0;n<3;n<++){switch(s){case0;Case1;s+=1;Case2;s+=2;break;Case3;s+3;Case4;s+=4;}printf((“%d\n”,s);}}程序运营后的结果是A1,2,4B1,3,6C3,10,14D3,6,1022、若k是int类型变量,且有以下for语句For(k=-1;k<0;k++)printf(****\n”);下面关于语句执行情况的叙述中对的的是A、循环体执行一次B、循环体执行两次C、循环体一次也不执行D、构成无限循环23、有以下程序#include<sthio.h>Main(){charA,B,C;B=’1’;C=’AFor(A=0;A<6;A++){if(A%2)putchar(B+A);Elseputchar(C+A);}}程序运营后输出的结果是A1B3D5FBABCDFECA2C4E6D12345624、设有如下定义语句Intm[]={2,4,6,8},*k=m;以下选项中,表达式的值为6的是A*(k+2)Bk+2C*k+2D*k+=225、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下列划线处应当填写的是#include<sthio.h>#defineN5Viodfun(intx[N]){intm;For(m=N-1;m>0;m--)scanf(“%d\n”,);}A&x[++m]B&x[m+1]Cx+(m++)Dx+m26、若有函数Viodfun(doublea[],int*n){………}以下叙述中对的的是调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送形参a和n都是指针变量形参a是一个数组名,n是指针变量调用fun函数时将把double型实参数组元素一一相应地传送给形参a数组27、有以下程序#include<sthio.h>Main(){inta,b,k,m,*p1,*p2;k=1,m=8;p1=&k,p2=&m;a=/*p1-m;b=*p1+*p2+6;printf(“%d”,a);printf(“%d\n”,b);}编译时编译器提醒错误信息,你认为犯错的语句是A、a=/*p1-mB、b=*p1+*p2+6C、k=1,m=8;D、p1=&k,p2=&m;28、以下选项中有语法错误的是Achar*str[]={“guest”};B、charstr[10]={“guest”};C、char*str[3]*str[1]={“guest”};D、charstr[3][10];str[1]={“guest”};29、avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多不超过10,则下列函数说明语句错误的是A、intavg(int*a,intn);B、intavg(inta[10],intn);C、intavg(inta,intn);D、intavg(inta[],intn);30、有以下函数#include<sthio.h>#include<string.h>main(){printf(“%d\n”,strren”ATS\n012\1”程序运营后的输出结果是A3B8C4D931、有以下函数#include<sthio.h>main(){chara[20],b[20],c[20];scanf(”%s%s”,a,b);get(c);printf(”%s%s\n”,a,b,c);}程序运营时从第一行开始输入thisisacat!<回车>,则输出结果是Athisisacat!BthisisaCthisisacat!Dthisisacat!32、有以下函数#include<sthio.h>viodfun(charc){if(c>’x’)fun(c-1);printf(“%c”,c);}main(){fun”z”;}程序运营输出结果是AxyzBwxyzCzyxwDzyx33、有以下函数#include<sthio.h>viodfunc(intn){inti;for(i=0;i<=n;i++)printf(“*”);printf(“#”);main(){func(3);printf(“????”);func(4);printf(“\n”);}程序运营输出结果是A****#????***#B***#????*****#C**#????*****#D****#????*****#34、有以下函数#include<sthio.h>viodfun(int*s){staicintj=0;do{s[j]=s[j]+s[j+1];}wihle(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(K+1;k<3;k++)fun(a);for(K+1;k<5;k++)printf(“%d”,a[k]);printf(“\n”);}程序运营输出结果是A12345B23445C34756D3574535、有以下函数#include<sthio.h>#defineS(x)(x)*x*2main(){intk=5,j=2;printf(“%d,”,S[k+j]);printf(“%d\n”,S(k-j)));}程序运营输出结果是A98,18B39,11C39,18D98,1136、有以下函数#include<sthio.h>Viodexch(intt[]){t[0]=t[5];}{intx[10]={1,2,3,4,5,6,7,8,9,10},i=0;While(i<=4){exch(&x[i])’i++;}for(i=0;i<5;i++)printf(“%d”,x[i]);printf(“\n”);}程序运营输出结果是A246810B13579C12345D67891037、设有以下程序段StructMP3{charname[20];Charcolor;Floatprice;}std,*ptr;ptr=&std;若要引用结构体变量std中的color成员,写法错误的是Astd.colorBptr->colorCstd->colorD(*ptr).color38、有以下函数#include<sthio.h>structstu{intmun;charname[10];intage;};viodfun(structstu*p){printf(“%s\n”,p->name);}mian(){structstux[3]={{01,”zhang”,20},{02,”wang”,19},{03,”zhao”,18}};fun(x+2);}程序运营输出结果是AzhangBzhaoCwangD1939、有以下函数#include<sthio.h>mian(){inta=12,c;c=(a<<2)<<1;printf(“%d\n”,c):}程序运营输出结果是A3B50C2D9640、以下函数不能用于向文献写入数据的是AftellBfwriteCfputcDfprintf填空题1、将长度为n的顺序存储在线性表中删除一个元素,最坏情况下需要移动表中的元素个数为()。2、设循环队列的存储空间为Q(1:3),初始状态为front=rear=30。现通过一系列入队与退队运算后,front=16,rear=15,则循环队列中有()个元素。3、数据库管理系统提供的数据语言中,负责数据的增、删、改和查询的是()。4、在将E-R图转换到关系模式时,实体和联系都可以表达成()。5、常见的软件工程方法有结构化方法和面向对象方法,类、继承以及多态性等概念属于()。6、设变量a和b已定义为int类型,若要通过scanf(”a=%d,b=%d”,&a,&b);语句分别给a和b输入1和2,则对的的数据输入内容是()。7、以下程序的输出结果是()。#include<sthio.h>mian(){inta=37;a+=a%=9;printf(“%d\n”,a);}8、设a、b、c都是整型变量,假如a的值为1,b的值为2,则执行c=a++||b++;语句后,变量b的值是().9、有以下程序段s=1.0;for(k=1,k<=n;k++)s=s+1.0(k*(k+1));printf(“%f\n”,s);请填空,使以下程序段的功能与上面的程序段完全相同。s=1.0;k=1;while(){s=s+1.0(k*(k+1));k=k+1;}printf(“%f\n”,s);10、以下程序段的输出结果是()#include<sthio.h>mian(){chara,b;for(a=0;a<20;a+=7){b=a%10;putchar(b+’0’}11、以下程序段的输出结果是()#include<sthio.h>mian(){char*ch[4]={“red”,”green”,”blue”};Inti=0;While(ch[i]);{putchar(ch[i][0];i++;}}有以下程序#include<sthio.h>mian(){intarr[]={1,3,5,7,2,4,6,8{,i,start;Scanf(“%d”,&start);For(i=0,i<3,i++)printf(“%d”,arr[(start+i)%8]);}若在程序运营时输入整数10<回车>,则输出结果为()。以下程序的功能是输出a数组中的所有字符串,请填空#include<sthio.h>mian(){char*a[]={“ABC”,”DEFGH”,”IJ”,”KLMNOP”};Inti=0;For(;i<4;i++)printf(“%s\n”,);}14、以下程序的输出结果是()。#include<sthio.h>#include<sthio.h>#include<string.h>mian(){char*p,*q,*r;p=q=r=(char*)malloc(sizeof(char)*20);strcpy(p,”attaboy,welcome!”);printf(“%c%c%c\n”,p[11],q[3],r[4]);free(p);}15、设文献test.txt中原已写入字符串Begin,执行以下程序后,文献中的内容为()。#include<string.h>mian(){file*fp;fp=fopen(“test.txt”,”w+”);fputs(“test”,fp);fclose(fp);}(1)【答案】A【解析】为了充足运用存储空间,可以把顺序队列当作一个环状空间,即把顺序队列的头尾指针相连,这样的队列称之为循环队列。它是对顺序队列的改善,故循环队列是队列的一种顺序存储结构(2)【D】【解析】栈是一种后进先出的线性表,队列是一种先进先出的线性表,两者均是线性结构,故选项A)、B)、C)均不对,答案为选项D)。(3)【D】【解析】由二叉树的性质n0=n2+1可知,度为0的结点数(即叶子结点数)=度为2的结点数+1,根据题意得知,度为2的结点数为4个,那么25-5-4=16即为度为1的结点数,选项D)对的(4)、【答案】A【解析】内模式也称存储模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表达方式,相应于物理级,它是数据库中全体数据的内部表达或底层描述,是数据库最低一级的逻辑描述。所以选项A)对的。(5)【答案】D【解析】在关系R中如记录完全函数依赖于属性(组)X,则称X为关系R中的一个候选关键字。在一个关系中,候选关键字可以有多个且在任何关系中至少有一个关键字。所以在满足数据完整性约束的条件下,一个关系应当有一个或多个候选关键字,所以选项D)对的。(6)【答案】C【解析】R和S的差是由属于R但不属于S的元组组成的集合,运算符为“-”。记为T=R-S。根据本题关系R和关系S运算前后的变化,可以看出此处进行的是关系运算的差运算(7)【答案】B【解析】通常把软件产品从提出、实现、使用、维护到停止使用(退役)的过程称为软件生命周期。可以将软件生命周期分为软件定义、软件开发及软件运营维护三个阶段。软件生命周期的重要活动阶段是可行性研究与计划制定、需求分析、软件设计、软件实现、软件测试、运营和维护。软件生命周期不涉及市场调研。(8)【答案】C【解析】需求分析是对待开发软件提出的需求进行分析并给出具体的定义。重要工作是编写软件需求规格说明书及用户手册。需求分析的任务是导出目的系统的逻辑模型,解决“做什么”的问题。制定软件集成测试计划是软件设计阶段需要完毕的任务(9)【答案】A【解析】黑盒测试也称功能测试或数据驱动测试,设计测试用例着眼于程序外部结构、不考虑内部逻辑结构,重要针对软件界面和软件功能进行测试。(10)【答案】D【解析】软件设计涉及概要设计和具体设计,软件概要设计中,面向数据流的设计方法有变换型系统结构图和事务型数据流两种。软件具体设计,程序流程图(PDF)和PAD(问题分析图)是过程设计的常用工具。数据流图(DFD图)是软件定义阶段结构化分析方法常用的工具。(11)【答案】A)【解析】简朴程序设计的环节是一方面要拟定算法和数据结构,然胡编码、调试,最后整理相关文档。(12)【答案】A)【解析】实型数据在内存中存储的二进制位数是有限的,例如float型数据在内存中有24位二进制尾数。而一个十进制实数转化为二进制实数时,其有效数字位数有也许会超过尾数的存储长度,从而导致有效数字丢失而产生误差。(13)【答案】B)【解析】一个对的的算法可以有零个或者多个输入,必须有一个或者多个输出。(14)【答案】C)【解析】一个C程序有且只有一个主函数main()。一个C程序可以包含多个不同名字的子函数。C程序在书写时没有严格的缩进规定。(15)【答案】B)【解析】考察C语言中输入格式,由于在输入格式中定义好了”%c%c”,其中没有任何符号,所以中间不能加任何字符,包含不能加逗号、回车和空格,由于这些也算是字符。所以在输入时也不可以有任何间隔符号。(16)【答案】D)【解析】字符常量有两种表达方法:一种是用该字符的图形符号,如'b','y','*'。此外还可以用字符的ASCII码表达,即用反斜符(\)开头,后跟字符的ASCII码,这种方法也称为转义序列表达法,具体方法是:有两种形式:一种是用字符的八进制ASCII码,表达为:\odd.这里,ddd是八进制值(o可以省略)。另一种使用字符的十六进制ASCII码值,表达为\0xhh或0Xhh这里hh是两位十六进制值。本题中D)选项‘\019'使用是八进制表达,不应当出现9,所以错误。(17)【答案】A)【解析】考察C语言关于赋值的应用,一方面执行a-=a-5,即a=a-(a-5),使得a的值为5,然后执行c=(a-=a-5),即将a的值5赋给变量c,使得c的值也为5。然后执行下句逗号表达式中的a=b,把b的值0赋给a,此时a的值为0,然后执行b=b+4,使得b的值为4。最后打印输出。(18)【答案】D)【解析】本题考察自增运算符,++x表达先将x值加1后再用,x++表达先使用x值,用后加1,所以本题中ABC选项都会输出x+1的值,只有D选项会输出x值。(19)【答案】C)【解析】在C语言中非0的值表达真,0表达假。(20)【答案】A)【解析】考察if语句和自增自减运算符,判断条件中if(a++<9)是先用后加,即a的值为9,所以条件不成立,但是a已经进行了自增1操作,a的值此时为10。执行else语句时,由于打印a--,是先用后减,所以先输出10,然后a的值变为9。(21)【答案】C)【解析】本题考察switch语句的应用,case分支后面假如没有break,那么就会顺序执行下面的case,直到碰到break跳出。所以第一次循环后s的值为3打印输出。第二次s的值为:s=s+3,s=s+4,即为10,打印输出。第三次没有匹配成功直接执行default语句,s=s+4,所以s的值为14,打印输出。(22)【答案】A)【解析】考察for循环语句,本题中k初始值为-1,执行一次循环体,执行完后k值为0,不满足k<0条件,推出循环,所以执行了一次。(23)【答案】C)【解析】考察for语句和if语句,第一次循环a的值为0,a%2也为0,条件不满足所以打印的是(c+a)即变量c的值“A”。第二次a的值为1,条件a%2的值为1,条件满足打印字符(b+a)即字符“2”。第三次a的值为2,条件不满足,打印(a+c)即字符”C”。同理打印后续字符为“4E6”。(24)【答案】A)【解析】考察数组和指针的概念,本题中*k指向数组m的首地址。*(k+2)现将指针后移两个元素,即为m[2]的首地址,然后取出m[2]的值6,所以选择A选项。选项B的值是一个地址无意义。选项C的值为4。选项D使得m[0]的值为4。(25)【答案】D)【解析】考察指针的概念和应用,数组名自身就是地址,所以不需要在用&符号。C选项不能对所有元素赋值而是反复再给一个数值赋值且是死循环。(26)【答案】B)【解析】函数中的形参a[]已经退化为一个指针,所以AC都不对,D选项中只是传入一个指针,并没有把数组的元素挨个赋值,对的选项为B。(27)【答案】A)【解析】选项A中a=/*p1-m;表达方式不对的,未能对的表达出含义。(28)【答案】D)【解析】考察指针数组的概念,D选项中str为二维字符数组,不可以直接把一个字符串赋值到二维数组的某一行中。(29)【答案】C)【解析】考察函数声明基本用法,C选项中函数的第一形参没有指名是数组,代表的是一个整型数,声明不对的。(30)【答案】B)【解析】考察转义字符的用法,strlen函数的作用是求得字符串长度,\n与\1均是反义字符各表达一个字符所以打印值为8。(31)【答案】C)【解析】考察scanf和gets输入字符串的区别,scanf语句接受字符时碰到空格就作为一个字符串的结束,所以a数组中为this,b数组中为is,但是getchar函数见到回车才认为结束所以c数组为acat!。所以打印结果如选项C。(32)【答案】A)【解析】考察函数的嵌套调用,当运营fun(‘z’),调用fun(‘y’),然后嵌套调用fun(‘x’),输出结果为先输出x,然后输出y,最后输出z。(33)【答案】D)【解析】考察for循环函数调用,执行fun(3)是输出****,然后输出#,执行fun(4)时输出*****,然后输出#,所以选项D)对的。(34)【答案】D)【解析】考察静态局部变量,静态局部变量属于静态存储方式,它具有以下特点:(1)静态局部变量在函数内定义,它的生存期为整个源程序。(2)静态局部变量只能在定义该变量的函数内使用该变量。退出该函数后,尽管该变量还继续存在,但不能使用它。(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。(4)根据静态局部变量的特点,可以看出它是一种生存期为整个源文献的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用,并且保存了前次被调用后留下的值。根据这个特点,函数第一次调用时,会将数组a变为35345,当第二次调用时,函数内的j值为2,所以会将数组a的第三个元素更改为7,所以最终结果为35745,选项D)对的。(35)【答案】B)【解析】考察宏定义的使用,根据该宏的定义,S(k+j)=(k+j)*k+j*2=39,S(k-j)=(k-j)*k-j*2=11,所以答案为39,11选项B)对的。(36)【答案】D)【解析】通过度析代码,可以看出来,函数的作用就是把数组某个元素的变为这个元素位置加5后对用的元素值,所以执行完之后输出数组x的前五个元素的值,其实就是数组x的后五个元素的值,即678910。(37)【答案】C)【解析】考察结构体的用法,在引用结构体中的成员变量时,可以使用’.’来引用,当指针指向结构体时,可以使用’->’来指向结构体重的成员,C选项引用错误。(38)【答案】B)【解析】考察结构体的用法,结构体数组存储了三个人的信息,x+2代表了指向第三个元素,所以输出name为Zhao。(39)【答案】D)【解析】考察移位操作,执行c=(a<<2)<<1语句时,一方面是a左移两位,其等效于将a乘以4,得到48,然后将48左移一位,相称于是乘以2,所以结果为c=96,选项D对的。(40)【答案】A)【解析】考察文献的操作,函数ftell()用于得到文献位置指针当前位置相对于文献首的偏移字节数。在随机方式存取文献时,由于文献位置频繁的前后移动,程序不容易拟定文献的当前位置。调用函数ftell()就能非常容易地拟定文献的当前位置。不能写入数据,其他三个选项都可以向文献中写入。二、填空题(1)【答案】【1】n-1【解析】在顺序表中删除一个元素,最坏情况是删除第一个元素,后面的(n-1)个元素均要向前移动,所以此处填n-1。(2)【答案】【2】29【解析】通过题干的描述可知此循环队列共30个空间,此外队尾指针rear的值小于队头指针front的值,所以运用公式(rear-front+30)%30=29,可知此循环队列的元素个数为29。(3)【答案】【3】数据操纵语言【解析】数据操纵语言DML(DataManipulationLanguage),用户通过它可以实现对数据库的基本操作。例如,对表中数据的查询、插入、删除和修改。在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论