版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年最新计算机等级考试二级C语言试题与答案一、选择题(共40题,每题1分,共40分)1.下列叙述中正确的是()A.算法的时间复杂度与算法程序的执行速度成正比B.算法的时间复杂度与运行算法时特定的输入有关C.算法的时间复杂度与计算机系统有关D.算法的时间复杂度与算法程序中的语句条数成正比2.设栈的顺序存储空间为S(1:m),初始状态为top=m+1,现经过一系列入栈与退栈运算后,top=20,则当前栈中的元素个数为()A.20B.m-19C.m-20D.193.某二叉树的前序遍历序列为ABCDE,中序遍历序列为CBAED,则后序遍历序列为()A.CBAEDB.EDABCC.CBEDAD.不确定4.结构化程序设计的三种基本控制结构不包括()A.顺序结构B.跳转结构C.选择结构D.循环结构5.下面不属于软件需求规格说明书作用的是()A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析6.在E-R图中,用来表示实体联系的图形是()A.椭圆形B.矩形C.菱形D.三角形7.关系R和关系S均有5个属性,其中有3个相同的属性,若将这两个关系进行自然连接运算,运算结果的属性个数为()A.2B.7C.8D.108.下面属于黑盒测试方法的是()A.语句覆盖B.逻辑覆盖C.边界值分析D.路径覆盖9.数据库系统的核心是()A.数据模型B.数据库管理系统C.数据库D.数据库管理员10.对长度为n的线性表排序,最坏情况下比较次数不是n(n-1)/2的排序方法是()A.快速排序B.冒泡排序C.直接插入排序D.堆排序11.以下符合C语言语法的实型常量是()A.1.2E0.5B.3.14159EC..5E-3D.E1512.若有定义:inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()A.2.500000B.2.750000C.3.500000D.0.0000013.以下叙述中正确的是()A.C语言程序的基本组成单元是语句B.C语言程序中的每行只能写一条语句C.简单C语句必须以分号结束D.C语句必须在一行内写完14.若变量已正确定义并赋值,以下符合C语言语法的表达式是()A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b15.有以下程序:main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf("%d,%d,%d,%d\n",a,b,c,d);}程序输出结果是()A.0,0,0,3B.0,0,2,3C.1,1,2,0D.编译有错16.以下程序段中while循环的执行次数是()intk=0;while(k=1)k++;A.无限次B.有语法错,不能执行C.一次也不执行D.执行1次17.有定义语句:intb;charc[10];则正确的输入语句是()A.scanf("%d%s",&b,&c);B.scanf("%d%s",&b,c);C.scanf("%d%s",b,c);D.scanf("%d%s",b,&c);18.以下能正确定义一维数组的选项是()A.inta[5]={0,1,2,3,4,5};B.chara[]={0,1,2,3,4,5};C.chara={'A','B','C'};D.inta[5]="0123";19.有以下程序:main(){intp[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7)if(p[i]%2)j+=p[i];printf("%d\n",j);}程序运行后的输出结果是()A.42B.45C.56D.6020.要求通过while循环不断读入字符,当读入字母N时结束循环,若变量已正确定义,下列正确的程序段是()A.while((ch=getchar())!='N')printf("%c",ch);B.while(ch=getchar()!='N')printf("%c",ch);C.while(ch=getchar()=='N')printf("%c",ch);D.while((ch=getchar())=='N')printf("%c",ch);21.以下关于函数的叙述正确的是()A.C语言函数可以嵌套定义B.C语言函数可以嵌套调用C.C语言函数必须有返回值D.C语言函数必须有形参22.有以下程序:voidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i<10;i+=2)fun(c[i],c[i+1]);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序运行结果是()A.1,2,3,4,5,6,7,8,9,0,B.2,1,4,3,6,5,8,7,0,9,C.0,9,8,7,6,5,4,3,2,1,D.0,1,2,3,4,5,6,7,8,9,23.以下叙述中错误的是()A.指针变量可以存放地址值B.所有指针变量的基类型都是相同的C.指针变量可以进行算术运算D.指针变量可以为空24.有定义语句:ints[4][5],(*ps)[5];则正确的赋值语句是()A.ps=s;B.ps=s[0];C.ps=*s;D.ps=s+1;25.有以下程序:main(){chara[]="program",*p;p=a;while(*p!='g'){printf("%c",*p-32);p++;}}程序运行结果是()A.PROGRAMB.PROC.proD.program26.若有定义typedefint*T;Ta[10];则以下定义中与上述a的类型完全等价的是()A.int*a[10];B.int(*a)[10];C.inta[10];D.int*(*a)[10];27.以下关于预处理命令的叙述正确的是()A.预处理命令行必须位于C源程序的起始位置B.在C语言中,预处理命令行都以#开头C.每个C程序必须在开头包含预处理命令:#include<stdio.h>D.C语言的预处理不能实现宏定义和条件编译28.有以下程序:main(){inta=3,s,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",s,t);}程序运行结果是()A.10,64B.10,10C.64,10D.64,6429.若有以下说明和定义:uniondt{inta;charb;doublec;}data;则以下叙述中错误的是()A.data的每个成员起始地址都相同B.data所占内存长度等于成员c所占的长度C.执行语句data.a=5;data.b=2;printf("%d\n",data.a);输出结果一定为5D.可以直接将同类型共用体变量赋值给data30.有以下枚举类型定义,正确的是()A.enuma={one,two,three};B.enuma{a1,a2,a3};C.enuma={'1','2','3'};D.enuma{"one","two","three"};31.以下叙述中正确的是()A.结构体变量的地址不能作为函数参数B.结构体中的成员可以是任意类型的变量,包括结构体本身C.结构体的成员名不能和其他结构体的成员名相同D.结构体定义时,关键字struct可以省略32.有以下程序:structs{inta,b;}data[2]={{10,100},{20,200}};main(){structsp=data[1];printf("%d\n",++p.a);}输出结果是()A.10B.11C.20D.2133.若要打开D盘根目录下的user.txt文本文件进行读操作,下面符合要求的函数调用是()A.fopen("D:\\user.txt","r");B.fopen("D:\user.txt","r");C.fopen("D:\\user.txt","rb");D.fopen("D:\user.txt","r+");34.以下关于字符串的叙述正确的是()A.字符串是由若干字符组成的数组,长度为数组的长度B.可以用关系运算符对两个字符串的大小进行比较C.C语言中字符串的结束标志是'\0'D.两个字符串连接时,长度小的字符串会自动扩容35.有以下程序:intfun(intn){if(n==1)return1;elsereturnn+fun(n-1);}main(){printf("%d\n",fun(5));}输出结果是()A.5B.10C.15D.2036.若有定义inta[3][4];则对a数组元素的非法引用是()A.a[0][2*1]B.a[1][3]C.a[4-2][0]D.a[0][4]37.以下不能正确计算代数式1/3*(sin(1/2))²的值的C语言表达式是()A.1/3*sin(1/2)*1/2B.sin(0.5)/3*0.5C.pow(sin(0.5),2)/3D.1/3.0*pow(sin(1.0/2),2)38.若有定义语句:intx=10;则表达式x-=x+x的值为()A.-20B.-10C.0D.1039.下列程序段的输出结果是()inta=1234;printf("%2d\n",a);A.12B.34C.1234D.提示出错,无效的格式符40.以下关于C语言文件的叙述正确的是()A.文件由ASCII码字符序列组成,C语言只能读写文本文件B.文件由二进制数据序列组成,C语言只能读写二进制文件C.文件由数据序列组成,可以分为文本文件和二进制文件D.文件结构是顺序存取的,不能随机存取二、程序填空题(共18分)给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回,并将大于平均值的数放在形参y所指数组中,在主函数中输出。例如,有10个正数:4630324061745154826,平均值为30.500000,主函数中输出:4632404548。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中,不得增行或删行,也不得更改程序的结构。```cdoublefun(doublex[],double*y){inti,j;doubleav;/*found*/av=__1__;for(i=0;i<N;i++)av=av+__2__;av/=N;for(i=j=0;i<N;i++)/*found*/if(x[i]>av)y[__3__]=x[i];y[j]=-1;returnav;}main(){inti;doublex[N],y[N];for(i=0;i<N;i++){x[i]=rand()%50;printf("%4.0f",x[i]);}printf("\n");printf("\nTheaverageis:%f\n",fun(x,y));for(i=0;y[i]>=0;i++)printf("%4.0f",y[i]);printf("\n");}```三、程序改错题(共18分)给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为7654321时,t中的数为642。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。```c/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;}}main(){longs,t;printf("\nPleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}```四、程序设计题(共24分)请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,c=4152。注意:部分源程序存在文件PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。```cvoidfun(inta,intb,long*c){}main(){inta,b;longc;printf("Inputa,b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ld\n",c);}```参考答案及解析一、选择题答案及解析1.答案:B。解析:算法的时间复杂度是执行算法所需要的计算工作量,仅与问题规模和输入数据集相关,与计算机性能、程序执行速度、语句条数无关,A、C、D错误,B正确。2.答案:B。解析:该栈为向上增长型(入栈时top自减),元素个数=初始top值-当前top值=m+1-20=m-19,B正确。3.答案:C。解析:前序遍历根节点优先访问,可知根为A;中序遍历左子树在根前、右子树在根后,可知左子树为CB,右子树为ED。左子树前序为BC,可知B为根、C为B的左孩子;右子树前序为DE,可知D为根、E为D的左孩子。后序遍历顺序为左-右-根,得序列CBEDA,C正确。4.答案:B。解析:结构化程序设计三种基本结构为顺序、选择、循环,跳转结构会破坏程序逻辑可读性,不属于基本控制结构,B正确。5.答案:D。解析:需求规格说明书是需求分析阶段的输出产物,作用是用户与开发人员交流的依据、开发的基础、测试验收的依据,不能用于支撑需求分析工作,D错误,选D。6.答案:C。解析:E-R图中矩形表示实体,椭圆表示属性,菱形表示实体间的联系,C正确。7.答案:B。解析:自然连接会自动去掉重复的属性列,总属性数=R的属性数+S的属性数-重复属性数=5+5-3=7,B正确。8.答案:C。解析:黑盒测试不关注程序内部逻辑,仅验证功能是否符合需求,方法包括等价类划分、边界值分析、错误推测法等;语句覆盖、逻辑覆盖、路径覆盖均为白盒测试方法,需基于内部逻辑设计用例,C正确。9.答案:B。解析:数据库系统的核心是数据库管理系统(DBMS),负责数据的统一管理、事务调度、安全控制等核心功能,B正确。10.答案:D。解析:快速排序、冒泡排序、直接插入排序最坏时间复杂度为O(n²),比较次数为n(n-1)/2;堆排序最坏时间复杂度为O(nlog₂n),比较次数远低于n(n-1)/2,D正确。11.答案:C。解析:实型常量的指数表示法要求E前必须有数字,E后必须为整数,A指数为小数、B无指数值、D无底数,均不符合语法,C正确。12.答案:A。解析:按运算符优先级计算:a%3=1,(int)(x+y)=7,1*7=7,7%2=1,1/4=0(整数除法结果向零取整),最终x+0=2.5,A正确。13.答案:C。解析:C语言程序的基本组成单元是函数,A错误;每行可以写多条语句,长语句可以跨多行书写,B、D错误;所有简单语句必须以分号结尾,分号是C语句的必要组成部分,C正确。14.答案:B。解析::=为Pascal等语言的赋值符,C语言不支持,A错误;C中int为关键字,不能用于表达式中的强制转换写法,C错误;赋值运算符左值必须为可修改的变量,a+7为表达式不能作为左值,D错误;连续赋值符合C语法,从右向左依次赋值,B正确。15.答案:D。解析:if分支后未用大括号包裹时,仅第一条语句属于if体,else无法匹配到对应的if,编译报错,D正确。16.答案:A。解析:k=1为赋值表达式,值恒为1,循环条件永远为真,程序进入无限循环,A正确。17.答案:B。解析:scanf函数参数需要传入变量地址,b为普通变量需加&,c为数组名本身代表数组首地址,无需加&,B正确。18.答案:B。解析:A选项初始化元素个数超过数组长度,错误;C为字符变量定义不是数组,错误;整型数组不能用字符串初始化,D错误;省略数组长度时,编译器会按初始化元素个数自动分配空间,B正确。19.答案:B。解析:i++<7为后缀自增,先判断再加1,循环中i取值为1到7,p[i]为12、13、14、15、16、17、18,其中奇数为13、15、17,累加和为45,B正确。20.答案:A。解析:!=优先级高于=,B选项先计算getchar()!='N'再赋值给ch,逻辑错误;C、D选项条件为等于N时循环,不符合“遇到N结束”的需求;A选项括号保证先执行赋值再判断,逻辑正确。21.答案:B。解析:C语言不允许嵌套定义函数,A错误;void类型函数无返回值,函数可以无形参,C、D错误;支持嵌套调用,允许函数调用其他函数,B正确。22.答案:A。解析:函数参数为值传递,形参的修改仅作用于函数内部,不影响实参的值,数组元素保持初始值不变,A正确。23.答案:B。解析:指针变量的基类型决定了指向数据的类型,不同基类型的指针不能直接赋值,所有指针变量基类型相同的说法错误,选B。24.答案:A。解析:ps为指向长度为5的int数组的指针,s为二维数组名,代表第一行数组的地址,类型匹配;s[0]、*s均为第一行第一个元素的地址,类型为int*,不匹配;s+1为第二行地址也符合语法,但本题最优选项为A。25.答案:B。解析:p指向字符串首地址,遇到'g'停止循环,输出p、r、o三个字符的大写(小写字母ASCII码减32转为大写),即PRO,B正确。26.答案:A。解析:typedef将int*定义为别名T,Ta[10]等价于int*a[10],为存储10个int指针的指针数组,A正确。27.答案:B。解析:预处理命令可以放在程序任意位置,A错误;不是所有程序都需要引入stdio.h,如仅做计算无需输入输出的程序,C错误;预处理支持宏定义、条件编译、文件包含三类功能,D错误;所有预处理命令均以#开头,B正确。28.答案:A。解析:宏替换为直接字符串替换,s=f(a+1)替换为a+1*a+1*a+1=3+3+3+1=10,t=f((a+1))替换为(a+1)*(a+1)*(a+1)=4*4*4=64,A正确。29.答案:C。解析:共用体所有成员共享同一块内存空间,修改b的值会覆盖a的存储内容,输出结果不是5,C错误,选C。30.答案:B。解析:枚举定义时不能加等号,枚举值为整型常量,不能用字符或字符串常量赋值,A、C、D错误,B正确。31.答案:B。解析:结构体变量地址可以作为函数参数,实现地址传递,A错误;不同结构体的成员名可以重名,C错误;定义结构体时struct关键字不能省略,D错误;结构体成员支持嵌套结构体类型,即结构体的成员可以是另一个已定义的结构体变量,B正确。32.答案:D。解析:data[1]的a成员值为20,++p.a为先自增再取值,结果为21,D正确。33.答案:A。解析:路径中的\需要转义为\\,读文本文件的模式为r,A正确;\user会被解析为转义字符,B错误;rb为读二进制文件,r+为读写模式,C、D错误。34.答案:C。解析:字符串长度为有效字符个数,不包含结束标志'\0',A错误;字符串比较需要用strcmp函数,不能直接用关系运算符,B错误;C语言字符串以'\0'作为结束标志,C正确;字符串连接需要手动保证目标数组足够大,编译器不会自动扩容,D错误。35.答案:C。解析:函数为递归求和,fun(5)=5+4+3+2+1=15,C正确。36.答案:D。解析:二维数组a[3][4]的第二维下标范围为0到3,a[0][4]越界,为非法引用,D正确。37.答案:A。解析:1/3为整数除法,结果为0,整个表达式值为0,不能正确计算代数式,A正确。38.答案:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2 型糖尿病缓解的营养治疗专家要点解析
- 2026年金融会计与审计实务操作模拟试题
- 新型纺织纤维相关试题及精准答案
- 2020年北京市中考英语真题及答案解析
- 通信专业技术人员职业水平考试(中级)《通信专业实务》试题与答案
- 2025年中级审计师考试历年真题题库及答案解析
- 教师综合业务测评试题及答案解析
- 教育孩子的心得体会与感悟5篇
- 2025年中级审计师资格考试试卷及答案
- 2025年人工智能训练师考试题库及参考答案解析
- 国家开放大学《纳税筹划》机考题库
- 宝武供应商入围管理办法
- JG/T 543-2018铝塑共挤门窗
- 服装公司售后管理制度
- 中医思维培养课件
- 中车株洲所校招笔试题目及答案
- GB/T 4948-2025铝合金牺牲阳极
- 公司图文服务采购方案投标文件(技术方案)
- 【北京市人社局】2025年北京市人力资源市场薪酬数据报告(一季度)
- 玉盘二部合唱简谱
- 中医基础理论脾课件
评论
0/150
提交评论