2025年全国计算机等级考试(NCRE)二级C语言试题与答案_第1页
2025年全国计算机等级考试(NCRE)二级C语言试题与答案_第2页
2025年全国计算机等级考试(NCRE)二级C语言试题与答案_第3页
2025年全国计算机等级考试(NCRE)二级C语言试题与答案_第4页
2025年全国计算机等级考试(NCRE)二级C语言试题与答案_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

2025年全国计算机等级考试(NCRE)二级C语言试题与答案一、选择题(共40题,每题1分,共40分)下列关于栈的叙述中,正确的是()A.栈底元素一定是最后入栈的元素B.栈顶元素一定是最先入栈的元素C.栈操作遵循先进后出的原则D.以上三种说法都不对设循环队列的存储空间为Q(1:50),初始状态为front=rear=50。现经过一系列入队与退队操作后,front=rear=25,则循环队列中的元素个数为()A.0或50B.25C.26D.49某二叉树的前序遍历序列为ABCDE,中序遍历序列为CBADE,则后序遍历序列为()A.CBADEB.EDABCC.CBEDAD.EDCBA结构化程序设计的三种基本控制结构不包括()A.顺序结构B.跳转结构C.选择结构D.循环结构下列属于软件定义阶段任务的是()A.软件测试B.软件设计C.可行性研究D.系统实现下面不属于软件测试实施步骤的是()A.集成测试B.回归测试C.确认测试D.单元测试在关系数据库中,用来表示实体间联系的是()A.属性B.二维表C.网状结构D.树状结构有三个关系R、S和T如下:R:ABCa12b21c31S:ADa3c4T:ABCDa123c314则由关系R和S得到关系T的操作是()A.自然连接B.交C.投影D.并下列选项中,不属于数据模型组成要素的是()A.数据操作B.数据结构C.数据查询D.数据约束下面对对象概念描述正确的是()A.对象间的通信靠消息传递B.对象是名字和方法的封装体C.任何对象都必须有继承性D.对象的多态性是指一个对象有多个操作以下符合C语言语法的实型常量是()A.1.2E0.5B.3.14159EC..5E-3D.E15若有定义语句:inta=3,b=2,c=1;,以下选项中错误的赋值表达式是()A.a=(b=4)=3B.a=b=c+1C.a=(b=4)+cD.a=1+(b=c=4)有以下程序#include<stdio.h>

intmain(){inta=1,b=2,c=3,d=0;

if(a==1)

if(b!=2)

if(c==3)d=1;

elsed=2;

elseif(c!=3)d=3;

elsed=4;

elsed=5;

printf("\%d\n",d);

return0;}程序运行后的输出结果是()A.1B.2C.3D.4以下关于逻辑运算符两侧运算对象的叙述中正确的是()A.只能是整数0或1B.只能是整数0或非0整数C.可以是结构体类型的数据D.可以是任意合法的表达式有以下程序#include<stdio.h>

