一、选择题(1)~(10)每小题2分,(11)-(50)每小题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下面叙述正确的是________。A)算法的执行效率与数据的存储结构无关B)算法的空间复杂度是指算法程序中指令(或语句)的条数C)算法的有穷性是指算法必须能在执行有限个步骤之后终止D)算法的时间复杂度是指执行算法程序所需要的时间答案:C评析:算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中提供的数据类型及其算法。数据结构和算法是计算机科学的两个重要支柱。(2)以下数据结构属于非线性数据结构的________。A)队列B)线性表C)二叉树D)栈答案:C评析:线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。栈又称后进先出表(LastInFirstOut);队列又称先进先出表(First:InFirstOut)。二叉树的数据结构是树型结构,结构中数据元素之间存在着一对多的关系,因此它是一种非线性数据结构。(3)在一棵二叉树上第8层的结点数最多是________。A)8B)16C)128D)256答案:C评析:根据二叉树的性质:二叉树第i(i≥1)层上至多有2i-1个结点。得到第8层的结点数最多是128。(4)下面描述中,不符合结构化程序设计风格的是________。A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B)自顶向下C)注重提高程序的执行效率D)限制使用goto语句答案:C评析:结构化程序设计方法的四条原则是:1.自项向下;2.逐步求精;3.模块化;4.限制使用goto语句。(5)下面概念中,不属于面向对象方法的是________。A)对象、消息B)继承、多态C)类、封装D)过程调用答案:D评析:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是________。A)可行性分析B)需求分析C)详细设计D)程序编码答案:B评析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。(7)软件生命周期中所花费用最多的阶段是________。A)详细设计B)软件编码C)软件测试D)软件维护答案:D评析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段。(8)数据库系统的核心是________。A)数据模型B)DBMSC)软件工具D)数据库答案:B评析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。(9)下列叙述中正确的________。A)数据处理是将信息转化为数据的过程B)数据库设计是指设计数据库管理系统C)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字D)关系中的每列称为元组,一个元组就是一个字段答案:C评析:数据处理是指将数据转换成信息的过程,故选项A叙述错误;设计数据库的目的实质上是设计出满足实际应用需求的实际关系模型;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故D选项叙述错误。(10)下列模式中,________是用户模式。A)内模式B)外模式C)概念模式D)逻辑模式答案:B评析:数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,指数据库用户所看到的数据结构,是用户看到的数据视图。模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。内模式是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。(11)C语言规定,程序中各函数之间________。A)既允许直接递归调用也允许间接递归调用B)不允许直接递归调用也不允许间接递归调用C)允许直接递归调用不允许间接递归调用D)不允许直接递归调用允许间接递归调用答案:A评析:c语言规定,程序中各函数之间既允许直接递归调用也允许间接递归调用。(12)在使用程序流程图来表示算法时,菱形用来表示________。A)输入与输出B)子程序C)判断分支D)循环边界答案:C评析:美国国家标准化协会ANSI规定了一些常用的流程图符号,其中椭圆框表示起止框,方框表示处理框,菱形框表示判断分支,箭头表示流程线。(13)C语言中下列叙述正确的是________。A)不能使用do…while语句构成的循环B)do…while语句构成的循环,必须用break语句才能退出C)do…while语句构成的循环,当while语句中的表达式值为非零时结束循环D)do…while语句构成的循环,当while语句中的表达式值为零时结束循环答案:D评析:选项A是错误的,c语言支持d0…while语句;选项B是错误的,do...while构成的循环,当while语句中的表达式值为零时结束循环,而不是非零;选项c也是错误的。(14)以下选项中属于C语言的数据类型是________。A)复数型B)逻辑型C)双精度型D)集合型答案:C评析:c语言的数据类型分为基本类型、构造类型、指针类型、空类型四大类。其中,基本类型分为整型、字符型、实型三类。实型又称浮点型,包括单精度型和双精度型两种类型。(15)在C语言中,不正确的int类型的常数是________。A)32768B)0C)037D)0xAF答案:A评析:c语言中int类型的常数的范围是:-32768~32767。c整常数可用三种形式表示:十进制整数,八进制整数,十六进制整数。选项A超出范围,不正确。(16)以下程序输出的结果是________。main(){inta=65535;printf(“%d%u”,a,a);}A)-1-1B)6553565535C)-165535D)65535–l答案:C评析:printf函数中不同类型的数据用不同的格式字符,其中%d是按整型数据的实际长度输出十进制整数。变量a=65535以%d格式输出时溢出输出值为该数的补码值,即.1;%u用来输出unsigned型数据,无符号整型变量的数值范围为0~65535,所以变量a=65535以%u格式输出的值为65535。(17)下列描述中不正确的是________。A)字符型数组中可以存放字符串B)可以对字符型数组进行整体输入、输出C)可以对整型数组进行整体输入、输出D)不能在赋值语句中通过赋值运算符”=”对字符型数组进行整体赋值答案:C评析:c语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、输出可以将整个字符串一次输入或输出。所以,选项c的说法是不正确的。(18)以下程序的输出结果是________。main(){inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(I=0;i4;i+=2)printf(”%d”,p[I]);}A)52B)5lC)53D)97答案:C评析:题中*p=&x[1][1];是指将数组x的数组元素x[1][1]的地址赋值给指针变量p,使p指向x[11[1]这个数组元素,那么p[0]即为指针变量p当前所指向的数组元素x[1][1]的值。(19)下列可用于C语言标识符的一组是________。A)voidWORDdefineB)a6$sysForC)2asizeofabcD)Intdefinesizeof答案:D评析:c语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。注意,大写字母和小写字母被认为是两个不同的字符。C语言中的关键字不能用作标识符。(20)以下程序的运行结果是__________。#include“stdio.H”main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12};int*p=a+5,*q=NULL;*q=*(p十5);printf(”%d%d、n”,‘p,*q);}A)运行后报错B)66C)612D)55答案:A评析:题目中没有给q分配存储单元,只是简单的给它赋了一个值,所以程序的运行结果是6llNULLpointerassignment,也就是运行后报错。(21)以下说法中正确的是_________。A)C语言程序总是从第一个函数开始执行B)在C语言程序中,要调用函数必须在main()函数中定义C)c语言程序总是从main()函数开始执行D)c语言程序中的main()函数必须放在程序的开始部分答案:C评析:c语言的程序是由主函数main()开始运行,由主函数来调用其他函数,函数必须是并列的,定义后使用,不能在一个函数中定义其他函数,main()函数不一定要放在程序的开始部分,故选c。(22)有如下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf(”%3.0f\n”,fun((int)fun(a+c,b),(a-C)));}程序运行后的输出结果为__________。A)编译出错B)9C)21D)9.0答案:B评析:本题中先执行(int)fun(a+c,b)函数的调用,值为整型数值15;然后再执行fun(15,(a-e))函数调用,值为单精度实型数值9.000000。输出为%3.0f,即有效数长度为3,没有小数位数,所以最后结果为9。(23)能正确表示a和b同时为正或同时为负的逻辑表达式是_________。A)(a=‖b=0)&&(a=0&&b=O)&&(a0&&bO)C)(a+b0)&&(a+b0答案:D评析:选项A中,表达式表示的是a,b为异号;选项B中,表达式表示的是0,因为没有满足条件的值;选项c中,表达式表示的是0,因为没有满足条件的值;选项D表示的是a和b为同号。(24)若己定义:inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[l]地址的表达式是__________。A)p+lB)a+lC)a++D)++p答案:C评析:数组名是指针常量,是个固定的指针,不能对数组名赋予一个新的地址值,也不能使这个指针常量“移动”,指向数组的其它元素。(25)以下程序的输出结果是__________。main(){inta==-1,b=1,k;if((++a0)&&!(b–=0))printf(”%d%d\n”,a,b);elseprintf(”%d%d\n”,b,a);}A)-1lB)0lC)10D)00答案:C评析:逻辑运算符的优先次序如下:!(非)→&&(与)→‖(或),但本题需特别、注意的是短路的概念。(26)下面程序的输出结果是__________。#defineP1(x)printf(x)main(){chard[]。”p”;Pl(d);P1(”d”);}A)pdB)d”d”C)”p”dD)”p””d”答案:A评析:带参数的宏定义的一般形式为:#define宏名(参数表)字符串程序中的Pl(d);经宏置换后为printf(d);,所以输出字符串p;程序中的Pl(“d”);经宏置换后printf(“d”)。(27)以下选项中,能定义s为合法的结构体变量的是__________。A)typedefstructabc{doublea;charb[10];}s;B)struct{doublea;charb[10];}s;C)structABC{doublea;charb[10];}ABCs:D)typedefABC{doublea;charb[10];}ABCs:答案:B评析:定义一个结构体类