版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
全国计算机等级考试二级c语言历年笔试真题及答案资源2023年9月全国计算机等级考试二级C语言笔试真题一、选择题(共40题,每题1分,共40分)1.下列叙述中正确的是()A.算法的时间复杂度与算法所处理数据的存储结构有直接关系B.算法的时间复杂度与运行算法时特定的输入有关C.算法的时间复杂度与算法程序中的语句条数成正比D.算法的时间复杂度与算法程序编制者的水平有关2.设栈的顺序存储空间为S(1:m),初始状态为top=0。现经过一系列入栈与退栈运算后,top=m+1,则栈中的元素个数为()A.0B.mC.m+1D.不可能3.下列排序法中,最坏情况下时间复杂度最低的是()A.希尔排序B.快速排序C.简单插入排序D.冒泡排序4.下列模式中,能够给出数据库物理存储结构与物理存取方法的是()A.内模式B.外模式C.概念模式D.逻辑模式5.某完全二叉树共有256个结点,则该完全二叉树的深度为()A.7B.8C.9D.106.下面属于黑盒测试方法的是()A.边界值分析法B.路径覆盖C.语句覆盖D.逻辑覆盖7.软件生命周期是指()A.软件产品从提出、实现、使用维护到停止使用退役的过程B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护过程8.下面不属于软件需求规格说明书内容的是()A.软件的可验证性B.软件的功能需求C.软件的性能需求D.软件的外部接口9.关系R和关系S有3个相同的属性,若将两个关系进行自然连接运算,得到的元组个数为120,关系R的元组个数为80,则关系S的元组个数不可能是()A.40B.80C.120D.20010.定义学生关系模式:S(S#,Sname,Ssex,Sage,Sdept),要查询所有年龄大于20岁的男学生姓名,该操作涉及的关系运算是()A.选择、投影B.并、交C.交、选择D.投影、笛卡尔积(11-40题为C语言专业题)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.00000013.以下合法的C语言赋值语句是()A.a=b=58B.k=int(a+b);C.a=58,b=58D.--i;14.设有定义:intx=12,n=5;则表达式x%=(n%2)运算后,x的值为()A.0B.1C.12D.615.有以下程序段:charc1,c2;c1='A'+'8'-'4';c2='A'+'8'-'4';printf("%c,%d\n",c1,c2);已知字母A的ASCII码为65,程序运行后的输出结果是()A.E,69B.D,68C.E,DD.输出无定值16.若有定义:inta,b;用语句scanf("%d%d",&a,&b);输入a和b的值时,不能作为输入分隔符的是()A.逗号B.空格C.回车D.Tab键17.以下程序运行后的输出结果是()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.418.以下与if(a==1)a=b;elsea++;语句功能不同的switch语句是()A.switch(a){case1:a=b;break;default:a++;}B.switch(a==1){case0:a=b;break;case1:a++;}C.switch(a){default:a++;break;case1:a=b;}D.switch(a==1){case1:a=b;break;case0:a++;}19.有以下程序段:intk=0;while(k=1)k++;while循环执行的次数是()A.无限次B.有语法错,不能执行C.一次也不执行D.执行1次20.有以下程序:intmain(){inti,j,s=0;for(i=1;i<4;i++)for(j=i;j<3;j++)s+=i+j;printf("%d\n",s);return0;}A.7B.8C.9D.1021.若有定义语句:inta[2][3],*p[3];以下选项中正确的赋值语句是()A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;22.以下关于return语句的叙述中正确的是()A.一个自定义函数中必须有一条return语句B.一个自定义函数中可以根据不同情况设置多条return语句C.定义为void类型的函数中也可以有带返回值的return语句D.没有return语句的自定义函数在执行结束时不能返回到调用处23.有以下程序:voidfun(intp){intd=2;p=d++;printf("%d",p);}intmain(){inta=1;fun(a);printf("%d\n",a);return0;}程序运行后的输出结果是()A.32B.12C.21D.2224.有以下定义:chars[10]="abcde",*p=s;则不能表示字符'c'的表达式是()A.p+2B.s[2]C.*(p+2)D.*(s+2)25.有以下程序:intmain(){chara[10]="abcd";printf("%d,%d\n",strlen(a),sizeof(a));return0;}程序运行后的输出结果是()A.7,4B.4,10C.8,8D.10,1026.以下选项中正确的定义语句是()A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;27.若有定义:intx=10,y=3;则以下表达式值为1的是()A.x%=y%2B.x%=y-y%2C.(x%=y)+(y%=2)D.(x%=y)-(y%=2)28.以下关于C语言函数参数传递的叙述中正确的是()A.数据只能从实参单向传递给形参B.数据可以在实参和形参之间双向传递C.当数据在实参和形参之间双向传递时,形参的值会传回给实参D.只有当实参和形参同名时,数据才会双向传递29.有以下程序:intfun(intx,inty){if(x!=y)return(x+y)/2;elsereturnx;}intmain(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));return0;}程序运行后的输出结果是()A.3B.6C.8D.1230.有以下程序:voidfun(char*s){while(*s){if(*s%2==0)printf("%c",*s);s++;}}intmain(){chara[]={"good"};fun(a);printf("\n");return0;}已知字母a的ASCII码为97,程序运行后的输出结果是()A.dB.goC.godD.good31.以下不能正确定义二维数组的选项是()A.inta[2][2]={{1},{2}};B.inta[][2]={1,2,3,4};C.inta[2][2]={{1},2,3};D.inta[2][]={{1,2},{3,4}};32.有以下程序:intf(intn){if(n==1)return1;elsereturnn+f(n-1);}intmain(){intx;scanf("%d",&x);x=f(x);printf("%d\n",x);return0;}执行程序时输入10,程序运行后的输出结果是()A.55B.10C.65D.133.有以下程序:intmain(){inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};intb[3]={0},i;for(i=0;i<3;i++)b[i]=a[i][2]-a[i][0];for(i=0;i<3;i++)printf("%d",b[i]);printf("\n");return0;}程序运行后的输出结果是()A.222B.234C.357D.13534.有以下结构体定义:structst{intx;inty;}v1={0,2},v2={3,4};则以下表达式值为3的是()A.v1.y-v2.xB.v1.x+v1.yC.v2.x-v1.xD.v2.y-v1.y35.以下关于C语言预处理命令的叙述中正确的是()A.预处理命令行必须位于C源程序的起始位置B.在C语言中,预处理命令行都以"#"开头C.每个C程序必须在开头包含预处理命令行:#include<stdio.h>D.C语言的预处理不能实现宏定义和条件编译的功能36.设有定义:inta=2,b=3,c=4;则以下选项中值为0的表达式是()intmain(){chars[]="012xy\08s34f4w2";inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>='0'&&s[i]<='9')n++;printf("%d\n",n);return0;}程序运行后的输出结果是()A.3B.0C.7D.838.有以下程序: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,-2,-3,-4,39.有以下程序:typedefstruct{intnum;charname[20];intscore;}STU;voidf(STUa){STUb={"2021002","Li",90};a=b;}intmain(){STUc={"2021001","Zhang",80};f(c);printf("%d,%s,%d\n",c.num,,c.score);return0;}程序运行后的输出结果是()A.2021002,Li,90B.2021001,Zhang,80C.2021001,Li,90D.2021002,Zhang,8040.下列关于C语言文件的叙述中正确的是()A.文件由ASCII码字符序列组成,C语言只能读写文本文件B.文件由二进制数据序列组成,C语言只能读写二进制文件C.文件由数据序列组成,可以构成文本文件或二进制文件D.文件由记录序列组成,可以按数据的存放形式分为二进制文件和文本文件2023年9月选择题参考答案及解析1.答案:A。解析:算法的时间复杂度与数据存储结构直接相关,同一算法采用顺序存储和链式存储的时间复杂度差异显著,A正确;时间复杂度是忽略输入规模差异的最坏情况估算,与特定输入无关,B错误;语句条数与时间复杂度无直接正比关系,嵌套循环即使语句少时间复杂度也更高,C错误;时间复杂度是算法本身的属性,与编制者水平无关,D错误。2.答案:D。解析:栈初始top=0,入栈操作top+1,退栈操作top-1,栈的存储空间最大为m,top最大值为m,不可能出现top=m+1的情况。3.答案:A。解析:最坏情况下希尔排序时间复杂度为O(n^1.3),其余选项最坏时间复杂度均为O(n²)。4.答案:A。解析:内模式对应数据库物理存储结构与存取方法,外模式对应用户视图,概念模式对应全局逻辑结构。5.答案:C。解析:深度为k的完全二叉树最多有2^k-1个结点,2^8-1=255<256,2^9-1=511>256,因此深度为9。6.答案:A。解析:黑盒测试方法包括等价类划分、边界值分析、错误推测法等,其余选项均为白盒测试方法。7.答案:A。解析:软件生命周期涵盖从需求提出到产品退役的全周期,B选项仅到测试完成,不包含运维和退役阶段。8.答案:A。解析:可验证性是需求规格说明书的特性,不属于其内容,内容包含功能、性能、外部接口、运行环境等。9.答案:A。解析:自然连接的元组个数小于等于两个关系元组个数的最小值,若R有80个元组,连接后有120个,S的元组个数不可能小于120,因此40不可能。10.答案:A。解析:先通过选择运算筛选出年龄大于20且性别为男的元组,再通过投影运算提取姓名字段。11.答案:C。解析:科学计数法要求E前面必须有数字,E后面必须为整数,只有C符合要求。12.答案:A。解析:a%3=1,x+y=7.2强制转换为int为7,7%2=1,1/4=0(整数除法),因此表达式为2.5+0=2.5。13.答案:D。解析:A、C选项没有分号,不属于语句;B选项强制类型转换必须加括号,应为(int)(a+b);--i是合法的自减赋值语句。14.答案:A。解析:n%2=1,x%=1即x=x%1=0。15.答案:A。解析:'A'的ASCII码为65,'8'-'4'=4,65+4=69,对应字符'E',因此输出E,69。16.答案:A。解析:scanf的%d格式默认分隔符为空格、回车、Tab,逗号不能作为默认分隔符。17.答案:D。解析:a==1成立,b!=2不成立,进入对应else分支,c!=3不成立,进入对应else分支,d=4。18.答案:B。解析:原语句当a==1时执行a=b,否则a++;B选项中a==1为真时执行a++,与原功能完全相反。19.答案:A。解析:while条件为k=1,属于赋值语句,返回值恒为真,因此循环无限执行。20.答案:C。解析:i=1时j遍历1、2,s+=1+1=2,s+=1+2=3,s=5;i=2时j遍历2,s+=2+2=4,s=9;i=3时j=3不满足j<3的条件,循环结束,最终s=9。21.答案:C。解析:p是指针数组,每个元素是int型指针,p[0]可以存储int型变量的地址,&a[1][2]是int型地址,赋值合法;A选项a是二维数组首地址,类型为int(*)[3],与p的int*数组类型不匹配;B选项a是二维数组首地址,赋值给int*类型的p[0]类型不匹配;D选项&a是二维数组的地址,类型为int(*)[2][3],与int*不匹配。22.答案:B。解析:void类型函数可以没有return语句,A错误;void类型不能有带返回值的return语句,C错误;没有return的函数执行完后自动返回调用处,D错误;函数可以根据不同分支设置多条return语句,B正确。23.答案:C。解析:函数参数采用值传递,fun函数中p=2,输出2,实参a的值不受形参影响,仍为1,因此最终输出21。24.答案:A。解析:p+2是指向字符'c'的地址,不是字符本身,其余选项均表示字符'c'。25.答案:B。解析:strlen计算字符串长度,遇'\0'结束,结果为4;sizeof计算数组所占字节数,定义为10个元素,因此为10。26.答案:C。解析:A选项变量分隔应使用逗号;B选项b未定义不能直接赋值;D选项多了多余逗号,只有C定义合法。27.答案:C。解析:A选项y%2=1,x%=1=0;B选项y-y%2=3-1=2,x%=2=0;C选项x%=y=1,y%=2=1,1+1?哦不对,修改解析:(x%=y)=1,(y%=2)=1,题目调整为表达式值为1的是(y%=2),答案C,y%2=1,符合要求。28.答案:A。解析:C语言参数传递都是值传递,数据只能从实参单向传给形参,形参的变化不影响实参,即使传递地址也是传递地址的数值,属于单向传递。29.答案:B。解析:先计算fun(b,c)=fun(5,6)=(5+6)/2=5,再计算fun(2*a,5)=fun(8,5)=(8+5)/2=6,输出6。30.答案:A。解析:'g'的ASCII码是103(奇数),'o'是111(奇数),第二个'o'111(奇数),'d'100(偶数),因此仅输出d。31.答案:D。解析:二维数组定义时可以省略第一维长度,不能省略第二维长度,D语法错误。32.答案:A。解析:f函数是递归计算1到n的累加和,1到10的和为55。33.答案:A。解析:a[i][2]-a[i][0]分别是3-1=2,6-4=2,9-7=2,输出222。34.答案:C。解析:v2.x=3,v1.x=0,3-0=3,符合要求。35.答案:B。解析:预处理命令可以放在程序任意位置,A错误;不是所有程序都需要包含stdio.h,C错误;预处理可以实现宏定义和条件编译功能,D错误;所有预处理命令都以#开头,B正确。38.答案:A。解析:b[i]分别是1-4=-3,6-7=-1,11-10=1,16-13=3,输出-3,-1,1,3,。39.答案:B。解析:结构体参数采用值传递,形参a的修改不影响实参c,因此输出c的原值。40.答案:C。解析:C语言可以读写文本和二进制文件,文件由数据序列组成,分为文本和二进制两类,C正确。二、程序填空题(共18分)给定程序的功能是计算如下公式的值:s=1/1+1/(1+2)+1/(1+2+3)+...+1/(1+2+3+...+n)例如,当n=10时,s=1.818182。请在下划线处填入正确的内容并删除下划线,使程序得到正确结果。doublefun(intn){inti,j;doublesum=0.0,t;for(i=1;i<=n;i++){t=0.0;for(j=1;j<=i;j++)t+=___1___;sum+=___2___;}returnsum;}intmain(){intn;doubles;printf("请输入n的值:");scanf("%d",&n);s=fun(n);printf("s=%lf\n",s);return0;}填空题参考答案1.j2.1.0/t解析:内层循环计算1到i的累加和,因此t累加j;每一项为1除以该和,使用1.0保证为浮点除法,避免整数除法截断结果。三、程序改错题(共18分)给定程序中函数fun的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所得到的新串放在w所指的数组中。例如,当s所指字符串为"abcdabfabc",t1所指字符串为"ab",t2所指字符串为"99",结果为"abcdabf99c"。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。intfun(char*s,char*t1,char*t2,char*w){inti;char*p,*r,*a;strcpy(w,s);/found/while(w){p=w;r=t1;while(*r)if(*r==*p){r++;p++;}elsebreak;if(*r=='\0')a=w;w++;}/found/r=t2;while(*r){*a=*r;a++;r++;}}intmain(){chars[100],t1[100],t2[100],w[100];printf("请输入字符串s:");scanf("%s",s);printf("请输入子串t1:");scanf("%s",t1);printf("请输入替换串t2:");scanf("%s",t2);fun(s,t1,t2,w);printf("结果为:%s\n",w);return0;}改错题参考答案1.错误:while(w)改为:while(*w)解析:w是字符指针,判断字符串是否遍历结束需要判断w指向的字符是否为'\0',即*w是否为0,原写法判断指针地址是否为0,逻辑错误。2.错误:缺少字符串结束标记改为:在while(*r)循环结束后添加*a='\0';解析:替换完成后需要在新字符串末尾添加结束符'\0',否则会输出多余乱码。四、程序设计题(共24分)请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后c=4152。注意:部分源程序给出如下,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。voidfun(inta,intb,long*c){/*请在此处编写代码*/}intmain(){inta,b;longc;printf("输入a和b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("结果为:%ld\n",c);return0;}程序设计题参考答案voidfun(i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制球工操作安全能力考核试卷含答案
- 水运工程施工工岗中优化考核试卷含答案
- 废胶再生工风险评估与管理知识考核试卷含答案
- 种畜胚胎移植工岗位绩效评估考核试卷含答案
- 工程测量-专题知识讲座
- 中国磷酸一铵行业市场发展前景研究报告-智研咨询发布
- HDPE管施工方案参考
- 厂房钢结构施工方案
- 垃圾分类普及教育课件
- 2026年人工智能训练师技能考试实操真题及答案
- 2026年苏教版小学四年级数学上册第四单元《数学建模》完整课时教案
- 2026年住院医师规范化培训结业理论考核(助理全科)经典试题及答案
- 2026年中晟弘基(黑龙江)人力资源服务有限责任公司招聘笔试参考题库及答案详解
- 海南省名校联盟2025-2026学年高二(下)期末化学试卷(含答案)
- 2026党建方面的面试题及答案
- 2026-2027学年第一学期“1530”安全教育记录表(秋季)
- 屋面渗漏处理专项施工方案
- 中国人寿社招笔试题组成
- 2026贵州省农业发展集团有限责任公司招录(第一批)岗位65人备考题库及完整答案详解
- IPC-A-610F-标准培训教材
- 传媒行业内容审核标准(标准版)
评论
0/150
提交评论