intmain(){intx=1,y=0,a=0,b=0;

switch(x)

{

case1:

switch(y)

{

case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

printf("a=\%d,b=\%d\n",a,b);

return0;}程序运行后的输出结果是()A.a=2,b=1B.a=2,b=2C.a=1,b=1D.a=1,b=0若变量已正确定义,有以下程序段inti=0;do{printf("\%d,",i);}while(i++);printf(“%d”,i);

其输出结果是()A.0,0B.0,1C.1,1D.程序进入无限循环以下叙述中正确的是()A.break语句只能用于switch语句体中B.continue语句的作用是使程序的执行流程跳出包含它的所有循环C.break语句和continue语句的作用是一样的D.在循环体内使用break语句和continue语句的作用不相同以下数组定义中错误的是()A.intx[][3]={0};B.intx[2][3]={{1,2},{3,4},{5,6}};C.intx[][3]={{1,2,3},{4,5,6}};D.intx[2][3]={1,2,3,4,5,6};有以下程序#include<stdio.h>

intmain(){inta[5]={2,4,6,8,10},*p,k;

p=a;

k=\&p;

printf("\%d",*(p++));

printf("\%d\n",k);

return0;}程序运行后的输出结果是()A.44B.24C.22D.46以下关于字符串的叙述中正确的是()A.C语言中有字符串类型的常量和变量B.两个字符串中的字符个数相同时才能进行字符串大小的比较C.可以用关系运算符对字符串的大小进行比较D.空串一定比空格开头的字符串小有以下程序#include<stdio.h>

voidfun(inta,intb){intt;

t=a;a=b;b=t;}intmain(){intc[10]={1,2,3,4,5,6,7,8},i;

for(i=0;i<8;i+=2)fun(c[i],c[i+1]);

for(i=0;i<8;i++)printf("\%d,",c[i]);

printf("\n");

return0;}程序运行后的输出结果是()A.1,2,3,4,5,6,7,8,B.2,1,4,3,6,5,8,7,C.8,7,6,5,4,3,2,1,D.1,2,3,4,5,6,7,8,有以下程序#include<stdio.h>

intfun(intn){if(n==1)return1;

elsereturnn+fun(n-1);}intmain(){printf("\%d\n",fun(5));

return0;}程序运行后的输出结果是()A.10B.15C.20D.5有以下程序#include<stdio.h>

#defineN4

voidfun(inta[][N],intb[]){inti;

for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];}intmain(){intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;

fun(x,y);

for(i=0;i<N;i++)printf("\%d,",y[i]);

printf("\n");

return0;}程序运行后的输出结果是()A.-3,-1,1,3,B.3,1,-1,-3,C.4,7,10,13,D.1,3,5,7,有以下程序#include<stdio.h>

#include<string.h>

intmain(){chara[10]="abcd";

printf("\%d,\%d\n",strlen(a),sizeof(a));

return0;}程序运行后的输出结果是()A.7,4B.4,10C.8,8D.10,10以下函数的功能是,通过键盘输入数据,为数组中的所有元素赋值。#defineN10

voidarrin(intx[N]){inti=0;

while(i<N)

scanf("\%d",________);}在下划线处应填入的是()A.x+iB.&x[i+1]

C.x+(i++)D.&x[++i]

26.有以下函数intfun(charx,chary){intn=0;

while((*x==*y)\&\&*x!='\0'){x++;y++;n++;}

returnn;}函数的功能是()A.查找x和y所指字符串中是否有’\0’

B.统计x和y所指字符串中最前面连续相同的字符个数C.将y所指字符串赋给x所指存储空间D.统计x和y所指字符串中相同的字符个数若有定义语句:chars1=“OK”,s2=“ok”;,以下选项中,能够输出”OK”的语句是()A.if(strcmp(s1,s2)!=0)puts(s2);B.if(strcmp(s1,s2)!=0)puts(s1);C.if(strcmp(s1,s2)==1)puts(s1);D.if(strcmp(s1,s2)==0)puts(s1);有以下程序#include<stdio.h>

intfun(int(*s)[4],intn,intk){intm,i;

m=s[0][k];

for(i=1;i<n;i++)if(s[i][k]>m)m=s[i][k];

returnm;}intmain(){inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};

printf("\%d\n",fun(a,4,0));

return0;}程序运行后的输出结果是()A.4B.34C.31D.32以下关于结构体的叙述中,错误的是()A.结构体变量可以作为函数的参数B.结构体类型的地址可以赋值给同类型的指针变量C.结构体成员的名字可以和程序中其他变量同名D.结构体的成员不能是指针类型有以下定义和语句typedefstructstudent{charname[10];

intage;}STU;STUs[5],*p=s;以下选项中,错误的引用是()A.(*p).nameB.s[0].nameC.p->ageD.p.age有以下程序#include<stdio.h>

unionmyun{struct{intx,y,z;}u;

intk;}a;intmain(){a.u.x=4;

a.u.y=5;

a.u.z=6;

a.k=0;

printf("\%d\n",a.u.x);

return0;}程序运行后的输出结果是()A.4B.5C.6D.0以下选项中,能正确进行字符串赋值的是()A.char*s;s=“ABCDE”;B.chars[5];s=“ABCDE”;C.chars[3][5],*p[3];s[0]=“ABCDE”;p[0]=“ABCDE”;D.char*s;scanf(“%s”,s);

33.有以下程序#include<stdio.h>

