一、选择题(1)~(10)每小题2分,(11)-(50)每小题1分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)算法能正确地实现预定功能的特性称为算法的__________。
A)确定性 B)易读性 C)健壮性 D)高效性
答案:A
评析:算法的确定性是指算法中的每一个步骤都必须是有明确定义的,不允许有摸棱两可的解释,也不允许有多义性,即每个步骤都是预先定义好的。
(2)数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为__________。
A)存储结构 B)逻辑结构
C)顺序存储结构 D)链式存储结构
答案:C
评析:如果数据之间在逻辑上有相邻关系时,能够在物理位置上体现出来,则这种存储结构称为顺序存储结构。如果数据之间的逻辑相邻关系在存储时是靠存储地址的指针来体现的,则称为链式存储结构。
(3)从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放 在已排序序列的合适位置,该排序方法称为__________。
A)希尔排序 B)冒泡排序 C)插入排序 D)选择排序
答案:C
评析:最基本的排序方法有三大类,即选择排序、交换排序和插入排序。
(4)对线性表进行折半查找时,要求线性表必须__________。
A)以顺序方式存储
B)以链接方式存储
C)以顺序方式存储,且结点按关键字有序排列
D)以链接方式存储,且结点按关键字有序排列
答案:C
评析:折半查找算法要求被查找的对象必须采用顺序的存储结构,并且关键字有序排列。
(5)链表不具备的特点是__________。
A)可随机访问任意一个结点
B)插入和删除不需要移动任何元素
C)不必事先估计存储空间
D)所需空间与其长度成正比
答案:A
评析:顺序表可以随机访问任意一个结点,而链表必须从第一个数据结点出发,逐一查找每个结点。
(6)下列描述中正确的是__________。
A)软件是物理产品
B)程序就是软件
C)软件工程由方法、工具和过程三部分组成
D)软件工程是一个机械工程
答案:B
评析:软件是与计算机系统操作有关的程序、规程、规则及任何与之有关的文档和数据。计算机软件是一种逻辑产品,而不是物理产品。软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。软件工具可以自动或半自动的生成软件文档。软件工程过程是管理者控制软件开发各环节的基本方法。
(7)软件测试是保证软件质量最关键的步骤,下列关于白盒测试技术描述中不正确的是_______。
A)保证模块中每一独立的路径至少执行一次
B)保证所有判断的每一分支至少执行一次
C)保证每一循环都在边界条件和一般条件下最多执行一次
D)验证所有内部数据结构的有效性
答案:C
评析:软件测试技术中,白盒测试技术和黑盒测试技术是两种基本的软件测试手段。白盒测试技术有四个原则:保证模块中每一个独立的路径至少执行一次;保证所有判断的每一分支至少执行一次;保证每一循环都在边界条件和一般条件下至少执行一次;验证所有内部数据结构的有效性。
(8)客观世界中任何一个事物都可以看成一个对象。但是从计算机的角度看,一个对象应 该包含两个要素:一个是_______,另一个是需要进行的操作。
A)语句 B)命令 C)算法 D)数据
答案:D
评析:在面向对象的程序设计中,从计算机的角度看,一个对象应该包含两个元素:数据,相当于家庭中的成员;操作,相当于家庭成员的活动。对象就是一个包含数据与这些数据有关的操作的集合。
(9)下列概念中,不是数据库管理系统必须提供的数据控制功能的是_______。
A)安全性 B)完整性 C)移植性 D)一致性
答案:C
评析:数据库管理系统提供的数据控制功能是指在数据库建立、运行和维护时,由DBMS统一管理、统一控制,以保证数据的安全性、完整性和一致性。
(10)设关系R和关系S的元数分别是3和4,关系T是R和S的笛卡儿积,即T=R×S,则关系T的元数是_______。
A)7 B)9 C)12 D)16
答案:A
评析:笛卡儿积的定义是设关系R和s的元数分别是r和s,R和s的笛卡儿积是一个(r十s)元属性的集合,每一个元组的mr个分量来自R的一个元组,、后s爪分量来自s的一个元组。所以关系T的属性元数是3+4=7。
(11)以下叙述中正确的是_______。
A)C语言中的全部数据类型都是基本类型
B)C语言中的全部数据类型都是构造类型
C)C语言中的数据类型只有两种,即基本类型和构造类型
D)以上都不对
答案:D
评析:c语言中的数据类型有四种,即基本类型、构造类型、指针类型和空类型。
(12)下列可作为C语言赋值语句的是_______。
A)x=3,y=5 B)a=b=6 C)i--; D)y=6
答案:C
评析:此题实际上是考查对c语言中"语句"概念的理解。表达式后面只有加上分号才能成为语句,因此,A),B),D)均是表达式,只有C)为语句。且利用自减运算符使i值减l。
(13)以下可以定义为用户标识符的是_______。
A)printf B)net C)3com D)int
答案:B
评析:c语言中的标识符分为两类。一类是系统标识符,即系统定义使用的关键字标识符等。另一类是用户自定义标识符。两类标识符都只能用字母、数字和下划线三种字符组成。且第一个字母必须为字母或下划线。并且用户自定义标识符不能使用系统关键字相同的标识符。
(14)以下选项中,不能作为合法常量的是_______。
A)0X2A B)015 C).2.8e9 D)123.6e0.4
答案:D
评析:c程序中的基本数据类型有整型、实型和字符型。其中整型常量三种形式,即八进制、十进制和十六进制。而实型常量有十进制小数和指数形式两种。
(15)有以下程序
main()
{
int a; char c=10:
float f=-100.0;double x;
clrscrO;
a=f/=c*=(x=6.5);
printf("%d,%c,%3.1C%3.1f\n",a,c,Cx);
}
程序运行后的输出结果是_______。
A)1,65,1,6.5 B)1,A,1.5,6.5 C)1,65,1.5,6.5 D)2,65,1.5,6.5
答案:B
评析:在赋值语句a=f/=c*=(x=6.5);中,可得x=6.5,将x的值乘以10赋予c,为65,再将f=100的值除以65,并按照四舍五入的原则,重新赋给f'得到f=-I.5。最后将f的值赋给a,由于a是整型,所以得到a=l。
(16)以下语句序列中错误的是_______。
A)int x=l; B)int x=0; C)int x=2.3; D)int x=l,y=l;
x++; (x+1)++; (x++)+1; (x++)+(y一);
答案:B
评析:c语言中的自加、自减运算只能用于变量,而不能用于常量或表达式。
(17)有定义语句:im.a;char b[10],c;则错误的输入语句是__________。
A)scanf("%d%s%c",&a,D,&C); B)scanf("%d%s%c",&a,&b,&C);
C)scanf("%d%s%d",&a;b,&C); D)scanf("%d%s"&c,a,%,&C);
答案:D
评析:在scanf()语句中,在给整型变量和字符型赋值时,必须要在变量名前加取地址符号(&),而对字符型数组赋值时,可以不在变量名前不加取地址符号,也可以加取地址符号。而且对于字符型变量既可以赋给整型值,也可以赋给字符型值。
(18)有定义语句:int x,y;,若要通过scan即x=%d,y=%n&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,正确的是________。
A)1l 12<回车> B)ll,12<回车>
C)x=l l,y=12<回车> D)x=ll,<回车>12,<回车>
答案:C
评析:在scanf()语句中,对于变量的赋值必须与数据的输入格式相一致。特别是一些字符说明。
(19)设有如下程序段:
int x=6, y=4;
printf("%d\n",(x%y,x&&y));
则以下叙述中正确的是__________。
A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出
B)运行时产生出错信息
C)输出值为2
D)输出值为l
答案:D
评析:在逗号表达式(表达式1,表达式2)中,其运算方法是先求表达式1的值,然后求表达2的值,整个逗号表达式的值是表达式2的值。
(20)有以下程序
main()
{
int i=1.j=2,k=3;
clrscr();
if(i++==j&&k--==j)
printf("%d,%d,%d",i++'j,k);
else
printf("%d,%d,%d",++i,++j,k--);
}
程序运行后的输出结果是_________。
A)l,2,3 B)2,2,3 C)2,3,2 D)3,3,3
答案:D
评析:按照运算符的优先级,最先计算的是关系运算i++==j,由于此关系式不成立,,它的结果是为"假"值,由此可以确定逻辑与运算的结果必然是"假"值,因此参加逻辑与运算的另一个关系表达式"k--==j"的值,系统不再对它进行运算。此时变量i的值自加1变成2,然后执行else语句后的printf语句。
(21)有定义语句:int a=l,b=l,c=3,x;,则以下选项中各程序段执行后,x的值不等于3是__________。
A)if(c<a)x=l; B)if(a<3&&b<C) x=3;
else if(b<a‖b<C)x=3; else if(a<2) x:2;
C)if(a%b>a) x=3; D)if(a<b+C)x:b;
if(a<2)x=2; if(b&&a<C)x=c=
if(a<1)z=l; if(c<a)x=a;
答案:C
评析:在各种运算符中,运算级别最高的是算术运算,如果有括号,当然先算括号内的表达式的值。
(22)有以下程序,其输出结果是____________。
main()
{ float x=l; int y;
X++:
y=x+l;
printf("x=%d,y=%f",x, y);
}
A)x=2,y=3 B)x=2,y=3.0
C)x=2.0,y=3 D)x=0.y=O.000000
答案:D
评析:一般在对变量定义为何种类型的数据时,对输出应有完全一致的数据类型格式。但整型与实型数据在进行混合运算时,一般其数据类型可以自动转换。如本题的y=x+l;语句中,系统自动将实型表达式x+l的结果转换为整数赋给整型变量y,但整型变量y只能得到实型数的整数部分。
(23)有以下程序
main()
{
int a[6]={5,6,7,8,9,10},s=0,I=0;
clrserO;
do
{
if(a[i]%2 I-0)
s+=a[I];
}while(++i<5);
primf("%d\n",s);
}
程序运行后的输出结果是_________。
A)21 B)22 C)23 D)24
答案:A
评析:引用数组中的某个元素时,可以直接使用数组名加下标的形式。如p[1],就是数组中下标为1的元素,按顺序数,是第2个元素,因为数组的下标是从0开始的。本题实际上是求数组中所有奇数元素的和。
(24)若有如下程序段,
main()
{
char a[7]="123\010\032";
int i,j=0;
clrscr0;
for (I=0;i<strlen(a);i++)
j+=sizeof(a);
printf("%d,%d\n",I,J);
}
程序运行后的输出结果是_________。
A)5,30 B)5,35 C)5,25 D)5,20
答案:B
评析:数组的存储空间是在其定义后就分配的。字符数组a[7]="123\010\032"的存储空间是7个单元。即sizeof(a)=7。而函数strlen()是求字符串的长度的。a[7]="123\010\032"中,有两个转义字符,因此字符串的长度实际上是5个字符。所以strlen(a)=5。在程序的for循环中,其循环的次数是5次,j每次加7,所以最后的结果是35。i的值就是循环的次数。
(25)如果在c程序中要用到库函数中的字符串比较函数strcmp(),那么在程序前面应该 添加的头文件是__________。
A)stdio.h B)string.h C)alloc.h D)math.H
答案:B
评析:库函数并不是c语言的一部分,它是由人们根据需要编制并提供用户使用的。在调用不同类别的库函数时,必须在程序前添加相应的头文件。
(26)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是_________。
A)函数调用可以嵌套和递归
B)函数调用可以作为一个函数的实参
C)函数调用可以出现在表达式中
D)函数调用可以作为一个函数的形参
答案:D
评析:函数的调用有三种方式。一是将函数调用作为一个语句。二是函数出现在_个表达式中。三是作为一个函数的实参。但是没有函数调用作为形参。而且函数在调用时还有嵌套和递归两种特殊的情形。
(27)下列关于c语言中字符常量与字符串常量的叙述中,错误的是_________。
A)字符常量是用单撇号括起来的一个字符
B)空格字符也可用作字符常量
C)字符串常量是用单撇号括起来的一个字符序列
D)字符串常量是用双撇号括起来的一个字符序列
答案:C
评析:c语言中的字符型数据常量有两类,一类是用单撇号括起来的字符常量。字符常量除了常用的字符外,还包括特殊的空格符和以"\"开头的转义字符。字符串常量则是用双撇号括起来的一个字符序列。