版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2009年全国计算机等级考试二级C笔试真题及答案一、选择题(1~10、21~40每题2分,11~20每题1分,共70分)(1)下列叙述中正确的是A)栈是“先进先出”的线性表B)队列是“先进后出”的线性表C)循环队列是非线性结构D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构答案:D解析:栈是先进后出的线性表,队列是先进先出的线性表,循环队列是队列的顺序存储实现,属于线性结构,因此A、B、C选项表述错误;有序线性表可根据实际场景选择顺序存储或链式存储,D选项正确。(2)支持子程序调用的数据结构是A)栈B)树C)队列D)二叉树答案:A解析:子程序调用时需要保存主程序的断点地址、现场寄存器等信息,待子程序执行完毕后再恢复现场回到主程序断点继续执行,该过程符合栈“先进后出”的特性,因此栈是支持子程序调用的核心数据结构。(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A)10B)8C)6D)4答案:C解析:二叉树的核心性质:叶子结点数=度为2的结点数+1,代入数据得5+1=6,C选项正确。(4)下列排序方法中,最坏情况下比较次数最少的是A)冒泡排序B)简单选择排序C)直接插入排序D)堆排序答案:D解析:冒泡排序、简单选择排序、直接插入排序最坏情况下的比较次数均为n(n-1)/2,时间复杂度为O(n²);堆排序最坏情况下比较次数为O(nlog₂n),比较次数最少,D选项正确。(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是A)编译程序B)操作系统C)教务管理系统D)汇编程序答案:C解析:操作系统属于系统软件,编译程序、汇编程序属于支撑软件,教务管理系统是面向具体教育业务场景开发的应用类软件,C选项正确。(6)下面叙述中错误的是A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性答案:A解析:软件测试的核心目的是尽可能多地发现程序中的错误,改正错误属于程序调试阶段的任务,A选项表述错误。(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度答案:B解析:模块独立性的设计准则为“高内聚、低耦合”:内聚性衡量模块内部元素的结合紧密程度,耦合性衡量模块间的关联紧密程度,因此降低耦合性、提高内聚性可有效提升模块独立性,B选项正确。(8)数据库应用系统中的核心问题是A)数据库设计B)数据库系统设计C)数据库维护D)数据库管理员培训答案:A解析:数据库应用系统的核心支撑是数据库,数据库设计的合理性直接决定系统的功能完整性、运行效率和可维护性,是数据库应用系统的核心问题,A选项正确。(9)有两个关系R、S如下:RABCa32b01c21ABa3b0c2A)选择B)投影C)插入D)连接答案:B解析:投影运算是从关系中选取指定的若干属性列组成新的关系,本题中S是选取R中的A、B两列得到的新关系,属于投影运算,B选项正确。(10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域答案:C解析:E-R图转换为关系模式的核心规则:实体可转换为一个独立关系,实体间的联系也可根据cardinality转换为独立的关系,C选项正确。(11)以下选项中,合法的一组C语言数值常量是A)028B)12.C).177D)0x8A5e-30Xa234e1.510,0000xf4.5e00abc3.e5答案:B解析:A选项中028为八进制常量,八进制数仅能包含0-7的数字,8为非法字符;C选项中4e1.5的指数部分必须为整数,非法;D选项中10,000不能包含逗号,非法;B选项全部合法:12.是合法实型常量,0Xa23是合法十六进制整型常量,4.5e0是合法实型常量。(12)以下叙述中正确的是A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,用以命名任意一个函数作为主函数答案:C解析:C程序的执行入口固定为main函数,main是C语言预定义的主函数名,不能作为普通用户标识符使用,程序执行从main函数开始,到main函数执行结束为止,C选项正确。(13)若在定义语句:inta,b,c;之后,接着执行以下选项中的语句,则能正确执行的语句是A)scanf("%d",a,b,c);B)scanf("%d%d%d",a,b,c);C)scanf("%d",&a,b,c);D)scanf("%d%d%d",&a,&b,&c);答案:D解析:scanf函数的输入参数列表中,接收输入的变量必须传入内存地址,因此三个变量都需要添加取地址符&,D选项正确。(14)以下选项中不能作为C语言合法常量的是A)'cd'B)0.1e+6C)"\a"D)'\011'答案:A解析:字符常量仅能包含单个字符,'cd'包含两个字符属于非法常量;B是实型常量,C是字符串常量,D是八进制转义字符常量,均合法。(15)以下选项中,不合法的用户标识符是A)abc.cB)fileC)MainD)PRINTF答案:A解析:C语言用户标识符仅能由字母、数字、下划线组成,且不能以数字开头,不能是C语言关键字,A选项包含小数点,属于非法标识符;注意C语言区分大小写,Main、PRINTF均不是关键字,属于合法标识符。(16)C源程序中不能表示的数制是A)二进制B)八进制C)十进制D)十六进制答案:A解析:C语言中整型常量可通过八进制(以0开头)、十进制、十六进制(以0x或0X开头)表示,不能直接表示二进制常量,A选项正确。(17)若有表达式(w)?(--x):(++y),则其中与w等价的表达式是A)w==1B)w==0C)w!=1D)w!=0答案:D解析:三目运算符中?前的表达式会被自动转换为逻辑值判断,非0为真、0为假,因此w等价于w!=0,D选项正确。(18)执行以下程序段后,w的值为intw='A',x=14,y=15;A)□□□1,2,3<回车>B)1□2□3<回车>C)1,□□□2,□□□3<回车>D)1,2,3<回车>答案:B解析:scanf的格式控制字符串中包含逗号分隔符,因此输入时必须在三个数字之间输入逗号,B选项没有逗号,会导致输入匹配失败,B选项错误。(20)有以下程序段inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%d\n",a,b,c);程序的输出结果是A)a=10b=50c=10B)a=10b=50c=30C)a=10b=30c=10D)a=50b=30c=50答案:A解析:if语句的管辖范围仅为其后紧跟的第一条语句,即a=b,b=c;由于a=10<b=50,该语句不执行,接下来执行c=a,因此c=10,最终输出a=10b=50c=10,A选项正确。(21)有以下程序intmain(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;}printf("%d\n",n);return0;}程序运行后的输出结果是A)0B)4C)6D)7答案:D解析:循环执行过程:k=5时无匹配case,break,k减为4;k=4时无匹配case,break,k减为3;k=3匹配case3,n+=3→n=3,无break继续执行,k减为2;k=2匹配case2,无语句继续执行到case3,n+=2→n=5,k减为1;k=1匹配case1,n+=1→n=6,无break继续执行到case2、case3,n+=1→n=7,k减为0循环结束,输出7,D选项正确。(22)以下选项中,当x为大于1的奇数时,值为0的表达式是A)x%2==1B)x/2C)x%2!=0D)x%2==0答案:D解析:x为大于1的奇数时,x对2取余结果为1,因此x%2==0的结果为假,即0,D选项正确。(23)有以下程序intmain(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf("m=%d\n",m);return0;}程序运行后的输出结果是A)m=6B)m=2C)m=4D)m=5答案:A解析:外层i=1时,内层j=3:1*3=3≤3,m=1*3=3;j=2:1*2=2≤3,m=3*2=6;j=1:1*1=1≤3,m=6*1=6;外层i=2时,内层j=3:2*3=6>3,break,内层循环结束,最终m=6,A选项正确。(24)有以下程序intmain(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf("%d,%d\n",a,b);return0;}程序运行后的输出结果是A)9,18B)8,11C)7,11D)10,14答案:D解析:循环执行过程:初始a=1,b=2,判断a<8成立:b+=1→b=3,a+=2→a=3,循环体结束执行for增量a++→a=4;判断4<8成立:b+=4→b=7,a+=2→a=6,循环体结束a++→a=7;判断7<8成立:b+=7→b=14,a+=2→a=9,循环体结束a++→a=10;a=10≥8循环结束,输出10,14,D选项正确。(25)以下不构成无限循环的语句或语句组是A)n=0;do{++n;}while(n<=0);B)n=0;while(1){n++;}C)n=10;while(n);{n--;}D)for(n=0,i=1;;i++)n+=i;答案:A解析:A选项do-while循环先执行++n,n变为1,判断n<=0为假,循环结束,不会无限循环;B选项while(1)条件永久为真,无限循环;C选项while(n)后额外添加了分号,循环体为空语句,n=10永久不会被修改,条件永久为真,无限循环;D选项for循环无终止条件,无限循环。(26)有以下程序intfun(intx,inty){if(x!=y)return((x+y)/2);elsereturn(x);}intmain(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));return0;}程序运行后的输出结果是A)3B)6C)8D)12答案:B解析:先计算内层fun(b,c)=fun(5,6),5≠6返回(5+6)/2=5(整数除法);再计算外层fun(8,5),8≠5返回(8+5)/2=6,输出6,B选项正确。(27)有以下程序voidfun(intp){intd=2;p=d++;printf("%d",p);}intmain(){inta=1;fun(a);printf("%d\n",a);return0;}程序运行后的输出结果是A)32B)12C)21D)22答案:C解析:函数参数为值传递,fun函数中的p是局部变量,p=d++→d先赋值给p=2,之后d变为3,输出p=2;回到main函数,实参a的值不会被修改,仍为1,输出1,整体输出21,C选项正确。(28)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。voidfun(intx[N]){inti=0;while(i<N)scanf("%d",______);}在下划线处应填入的是A)x+iB)&x[i+1]C)x+(i++)D)&x[++i]答案:C解析:每次输入需要传入x[i]的地址,且i需要自增实现数组遍历,x+i等价于&x[i],i++为后置自增,先使用i的当前值再自增,x+(i++)符合要求;A选项无i自增会导致无限循环;B选项地址错误且无i自增;D选项++i为前置自增,会从x[1]开始赋值,漏掉x[0]。(29)有以下程序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)good答案:A解析:字符的ASCII码为偶数时输出:g的ASCII为103(奇数),o的ASCII为111(奇数),d的ASCII为100(偶数),因此仅输出d,A选项正确。(30)有以下程序voidfun(char*a,char*b){while(*a=='*')a++;while(*b=*a){a++;b++;}}intmain(){char*s="*a*b*",t[80];fun(s,t);puts(t);return0;}程序运行的输出结果是A)a*bB)a*bC)a*b*D)ab答案:C解析:第一个while循环跳过s开头的所有*,直到a指向字符'a',第二个循环将a指向的所有字符依次复制到t中(包含后续的*),直到遇到字符串结束符,因此t中的内容为a*b,C选项正确。(31)有以下程序intmain(){chara[10]="abcd";printf("%d,%d\n",strlen(a),sizeof(a));return0;}程序运行后的输出结果是A)7,4B)4,10C)8,8D)10,10答案:B解析:strlen计算字符串有效长度,不包含结束符\0,a中有效字符为4个,因此strlen(a)=4;sizeof计算数组总字节数,a定义为10个元素的char数组,每个char占1字节,因此sizeof(a)=10,B选项正确。(32)以下选项中正确的语句组是A)chars[];s="BOOK!";B)char*s;s={"BOOK!"};C)chars[10];s="BOOK!";D)char*s;s="BOOK!";答案:D解析:数组名是地址常量,不能被直接赋值,因此A、C选项错误;指针赋值字符串常量时不需要添加花括号,B选项错误;D选项中s指向字符串常量"BOOK!"的首地址,表述正确。(33)有以下程序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)-12,-3,0,0,C)0,1,2,3,D)-3,-3,1,1,答案:A解析:逐次计算b[i]:i=0时,a[0][0]-a[0][3]=1-4=-3;i=1时,a[1][1]-a[1][2]=6-7=-1;i=2时,a[2][2]-a[2][1]=11-10=1;i=3时,a[3][3]-a[3][0]=16-13=3,因此输出-3,-1,1,3,,A选项正确。(34)有以下程序intfun(intn){if(n==1)return1;elsereturnn+fun(n-1);}intmain(){intx;scanf("%d",&x);printf("%d\n",fun(x));return0;}程序执行时,输入10,程序的输出结果是A)55B)54C)65D)45答案:A解析:函数通过递归实现1到n的累加求和,1到10的累加和为55,A选项正确。(35)有以下程序intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;}intmain(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);return0;}程序运行后的输出结果是A)45B)50C)60D)55答案:C解析:sum是静态局部变量,仅在第一次调用时初始化,生命周期贯穿程序全程:第一次调用fun(a,5),sum=1+2+3+4+5=15,返回15;第二次调用fun(b,4),sum保留上次的15,累加6+7+8+9=30,sum变为45,返回45;s=15+45=60,C选项正确。(36)有以下程序structS{inta,b;}data[2]={10,100,20,200};intmain(){structSp=data[1];printf("%d\n",++p.a);return0;}程序运行后的输出结果是A)10B)11C)20D)21答案:D解析:data数组初始化后,data[0].a=10,data[0].b=100,data[1].a=20,data[1].b=200;p=data[1],p.a初始为20,++p.a后变为21,输出21,D选项正确。(37)有以下程序intmain(){int*a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2,*c=3;a=b;printf("%d,%d,%d\n",*a,*b,*c);return0;}程序运行后的输出结果是A)3,3,3B)2,2,3C)1,2,3D)1,1,3答案:A解析:a、b、c三个指针均指向同一块malloc申请的内存空间,*c=3会覆盖之前的1和2,因此三个指针指向的内容均为3,输出3,3,3,A选项正确。(38)typedefstructS{intg;charh;}T;以下叙述中正确的是A)可用S定义结构体变量B)可用T定义结构体变量C)S是struct类型的变量D)T是structS类型的变量答案:B解析:typedef的作用是给已有类型起别名,T是structS的别名,因此可通过T定义结构体变量;S是结构体标签,需要通过structS才能定义变量,B选项正确。(39)以下关于宏的叙述中正确的是A)宏名必须用大写字母表示B)宏定义必须位于源程序中所有语句之前C)宏替换没有数据类型限制D)宏调用比函数调用耗费时间答案:C解析:宏名没有强制要求大写,仅为约定俗成的编码规范;宏定义可放在程序任意位置,仅需保证在调用前完成定义;宏替换是预处理阶段的文本替换,无数据类型限制,C选项正确;宏替换在编译前完成,不占用运行时间,函数调用在运行阶段执行,宏调用速度更快。(40)设有定义:inta=2,b=3,c=4;,则以下选项中值为0的表达式是(1)假设某二叉树有20个叶子结点,则该二叉树中度为2的结点个数为【1】。答案:19解析:二叉树核心性质:叶子结点数=度为2的结点数+1,因此度为2的结点数=20-1=19。(2)按照软件测试的一般步骤,集成测试应在【2】测试之后进行。答案:单元解析:软件测试的标准流程为单元测试、集成测试、确认测试、系统测试,集成测试在单元测试之后开展,用于验证多个模块组合后的功能正确性。(3)按照数据流图的类型,可分为变换型和【3】型两类。答案:事务解析:数据流图分为变换型和事务型两类:变换型数据流图以数据加工为核心,事务型数据流图以事务处理分支为核心。(4)在数据库系统中,实现各种数据管理功能的核心软件称为【4】。答案:数据库管理系统(或DBMS)解析:数据库管理系统(DBMS)是数据库系统的核心软件,负责数据的存储、查询、修改、安全控制等全生命周期管理。(5)有三个关系R、S和T如下:RABCa12b21c31ABCa12d21ABCb21c31答案:差解析:差运算的结果是所有属于R但不属于S的元组组成的集合,R-S的结果与T完全一致,因此该运算为差运算。(6)有以下程序段,且变量已正确定义和赋值:for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));printf("s=%f\n\n",s);请填空,使下面程序段的功能与之完全相同。s=1.0;k=1;while(【6】){s=s+1.0/(k*(k+1));【7】;}printf("s=%f\n\n",s);答案:【6】k<=n【7】k++解析:for循环的循环条件为k<=n,每次循环结束后执行k++,因此while循环的条件为k<=n,循环体末尾添加k++实现相同的遍历逻辑。(7)以下程序运行后的输出结果是【8】。intmain(){inta,b,c;return0;}答案:10200解析:a%b=10%20=10,10<1为假;a/b=10/20=0,0>1为假;逻辑或运算两个操作数均为假,结果为0,因此c=0,输出10200。(8)以下程序运行后的输出结果是【9】。intmain(){charc1,c2;for(c1='0',c2='9';c1<c2;c1++,c2--)printf("%c%c",c1,c2);printf("\n");return0;}答案:0918273645解析:循环执行过程:c1='0'、c2='9'输出09,c1='1'、c2='8'输出18,c1='2'、c2='7'输出27,c1='3'、c2='6'输出36,c1='4'、c2='5'输出45,c1='5'、c2='4'时循环终止,整体输出0918273645。(9)有以下程序,若运行时输入:123456789<回车>,则输出结果是【10】。intmain(){inti,j,a[3][3];for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++)printf("%d",a[i][2-i]);printf("\n");return0;}答案:357解析:输入后数组按行存储为:a[0][0]=1,a[0][1]=2,a[0][2]=3;a[1][0]=4,a[1][1]=5,a[1][2]=6;a[2][0]=7,a[2][1]=8,a[2][2]=9;输出a[0][2]=3、a[1][1]=5、a[2][0]=7,因此输出357。(10)以下程序运行后的输出结果是【11】。intfun(intx){staticintt=0;return(t+=x);}intmain(){ints,i;for(i=1;i<=5;i++)s=fun(i);printf("%d\n",s);return0;}答案:15解析:t是静态局部变量,每次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康课件制作技巧
- 2026事业单位工勤技能-江苏-江苏不动产测绘员五级(初级工)历年参考题库含答案详解3套试卷
- 2026事业单位工勤技能-新疆-新疆殡葬服务工五级(初级工)历年参考题库含答案详解3套试卷
- 酒店消防安全防范标准
- 膝关节健康模板
- 大便干结健康宣教
- 2026年秋季开学大学一年级新生军训作息管理教学课件
- 2026年秋季开学初中一年级新生军训流动红旗课件
- 2026年四川工商联渠道对接专员招聘考试练习试卷【含答案】
- 2025年八年级历史期末中国古代史综合测试卷:古代历史与科技创新
- 分析化学期末复习试题及答案
- NBT 11402-2023 火力发电厂安全设施设计专篇编制导则
- 2025年桦甸市产业发展有限公司招聘模拟试卷及答案详解(新)
- 听神经瘤的诊治及护理
- 市政管道清淤施工合同范本
- 化工车间食品安全培训课件
- 抗压能力测试题目及答案
- 矿山物资管理办法
- 新课标学习培训课件
- 安利公司薪酬管理制度
- JG/T 526-2017建筑电气用可弯曲金属导管
评论
0/150
提交评论