voidfun(char*c,intd){*c=*c+1;

d=d+1;

printf("\%c,\%c,",*c,d);}intmain(){chara='A',b='a';

fun(\&b,a);

printf("\%c,\%c\n",a,b);

return0;}程序运行后的输出结果是()A.B,a,B,aB.a,B,a,BC.A,b,A,bD.b,B,A,b以下关于C语言文件的叙述中,正确的是()A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成,只能是文本文件若要对二进制文件进行读操作,打开文件的方式是()A.“r”B.“rb”C.“w”D.“wb”有以下程序#include<stdio.h>

#definef(x)xxx

intmain(){inta=3,s,t;

s=f(a+1);

t=f((a+1));

printf("\%d,\%d\n",s,t);

return0;}程序运行后的输出结果是()A.10,64B.10,10C.64,10D.64,64以下叙述中错误的是()A.C语言编写的函数源程序,其文件名后缀通常是.cB.C语言编写的每个函数都可以单独编译C.C语言程序经过编译、连接后才能执行D.C语言的函数可以嵌套定义有以下程序#include<stdio.h>

intmain(){intx=8;

for(;x>0;x--)

{

if(x\%3){printf("\%d,",x--);continue;}

printf("\%d,",--x);

}

return0;}程序运行后的输出结果是()A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,若有定义:int*p[3];,则以下叙述中正确的是()A.定义了一个基类型为int的指针变量p,该变量有三个指针元素B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针C.定义了一个名为*p的整型数组,该数组含有三个int类型元素D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素有以下程序#include<stdio.h>

intmain(){FILE*fp;

inti,a[6]={1,2,3,4,5,6};

fp=fopen("d.dat","w+b");

fwrite(a,sizeof(int),6,fp);

fseek(fp,sizeof(int)*2,SEEK_SET);

fread(a,sizeof(int),3,fp);

fclose(fp);

for(i=0;i<3;i++)printf("\%d,",a[i]);

return0;}程序运行后的输出结果是()A.4,5,6,B.1,2,3,C.3,4,5,D.5,6,1,选择题参考答案及解析1-5:CACBC6-10:BBACA11-15:CADDA16-20:BDBBD21-25:ABABC26-30:BBCDD31-35:DADCB36-40:ADDBC

