5 b 2009年全国计算机等级考试9月笔试试题详细解答过程.doc_第1页
5 b 2009年全国计算机等级考试9月笔试试题详细解答过程.doc_第2页
5 b 2009年全国计算机等级考试9月笔试试题详细解答过程.doc_第3页
5 b 2009年全国计算机等级考试9月笔试试题详细解答过程.doc_第4页
5 b 2009年全国计算机等级考试9月笔试试题详细解答过程.doc_第5页
全文预览已结束

下载本文档

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

文档简介

2009年9月全国计算机等级考试二级笔试试卷C语言程序设计答案和解析一、 选择题(1)【答案】C【解析】对于一个非空的数据结构,如果同时满足下列两个条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件,即为线性结构(如线性表、栈、队列和链表),而二叉树的结点可能存在两个后件,所以是非线性结构。(2)【答案】B【解析】在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照“先进后出”或“后进先出”的原则组织数据的。(3)【答案】D【解析】所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列结构中,当存储空间的最后一个位置己被使用而再要进行入队运算时,只要存储空间的第一个位置空闲,便可将元素加入到第一个位置,即将存储空间的第一个位置作为队尾。如果队头指针大于队尾指针说明队列已经循环存放数据了,如果队头指针小于队尾指针说明没有进行循环存放。(4)【答案】A【解析】算法的空间复杂度是指执行算法所需要的内存空间,包括算法程序所占空间,输入的初始数据所占空间和执行过程中所需要的额外空间。(5)【答案】B【解析】耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。(6)【答案】A【解析】结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句等。(7)【答案】C【解析】程序流程图是由起始框、判别框、执行框和结束框等组成。(8)【答案】B【解析】数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。(9)【答案】C【解析】在E-R图中,实体联系用菱形表示,矩形表示实体集,椭圆表示属性。(10)【答案】D 【解析】T由属于关系R以及关系S的元组组成,简单来说,就是S和R的元组之和,是并运算。(11)【答案】D 【解析】程序设计包括五部分:(1)确定数据结构;(2)确定算法;(3)编码;(4)在计算机上调试程序;(5)整理并写出文档资料。(12)【答案】C 【解析】在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。由用户根据需要定义的标识符称为用户标识符,又称自定义标识符。如果用户标识符与关键字相同,则在对程序进行编译时系统将给出出错信息。(13)【答案】A 【解析】case是关键字,不可以作为标识符。(14)【答案】B 【解析】(int)(double)9/2)的值为4,9%2的值为1,则整个表达式的值为3。(15)【答案】B 【解析】x-=x+x,即x=x-(x+x),初值x=10,将其代入运算最终x=-10。(16)【答案】D 【解析】执行第一个输出语句时,b的值为1,故执行第2个输出语句时a=21=2。(17)【答案】C 【解析】if(ab) c=a;a=b;b=c;的执行结果为a=2,b=3,c=3。其他三个选项a、b、c的值均为2、1、1。(18)【答案】A 【解析】k=1时,执行default和case 2语句,执行case 2语句时,遇到break语句跳出switch循环(此时c=2),继续判断for条件而不是执行printf(%dn,c)语句(因为此输出语句是for循环之外的语句);k=2时,执行case 2语句,这时c=3并跳出switch循环,继续判断for条件,此时条件不满足跳出for循环执行printf(%dn,c),输出结果为3。(19)【答案】A 【解析】k=ab?(bc? 1:0):0的功能是:若ab且bc,则k=1,否则k=0。(20)【答案】B 【解析】字符串s中只有x、y符合if的条件表达式,故n的值为2。(21)【答案】D 【解析】n=2,k=0时,判断while条件,第一次判断while条件不成立,不执行空语句,而是退出循环,执行printf(%d %dn,k,n);,但是经过条件判断后, k的值自加变为1,而n的值没有变,因为在逻辑与运算中,只要第一个表达式不成立,不再计算第二个表达式。(22)【答案】C 【解析】关键字char用来定义字符变量只能接收单引号括起来的单个字符,aa不合法。(23)【答案】A 【解析】c1=A+8-4=A+4=E;c2=A+8-5=A+3=D,D对应的ASCII码值为68。c1按字符格式输出为E,c2按整型格式输出为68。(24)【答案】C 【解析】在fun函数中,p=d+;即p=d,d=d+1,输出p的值为2;主函数中调用fun(),主函数中a的值并没有改变,故printf(%dn,a)输出结果为1。(25)【答案】D 【解析】赋值语句max=MIN放错了位置,它应放在int findmax()函数之前或for循环之上。(26)【答案】B 【解析】定义了整型变量m并赋值为1,整型变量n赋值为2;并定义了整型指针变量p指向m,q指向n;接着交换p和q指针,让p指向n,q指向m,所以*p中是n的值2,*q中是m的值1,这只是改变了指针的指向,并没有改变变量m和n中的内容,所以输出值是1、2、2、1。(27)【答案】A 【解析】a是一个二维数组,若想用指针指向它,则需要用二级指针。(28)【答案】C 【解析】*p=str1= one*Dream,strlen是计算字符串长度的函数,不包括结束符。(29)【答案】C 【解析】i=0时:i%2=0,执行第一个switch的case 0,a0%2=0,执行第2个switch的case 0,a0=a0+1=3;i=1时:i%2=1,执行第一个switch的case 1,a1=0;i=2时:i%2=0,执行第一个switch的case 0,a2%2=1,执行第2个switch的case 1,a2=a2-1=4;i=3时:i%2=1,执行第一个switch的case 1,a3=0;i=4时,跳出for循环。输出数组a中每个元素的最后值。(30)【答案】B 【解析】strlen是计算字符串长度的函数,返回字符串长度,不包括结束符;sizeof返回的是字符串所占内存的字节数。字符数组a共分配了10个字节,使用了5个字节(包括结束符)。(31)【答案】D 【解析】字符数组不仅可以存放字符串,还可以存放字符的ASCII码值。(32)【答案】A 【解析】此题是陷阱题,在函数中:while的条件是中用的是=(赋值号)而不是=(等号),而且通过循环语句可以看出指针a和b是同时移动的,所以就是将a所指字符串的每个字符赋给b所指的空间,即b中存储a的内容。(33)【答案】A 【解析】函数指针的定义形式是:数据类型标识符(*指针变量名)();。void(* pf)()定义了一个没有返回值的函数指针pf。在给函数指针变量赋值时,只需要给出函数名而不必给出参数。所以给pf赋值时,只把函数名fun赋给pf即可。(34)【答案】C 【解析】本题主要考查静态局部变量。静态局部变量保存在全局数据区,每次的值保持到下一次调用,直到下次被赋新值。第一次调用f(a)后,将主函数中的变量a的值3传递给函数f中的n,f中定义了一个静态局部变量a初始值为1,执行n+=a+;后,n=n+a+=3+1=4,然后a的值为2,将n的值返回到主函数中赋给s,此时s为4;第二次再调用f(a),静态局部变量a中保留上一次调用后的结果为2,所以再执行n+=a+;后n=n+a+=3+2=5,然后a变为3;本次返回的值为5,所以最后结果是4+5=9。(35)【答案】A 【解析】本题主要考查宏的使用。f(a+1)=a+1a+1a+1=3a+1,所以s=10;f(a+1)=(a+1)(a+1)(a+1),所以t=444=64。(36)【答案】B 【解析】定义结构体类型的变量的方法有4种。其中A项是先说明结构体类型,再单独定义变量;C项是紧跟在结构体类型说明之后进行变量定义;D项是在说明一个无名结构体类型的同时,直接进行定义。这三种方法都是正确的,只有B选项是错误的。(37)【答案】A 【解析】选项A是先定义一个字符数组后,再使用指针变量指向该数组。选项B和D中字符指针没有被赋值,所以指向一个不确定的区域,这个区域可能存放有用的指令或数据,在这个不确定的区域重新存放字符串,可以会发生无法预知的错误,选项C中getchar()函数输入一个字符给字符型变量,而不是字符指针。所以A正确。(38)【答案】D 【解析】本题考查结构体变量的赋值。通过f(a)函数,将1001、ZhangDa、1098.0一一对应赋值给函数f的形参,在函数中将a的值改为1002,b的值改为ChangRong,c的值改为1202.0,并将t返回赋给a,所以输出结果为1002,ChangRong,1202.0。(39)【答案】C 【解析】本题考查右移运算符的赋值。每右移一位相当于移位对象除以2。(40)【答案】C 【解析】C语言中根据数据的组织形式。分为二进制文件和ASCII码文本文件。一个C文件是一个字节序列或者二进制序列。二、 填空题(1)【答案】【1】14【解析】二叉树具有如下性质:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。度为2的个数为5,所以度为0的个数为6。二叉树的总结点=度为1的个数+度为2的个数+叶子结点个数。所以总结点为14。(2)【答案】【2】逻辑条件【解析】程序流程图中的菱形框代表分支结构或循环结构的条件判断(或逻辑条件),应该具有两个分支出口,分别表示条件满足和条件不满足的时候程序的流向。(3)【答案】【3】需求分析【解析】本题考查需求分析的过程。需求分析阶段的工作,可以概括为需求获取、需求分析、编写需求规格说明书和需求评审4个方面。其中,需求规格说明书是需求分析阶段的成果,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。(4)【答案】【4】多对多【解析】本题考查实体集之间的联系。实体集之间的联系有3种:一对一、一对多和多对多。因为一个学生可以选多门课程,而一门课程可以被多个学生选择,所以“学生”与“可选课程”两个实体集之间的联系一般是“多对多”联系。(5)【答案】【5】身份证号【解析】主关键字是被挑选出来,作表的行的惟一标识的候选关键字,主关键字要求值不重复,身份证号代表一个人,即不可能有相同的身份证号代表多个人。(6)【答案】【6】5【解析】在自增运算中,当+在变量前时,先将变量值加1再引用值,而+在变量之后时,先引用值再将变量值加1。(7)【答案】【7】1【解析】在进行数据运算时,小括号内的表达式优先计算,所以先执行x/5,x是double类型,所以x/5的运算结果必定是double类型,又因为使用(int)将x/5的结果强转为整型,所以(int)(x/5)的值为3,3%2结果为1。(8)【答案】【8】10【解析】“” 运算符结合从左至右,所以0x20实际是:(0x)20 ;0x的结果为真,即1,120的结果也为真,所以最终结果为真,即值为1;0x1的结果就是1;“&”运算要求表达式都为真时结果才为真,即值为1,否则值为0。x1条件成立,继续执行while循环体,此时b=b/2结果为1;a+=b结果为5,判断while条件b1条件不成立,跳出循环,执行printf(%dn,a)输出a的值为5。(10)【答案】【10】01123 【解析】程序执行到printf(%d%d,f1,f2)语句,输出结果为01,遇到for循环,初值是3,3小于5,执行循环体,f=f1+f2,即f的结果为1,程序执行printf(%d,f)语句,输出结果为1,f1=f2表示将f2的值赋给f1,即f1的值为1,f2=f表示将f的值赋给f2,即f2的值为1,程序遇到,继续判断for条件,此时i的值为4小于5,执行循环体,f=f1+f2,即f的结果为2,程序执行printf(%d,f)语句,输出结果为2,f1=f2表示将f2的值赋给f1,即f1的值为1,f2=f表示将f的值赋给f2,即f2的值为2,程序遇到,继续判断for条件,此时i的值为5等于5,执行过程如上,所以最后一次输出的值为3。此程序是求斐波那契数列。(11)【答案】【11】3025 【解析】程序运行从main函数开始,当执行到fun(c)时,调用fun函数,形参的值为20,a+=b的结果为30,执行printf(%d,a)语句,输出结果为30,遇到返回函数调用处,此时函数中所有变量都会释放,执行a+=c语句,a的值为25,执行printf(%dn,a)语句,输出结果为25。(12)【答案】【12】&p.ID 【解析】要访问结构体中的成员,可以通过以下3种形式:(1) 结构体变量名.成员名(2) 结构体指针变量-成员名(3) (*结构体指针变量).成员名使用scanf函数输入数据时,使用&是获得变量的内存地址,向内存地址中输入数据。(13)【答案】【13】How are you? How 【解析】在printf语句中,输出字符数组名会将整个字符串输出,通过键盘输入字符串时,scanf是以空格,制表符,换行符作为分隔符, 忽略输入字符串中的多余信息,也是受空白字符的限制。所以scanf只接收了How。(14)【答案】【14】16 【解析】形参的改变

温馨提示

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

评论

0/150

提交评论