一、选择题((1)~(10)每小题2分,(11)~(50)每小题1分,共60分)
下列各题A)、B)、c)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)算法的空间复杂度是指________。
A)算法程序的长度 B)算法程序中的指令条数
c)算法程序所占的存储空间 D)算法执行过程中所需要的存储空间
答案:D
评析:一个算法的空间复杂度,一般是指执行这个算法所需的内存空间。
一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
(2)下列关于栈的叙述中正确的是________。
A)在栈中只能插入数据 B)在栈中只能删除数据
C)栈是先进先出的线性表 D)栈是先进后出的线性表
答案:D
评析:栈是限定在一端进行插入与删除的线性表。
栈是按照"先进后出"的或"后进先出"的原则组织数据的,因此,栈也被称为"先进后出"表或"后进先出"表。
(3)在深度为5的满二叉树中,叶子结点的个数为________。
A)32 B)31 C)16 D)15
答案:C
评析:所谓满二叉树是指除最后一层外,每层上的所有结点都有两个子结点。也就是说,在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第K层上有2K-1个结点,且深度为m的满二叉树有2m个结点。
在满二叉树中,最后一层的结点个数就是叶子结点的个数,本题中深度为5,故叶子结点数为25-1=24=16。
(4)对建立良好的程序设计风格,下面描述正确的是________。
A)程序应简单、清晰、可读性好 B)符号名的命名要符合语法
c)充分考虑程序的执行效率 D)程序的注释可有可无
答案:A
评析:要形成良好的程序设计风格,主要应注重和考虑下述一些因素:符号名的命名应具有一定的实际含义,以便于对程序功能的理解;正确的注释能够帮助读者理解程序;程序编写应优先考虑清晰性,除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。
(5)下面对对象概念描述错误的是________。
A)任何对象都必须有继承性 B)对象是属性和方法的封装体
C)对象间的通讯靠消息传递 D)操作是对象的动态性属性
答案:A
评析:对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。
(6)下面不属于软件工程的3个要素的是________。
A)512具 B)过程 C)方法 D)环境
答案:D
评析:软件工程包括3个要素,即方法、工具和过程。
(7)程序流程图(PFD)中的箭头代表的是________。
A)数据流 B)控制流 C)调用关系 D)组成关系
答案:B
评析:程序流程图(PFD)是一种传统的、应用广泛的软件过程设计表示工具,通常也称为程序框图,其箭头代表的是控制流。
(8)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶 段。其中数据独立性最高的阶段是________。
A)数据库系统 B)文件系统 c)人工管理 D)数据项管理
答案:A
评析:在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是数据库系统。
(9)用树形结构来表示实体之间联系的模型称为________。
A)关系模型 B)层次模型 C)网状模型 D)数据模型
答案:B
评析:层次模型是最早发展出来的数据库模型。它的基本结构是树形结构,这种结构方式在现实世界中很普遍,如家族结构、行政组织机构,它们自顶向下、层次分明。
(10)关系数据库管理系统能实现的专门关系运算包括________。
A)排序、索引、统计 B)选择、投影、连接
C)关联、更新、排序 D)显示、打印、制表
答案:B
评析:关系数据库管理系统能实现的专门关系运算,包括选择运算、投影运算、连接运算。
(11)下列语句中符合C语言语法的赋值语句是________。
A)a--7+b+c--a+7 B)a=a+7
C)a=7+b,b++,a+7; D)a=7+b,c=a十7;
答案:D
评析:由于赋值语句是由赋值表达式加分号构成,所以选项A、B均不是合法的赋值语句;选项c中,存在两种运算符:逗号运算符和赋值运算符,其中赋值运算符的优先级高,选项c也不是。
(12)下面程序
main()
{ int y=9;
for(;y>O;y--i){
if (y%3==O)
{ printf("%d",--y);
continuei
}
}
}
的输出是________。
A)741 B)852 C)963 D)875421
答案:B
评析:"%"是求余运算符,所以if判断语句中实际是指出只有当y可以被3整除时方可以继续;--y是先进行y的自减运算,再使用y值。所以,最后的打印结果应当为"852"。
(13)下列四个叙述中,错误的是________。
A)C语言中的关键字必须小写
B)c语言中的标识符必须全部由字母组成
C)c语言不提供输入输出语句
D)C语言中的注释行可以出现在程序的任何位置
答案:B
评析:c语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。
(14)下面程序
main()
{
int a=-l,b=4,k;
k=(a++<=0)&&(!(b一一<=O));
printf("%d%d%d\n",k,a,b);
}
的输出是________。
A)0 0 3 B)0 1 2 C)1 0 3 D)1 1 2
答案:C
评析:a++是先使用a值再将a的值加1,b--是先使用b的值再将b的值减1,所以题中的逻辑运算表达式的值应当为真,即为1,而经过运算后,a和b的值已经分别变成0和3了。
(15)以下叙述中正确的是________。
A)预处理是指完成宏替换和文件包含中指定文件的调用
B)预处理也是C语句
C)C源程序中,凡是行首以挣标识的控制行都是预处理指令
D)预处理就是完成c编译程序对c源程序的第一遍扫描,为编译的词法分析和语法分析作准备
答案:C
评析:预处理功能主要有以下三种:宏定义、文件包含和条件编译,所以A不正确。预处理不是c语句,所以B不正确。预处理命令是由ANSI c统一规定的,编译程序不能识别它们,D也不正确。
(16)下面的程序片段
y=-l;
If(x!=0)
If(x>0) y=1;else y=0;
所表示的数学函数关系是_________.
-1(x<O) l (x<O)
A)y= 0 (x=0) B)y= -1(x=0)
1 (x>0) 0 (x>0)
0 (x<0) -1 (x<0)
C)y= -1(x=O) D)y= l (x=O)
1 (x>O) 0 (x>O)
答案:C
评析:本题的考查点是根据程序写出数学函数关系。
题中的两个判断语句实际上指出了y取值的条件,即是当x大于零时y取l;当x小于零时y取0;当x等于零时y值不变,为-1。
(17)下面的程序
main()
{ int x=3,y=O,z=O;
if(x=y+z)printf("* * * *");
else printf("####");
}
_________。
A)有语法错误不能通过编译
B)输出* * * *。
c)可以通过编译,但是不能通过连接,因而不能运行
D)输出####
答案:D
评析:本题的考查点是运算符在表达式中的处理原则。
本题中把y+z的值赋给x,由于y和z都等于0,所以x的值也为0,表达式值为false,输出撑撑撑撑。if语句中if后面的表达式一般为逻辑或关系表达式,但也可以是任意的数值类型。
(18)在c语言中,合法的长整型常数是________。
A)OL B)4962710 C)04312765 D)0xa34b7fe
答案:A
评析:在一个整常量后面加一个字母l或L,则认为是long int型常量。
(19)下面函数
int funl(char*x)
{ char*y=x;
while(*y++);
return(y-x-1);
}
的功能是__________。
A)求字符串的长度 B)比较两个字符串的大小
C)将字符串x复制到字符串y D)将字符串x连接到字符串y后面
答案:A
评折:本题的考查点是while()循环语句。
本题首先要注意的是对*y++的运算,由于++和*为同一优先级别,且结合方向为自右向左,因此它相当于*(y++)。由于++在y的右侧,是"后加",因此先对y的原值进行*运算,然后使y的值改变。
(20)设int i=2j=l,k=3,则表达式i&&(i+j)&k︱i+j的值是________。
A)O B)2 C)l D)3
答案:C
评析:本题表达式中优先级顺序从高到低为括号、+、&、︱、&&。
(21)已知字母A的ASCII码为十进制的65,下面程序
main()
{ char chl,ch2;
chl='A'+'5'-'3':
ch2='A'+'6'-'3':
printf("%d,%Cn",chl,ch2);
}
的输出_________。
A)67,D B)B,C C)C,D D)不确定的值
答案:A
评析:由于字符"5"和"3"的ASCII码相差为2,所以ch1过运算后的值应为65+2=67;同理,ch2经过运算后的值应为65+3=68,即是字符"D"。
(22)以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a,b,d=24l:
a=d/l00%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
A)6,1 B)2,1 C)6,0 D)2,0
答案:B
评析:第一个表达式中,运算的方向是从左至右,所以a的值为2;第二个表达式中,等式右边是一个逻辑表达式,由于结果为真,所以表达式的值为l,即b为1。
(23)下列选项中非法的表达式是________。
A)0<=x<100 B)I=j==0 C)(char)(65+3) D)x-t-l=x+l
答案:D
评析:值表达式的左侧不能为常量或表达式,所以D是非法的表达式。
(24)以下程序的输出结果是________。
#include<stdio.h>
main()
{
print刖%~n",NULL);
}
A)不确定的(因变量无定义) B)0
C)-l D)l
答案:B
评析:NULL在c编译器中是一个值为0的常量,它的定义在头文件"stdio.h"中,本题的程序在一开始就包含了这个头文件',所以,在打印的时候,将打印出0。
(25)在下面的语句中,赋值语句错误的是________。
A)a=(b=(c=2,d=3)); B)i++:
C)a--a/b=2; D)a=a<a+1:
答案:C
评析:c语言中的赋值号"="是一个运算符;②赋值语句是由赋值表达式加上一个分号构成。赋值表达式的左侧不能为常量或表达式。