1.解析:栈是遵循先进后出原则的线性存储结构,栈顶元素为最后入栈元素,栈底为最先入栈元素,故选C。解析:循环队列中当front==rear时,存在队空(元素数0)和队满(元素数等于队列长度50)两种情况,故选A。解析:前序遍历确定根节点为A,中序遍历确定左子树为CB、右子树为DE,后序遍历规则为左右根,最终序列为CBEDA,故选C。解析:结构化程序设计三种基本控制结构为顺序、选择、循环,无跳转结构,故选B。解析:软件定义阶段任务包含可行性研究与需求分析,软件设计、实现、测试均属于开发阶段,故选C。解析:软件测试实施步骤为单元测试、集成测试、确认测试、系统测试,回归测试属于维护阶段的测试操作,不属于实施步骤,故选B。解析:关系数据库采用二维表存储实体及实体间的联系,故选B。解析:自然连接是按公共属性等值连接并去重,符合R和S得到T的操作逻辑,故选A。解析:数据模型三要素为数据结构、数据操作、数据约束,数据查询不属于组成要素,故选C。解析:对象间通信依靠消息传递,对象是属性和方法的封装体,并非所有对象都具备继承性,多态性指同一操作可对应不同对象的不同实现,故选A。解析:实型常量指数表示法要求E前必须有数字、E后必须为整数,仅选项C符合规则,故选C。解析:赋值运算符左值必须是可修改的变量,(b=4)是表达式不能作为左值,故选A。解析:a==1成立,b==2进入else分支,c==3成立,故d=4,故选D。解析:逻辑运算符两侧可以是任意合法表达式,非0值视为真,0视为假,故选D。解析:x=1进入内层switch,y=0使a自增为1,外层switch无break继续执行case2,a自增为2、b自增为1,故选A。解析:do-while先执行输出0,i++后i=1,while判断为假退出循环,最后输出i=1,故选B。解析:break可跳出循环或switch,continue仅跳过本次循环剩余语句进入下一次循环,二者作用不同,故选D。解析:x[2][3]最多存储2行3列共6个元素,选项B初始化了3行数据超出数组容量,故选B。解析:*(p++)先取p指向的a[0]值2输出,p后移指向a[1],k即取p指向的a[1]值4,故选B。解析:C语言无内置字符串类型,字符串比较用strcmp函数,空串ASCII码小于空格,故选D。解析:函数参数为值传递,形参交换不影响实参数组元素,故数组元素不变,故选A。解析:递归计算1+2+3+4+5=15,故选B。解析:计算主对角线减副对角线元素,分别为1-4=-3、6-7=-1、11-10=1、16-13=3,故选A。解析:strlen计算字符串有效长度为4,sizeof计算数组总字节数为10,故选B。解析:x+(i++)等价于&x[i]且每次循环i自增,可实现为所有元素赋值,故选C。解析:循环条件为当前字符相同且未到串尾,统计连续相同字符个数,故选B。解析:strcmp(s1,s2)返回负数(因为’K’ASCII码小于’k’),不等于0时输出s1即可得到OK,故选B。解析:函数功能为取第k列最大值,k=0时第一列最大值为31,故选C。解析:结构体成员可以是指针类型,如链表节点的next指针,故选D。解析:p是指针变量,访问成员需用->运算符,p.age语法错误,故选D。解析:共用体所有成员共享同一块内存空间,k赋值为0会覆盖u.x的值,故输出0,故选D。解析:选项A将字符串常量地址赋值给字符指针合法;选项B数组长度不足存储字符串结束符;选项C数组名是常量不能直接赋值;选项D指针未初始化指向非法空间,故选A。解析:b地址传入函数,*c+1使b变为’b’,a是值传递不改变原值,函数内输出b,B,主函数输出A,b,故选D。解析:C语言文件由数据序列组成,可分为二进制文件和文本文件两类,故选C。解析:二进制读操作打开方式为”rb”,故选B。解析:宏定义直接替换,s=a+1a+1a+1=3+13+13+1=10,t=(a+1)(a+1)(a+1)=444=64,故选A。解析:C语言函数不支持嵌套定义,故选D。解析:循环依次输出8、5、4、2,故选D。解析:int*p[3]定义指针数组,包含3个int类型指针元素,故选B。解析:fseek定位到第3个元素(值为3)的位置,读取3个元素为3、4、5,故选C。二、程序填空题(18分)给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。

例如,当形参n的值为10时,函数返回-0.204491。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中,不得增行或删行,也不得更改程序的结构。给定源程序:#include<stdio.h>

doublefun(intn){inti,k;

doubles,t;

s=0;

/found/

k=__1__;

for(i=1;i<=n;i++)

{

/found/

t=__2__;

s=s+k*(2*i-1)*(2*i+1)/(t*t);

/found/

k=k*__3__;

}

returns;}intmain(){intn=-1;

while(n<0)

{

printf("Pleaseinput(n>0):");

scanf("\%d",\&n);

}

printf("\nTheresultis:\%f\n",fun(n));

return0;}程序填空题参考答案12*i(-1)解析:第一空k为符号控制变量,首项为正故初始值为1;第二空t对应分母的2n项,填入2*i;第三空每完成一项计算符号反转,故乘以-1。三、程序修改题(18分)给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为7654321时,t中的数为642。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。给定源程序:#include<stdio.h>

/found/voidfun(longs,longt){longsl=10;

s/=10;

*t=s\%10;

/found/

while(s<0)

{

s=s/100;

*t=s\%10*sl+*t;

sl=sl*10;

}}intmain(){longs,t;

printf("\nPleaseenters:");

scanf("\%ld",\&s);

fun(s,\&t);

printf("Theresultis:\%ld\n",t);

return0;}程序修改题参考答案将voidfun(longs,longt)修改为voidfun(longs,long*t)将while(s<0)修改为while(s>0)解析:第一处错误:t需要将新数带回主函数,必须采用指针类型接收地址;第二处错误:循环条件应为s大于0时继续提取偶数位,s小于0时无法提取正数的有效数位。四、程序设计题(24分)学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:将高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include<stdio.h>

#defineN12

ty

温馨提示

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

评论

0/150

提交评论