您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 2011年3月真题(解析)
2011年3月计算机等级考试二级C语言笔试一、选择题(共70分,其中第11~20题每题1分;第1~10、21~40题每题2分)1、下列关于栈叙述正确的是A)栈顶元素最先能被删除B)栈顶元素最后才能被删除C)栈底元素永远不能被删除D)以上三种说法都不对【解析】栈的特点是:先入后出、后入先出。栈顶元素是最后入栈的元素,因此最先被访问。2、下列叙述中正确的是A)有一个以上根结点的数据结构不一定是非线性结构B)只有一个根结点的数据结构不一定是线性结构C)循环链表是非线性结构D)双向链表是非线性结构【解析】树是非线性结构,即使是只有根结点的树也是非线性结构。3、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)A)3B)4C)6D)7【解析】利用二叉树的性质3:在任意一棵二叉树中,度数为0的结点(叶子结点)总是比度为2的结点多一个,即n0=n2+1。该题的叶子结点(即度为0的结点)只有1个,说明度为2的结点是0个,因此这棵二叉树总共有7层,每层只有1个结点。4、在软件开发中,需求分析阶段产生的主要文档是A)软件集成测试计划B)软件详细设计说明书C)用户手册D)软件需求规格说明书5、结构化程序所要求的基本结构不包括A)顺序结构B)GOTO跳转C)选择(分支)结构D)重复(循环)结构【解析】结构化程序设计的三种基本结构是:顺序结构、选择结构、循环结构。6、下面描述中错误的是A)系统总体结构图支持软件系统的详细设计B)软件设计是将软件需求转换为软件表示的过程C)数据结构与数据库设计是软件设计的任务之一D)PAD图是软件详细设计的表示工具7、负责数据库中查询操作的数据库语言是A)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言8、一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是A)1:1联系B)1:m联系C)m:1联系D)m:n联系9、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A)自然连接B)交C)除D)并10、定义无符号整数类为UInt,下面可以作为类UInt实例化值的是A)-369B)369C)0.369D)整数集合{1,2,3,4,5}【解析】实例表示某个类中一个具体的对象。11、计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是A)C语言程序仅可以编译执行B)C语言程序仅可以解释执行C)C语言程序既可以编译执行又可以解释执行D)以上说法都不对【解析】所谓编译执行是指将所有源代码全部编译结束后再执行程序。所谓解释执行,是指一边编译源代码,一边执行程序。12、以下叙述中错误的是A)C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件【解析】C语言的源程序(.c)经过编译后生成目标文件(.obj),再经过连接后生成可执行文件(.exe),可执行文件是能够被计算机执行执行的程序。13、以下选项中不能用作C程序合法常量的是A)1,234B)'\123'C)123D)\x7G【解析】选项B是八进制的转义字符常量;选项C是十进制的整型常量;选项D是字符串常量。14、以下选项中可以用作C程序合法实数的是A).1e0B)3.0e0.2C)E9D)9.12E【解析】实数常量有两种表示形式——(1)小数形式;(2)指数形式。其中,指数形式的书写格式为:字母e或E的两侧必须有数,并且右侧必须是整数。15、若有定义语句:inta=3,b=2,c=1;,以下选项中错误的赋值表达式是A)a=(b=4)=3;B)a=b=c+1;C)a=(b=4)+c;D)a=1+(b=c=4);【解析】考点:赋值号左侧必须是变量,不能是常量或者表达式。16、有以下程序段charname[20];intnum;scanf(name=%snum=%d,name,&num);//向数组name中输入字符串”Lili”,向变量num中输入1001当执行上述程序段,并从键盘输入:name=Lilinum=1001回车后,name的值为A)LiliB)name=LiliC)Lilinum=D)name=Lilinum=1001、【解析】考点:scanf(“格式控制部分”,地址项列表);函数中的格式控制部分有两种字符——普通字符(须原样输入);格式说明符(以%开头)。17、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A)必须是逻辑值B)必须是整数值C)必须是正数D)可以是任意合法的数值【解析】C语言中的“if(表达式)”、“while(表达式)”、“do-while(表达式)”这几种语句中的表达式可以是任意复合语法的数值,该数值非零为真,数值等于零为假。程序运行时,系统只判断表达式的真与假。18、有以下程序#includestdio.hmain(){intx=011;//011是八进制,相当于十进制的9printf(%d\n,++x);//表达式++x的值是10,并且以十进制格式打印}程序运行后的输出结果是A)12B)11C)10D)9【解析】考点1:八进制转十进制;考点2:printf()函数打印表达式“++x”的值。19、有以下程序#includestdio.hmain(){ints;scanf(%d,&s);while(s0)循环过程如下:(1)s=1,s0真switch(1)执行case1分支,打印s+5的值6执行case2分支,打印s+4的值5结束switch语句输入数值2,s=2(2)s=2,s0真switch(2)执行case2分支,打印s+4的值6结束switch语句输入数值3,s=3(3)s=3,s0真switch(3)执行case3分支,打印s+3的值6执行default分支,打印s+1的值4结束switch语句输入数值4,s=4{switch(s){case1:printf(%d,s+5);//此处缺省breakcase2:printf(%d,s+4);break;case3:printf(%d,s+3);//此处缺省breakdefault:printf(%d,s+1);break;}scanf(%d,&s);}}运行时,若输入123450回车,则输出结果是A)6566456B)66656C)66666D)6666656【解析】考点1:循环嵌套选择结构;考点2:case分支后缺省break语句。20、有以下程序段inti,n;for(i=0;i8;i++){n=rand()%5;//rand()函数是产生一个随机的整数,“rand()%5”的值是不大于5的随机整数switch(n){case1:case3:printf(%d\n,n);break;//break的作用是跳出switch语句,注意不会跳出循环结构case2:case4:printf(%d\n,n);continue;//continue的作用是跳过后面的case0分支,进入下一次循环case0:exit(0);//如果执行了exit(0);函数则强制退出该程序}printf(%d\n,n);}以下关于程序段执行情况的叙述,正确的是A)for循环语句固定执行8次B)当产生的随机数n为4时结束循环操作C)当产生的随机数n为1和2时不做任何操作D)当产生的随机数n为0时结束程序运行【解析】考点1:循环嵌套选择结构;考点2:case分支后缺省语句;考点3:产生随机数的库函数rand();考点4:强制退出程序库函数exit(0)。选项A错在:本题的for循环结束有两种可能,一是执行了8次循环后正常结束;二是执行了exit(0)提前结束。选项B错在:当产生的随机数n为4时,会执行continue语句,进而跳过后面的case0分支不执行。选项C错在:当产生的随机数n为1时,是执行case3分支;而当n为2时,是执行case4分支。21、有以下程序#includestdio.hmain(){chars[]=012xy\08s34f4w2;//字符串常量是以第一个‘\0’作为结束标志inti,n=0;for(i=0;s[i]!=0;i++)//for循环执行5次,直到字符串结束s[5]=0if(s[i]='0'&&s[i]='9')n++;//变量n是统计字符串中数字字符的个数printf(%d\n,n);}程序运行后的输出结果是A)0B)3C)7D)8【解析】考点:判断数字字符的表达式s[i]='0'&&s[i]='9'类似地判断小写字母的表达式s[i]='a'&&s[i]='z'判断大写字母的表达式s[i]='A'&&s[i]='Z'22、若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++)printf(*****\n);下面关于语句执行情况的叙述中正确的是A)循环体执行两次B)循环体执行一次C)循环体一次也不执行D)构成无限循环【解析】考点:for(表达式1;表达式2;表达式3)表达式1也称为初始表达式,用来为变量赋初值。本题的表达式1“i=0,k=-1”是一个逗号表达式;表达式2也称为终止表达式,用来控制循环何时结束。本题的表达式2“k=1”的值为1,即循环条件恒为真。表达式3也称为循环表达式,在每次循环体之后执行。23、有以下程序#includestdio.hmain(){charb,c;inti;b='a';c='A';for(i=0;i6;i++)//for循环的功能是,当i为奇数时执行putchar(i+b);当i为偶数时执行putchar(i+c);{if(i%2)putchar(i+b);elseputchar(i+c);}printf(\n);}程序运行后的输出结果是A)ABCDEFB)AbCdEfC)aBcDeFD)abcdef【解析】考点1:if语句的表达式“i%2”也等价于“i%2!=0”,即当i为奇数时条件为真;考点2:putchar()函数的功能是输出单个字符。24、设有定义:doublex[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是A)scanf(%f,&x[6]);B)scanf(%lf,*(x+6));C)scanf(%lf,p+6);D)scanf(%lf,p[6]);【解析】考点1:scanf()函数输入双精度数时必须使用“%lf”,不能使用“%f”;考点2:利用指针引用数组元素地址的两种方法——下标法(如&x[i]或&p[i])、指针法(如x+i或p+i)。选项A错在:使用了“%f”,应修改为scanf(%lf,&x[6]);选项B错在:*(x+6)是元素值,此时需要地址项,应修改为scanf(%lf,x+6);选项D错在:p[6]是元素值,此时需要地址项,应修改为scanf(%lf,p+6);25、有以下程序(说明:字母A的ASCII码值是65)#includestdio.hvoidfun(char*s){while(*s)//该表达式是判断字符串是否结束{if(*s%2)printf(%c,*s);//if语句的功能是判断字符的ASCII码是否是奇数,如果是就打印该字符s++;//s指针后移}}main(){chara[]=BYTE;fun(a);printf(\n);}程序运行后的输出结果是循环过程如下:(1)i=0,执行else分支,打印A(2)i=1,执行if分支,打印b(3)i=2,执行else分支,打印C(4)i=3,执行if分支,打印d(5)i=4,执行else分支,打印E(6)i=5,执行if分支,打印f(7)i=6,结束循环循环过程如下:(1)*s是'B',其ASCII码值是66(偶数),不打印该字符s后移指向'Y'(2)*s是'Y',其ASCII码值是89(奇数),打印该字符s后移指向'T'(3)*
本文标题:2011年3月真题(解析)
链接地址:https://www.777doc.com/doc-3048555 .html