计算机等级考试二级C语言考前密卷[2]上
一、选择题(1)-(10)每项2分,(11)-(50)每项1分,共60分)
以下四个选项a)、b)、c)、d)中只有一个是正确的。请在答题卡的相应位置涂上正确的选项。[
(1)下列说法正确的是_ _ _ _ _ _ _ _。
A)算法的执行效率与数据存储结构无关
B)算法的空复杂度是指算法程序中指令(或语句)的数量
C)算法的有限性是指算法必须能够在有限步数后终止
D)算法的时间复杂度是评估:算法的设计可以避开特定的计算机编程语言,但算法的实现必须依赖于数据类型和数据结构和算法是计算机科学的两大支柱。
(2)下列数据结构属于非线性数据结构的_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。
A)队列B)线性表C)二叉树D)栈
答案:C
备注:线性表、栈、队列等数据结构所表达和处理的数据是以线性结构组织的。栈也叫后进先出);表;队列也叫先进先出(先入先出)。二叉树的数据结构是树形结构,结构中的数据元素之间是一对多的关系,所以是一种非线性的数据结构。
(3)二叉树上第8层的最大节点数是_ _ _ _ _ _ _ _。
A)8 B)16 C)128 D)256
答案:C
评价:根据二叉树的性质,二叉树的第i(i≥1)层最多有2i-1个节点。第8层中的最大节点数是128。
(4)下列描述中,不符合结构化程序设计风格的是_ _ _ _ _ _ _ _。
A)用顺序、选择和重复(循环)三种基本控制结构来表达程序的控制逻辑
B)自顶向下
C)注重提高程序的执行效率
D)限制goto语句的使用
答案:C
注释2 .逐步完善;3.模块化;4.限制goto语句的使用。
(5)下列概念中,不属于面向对象方法的是_ _ _ _ _ _ _ _。
A)对象、消息B)继承、多态C)类、封装D)过程调用
回答:D
点评:面向对象方法是利用对象、类、封装、继承、多态和消息等概念来构造、测试和重构软件的方法。面向对象的方法从对象出发,发展了对象、类、消息、继承等概念。
(6)在结构化方法中, 软件开发阶段使用数据流程图(DFD) 由于描述工具是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
A)可行性分析B)需求分析C) 详细设计D)程序编码
答案:B
评价:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。 其中,需求分析阶段常用的工具有数据流图和数据字典。
(7)软件生命周期中最昂贵的阶段是_ _ _ _ _ _ _ _ _。
A)详细设计B)软件编码C)软件测试D)软件维护
回答:D
评价:软件生命周期分为软件定义、软件开发和软件运维三个阶段。本课题中的详细设计、软件编码和软件测试属于软件开发阶段;维护是软件生命周期的最后一个阶段。
(8)数据库系统的核心是_ _ _ _ _ _。
A)数据模型B)DBMS C)软件工具D)数据库
答案:B
点评:DBMS是数据库系统的核心。DBMS是负责建立、使用和维护数据库的软件。DBMS建立在操作系统之上,实现对数据库的统一管理和控制。用户使用的各种数据库命令和应用程序的执行最终都要经过DBMS。
(9)下列说法中正确的_ _ _ _ _ _ _ _。
A)数据处理是将信息转换为数据的过程
B)数据库设计是指数据库管理系统的设计
c)如果一个关系中的一个属性或属性组不是该关系的键,但却是另一个关系的键,则称为该关系的外键
D)关系中的每一列称为元组,一个数据库设计的目的本质上是设计一个符合实际应用需要的实用关系模型。关系中的行称为元组,对应的是存储文件中的记录,关系中的列称为属性,对应的是存储文件中的字段,所以D选项错误。(10)在下列模式中,_ _ _ _ _ _ _ _是用户模式。
A)内部模式B)外部模式C)概念模式D)逻辑模式
答案:B
评价:数据库管理系统的三级模式结构由外部模式、外部模式和内部模式组成。外部模式是指数据库用户看到的数据结构,是用户看到的数据视图。模式是对数据库中所有数据的逻辑结构和特征的描述,是所有用户看到的数据视图的总和。内部模式是指数据在数据库系统中存储介质上的表示,即数据的物理结构和访问方式的描述。
(11)C语言规定_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
A)直接递归调用和间接递归调用都允许
B)直接递归调用和间接递归调用都不允许
C) 允许直接递归调用但不允许间接递归调用
D)不允许直接递归调用
答:A
注释
(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是错的,做...while构成循环,当while语句中的表达式值为零时,结束循环而不是非零;选项c也是错的。
(14)下列选项中属于C语言的数据类型是_ _ _ _ _ _ _ _ _ _。
A)复数类型B)逻辑类型C)双精度类型D)集合类型
答案:C
点评:C语言的数据类型可以分为四类:基本类型、构造类型、指针类型和空类型。其中,基本类型分为整数、字符、实数三类。实数型也叫浮点型,包括单精度型和双精度型。
(15)在C语言中,不正确的int类型的常数是_ _ _ _ _ _ _ _ _。
A)32768 b)0c)037d)0x af
答案:A
备注:C语言中int类型常量的取值范围是:-327 68 ~ 32767。c整数常量可以用三种形式表示:十进制整数、八进制整数和十六进制整数。选项a超出范围,不正确。
(16)下列程序的输出是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。
main()
{
int a = 65535;
printf("%d%u ",a,a);
}
a)-1-1b)65535 65535 C)-1 65535d)65535-l
答案:C
备注:printf函数中不同类型的数据使用不同的格式字符,其中% d是按下的。当变量a=65535以% d格式输出时,溢出输出值是这个数的补码值,即. 1;% u用于输出无符号数据。无符号整数变量的取值范围是0~65535,所以以% u格式输出的变量a=65535的值是65535。
(17)下列描述不正确的是_ _ _ _ _ _ _ _。
A)字符数组可以存储字符串
B)字符数组可以整体输入输出
c)整数数组可以整体输入输出
D)字符数组不能用赋值语句中的赋值运算符“=”整体赋值
答:【字符的输入输出可以一次性输入或输出整个字符串。所以选项C的说法是不正确的。
(18)下列程序的输出结果是_ _ _ _ _ _ _ _ _。
main()
{ int i,x[3][3]={9,8,7,6,5,4,3,2,1},* p = & x[1][1];
for(I = 0;I}
A)5 2 B)5 l C)5 3 D)9 7
答案:C
评价:问题中* p = & x[1][1];是指将数组X的数组元素x[1][1]的地址赋给指针变量P,使P指向数组元素x[11[1],那么p[0]就是指针变量P当前指向的数组元素x[1][1]的值
(19)下列可用于C语言标识符的组是_ _ _ _ _ _ _ _ _。
A)void word fine B)A6 $ sys for
C)2A Sizeof ABC D)Int Define Sizeof
答案:D
注释:C语言规定标识符只能由字母、数字和下划线组成,第一个字符必须是字母或下划线。注意,大写字母和小写字母被认为是两种不同的字符。C中的关键字不能作为标识符(20)下列程序的运行结果是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
# include " stdio。h " "/br/]main()
{
int a[]= { 1,2,3,4,5,6,7,8,9,10,1 1,12 };
int*p=a+5,* q = NULL
* q = *(p15);
printf("%d %d、n ",' p,* q);
}
A)运行后出错B)6 6
C)6 12 D)5 5
答案:A
注释:Q在题目中没有赋值存储单元,只是简单的赋值,所以程序的运行结果是6 ll空指针。
(21)下列说法中正确的是_ _ _ _ _ _ _ _ _。
A)C语言程序总是从第一个函数开始
B)在C语言程序中,要调用一个函数,必须在main()函数中定义
c)c语言程序总是从main()函数开始
D)C语言程序中的main()函数必须放在程序的开头
回答:C
注释:C语言程序是由main函数main()启动的,
(22)有如下程序[}
main()
{
int a = 2,b=5,c = 8;
printf("%3.0f\n ",fun((int)fun(a+c,b),(a-c)));
}
程序运行后,输出结果是_ _ _ _ _ _ _ _ _。
A)编译错误B) 9 C) 21 D) 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 = o)&(A0)&(A+B0
答案:D
评价:选项A中,表达式表示A,B为异号;选项B中,表达式代表0,因为没有满足条件的值;选项C中,表达式代表0,因为没有满足条件的值;选项d表示a和b符号相同。
(24)如果定义:int a[9],* p = a;不能表示a[l]的地址的表达式
是_ _ _ _ _ _ _ _ _ _ _,不改变后面语句中P的值。
A)P+L B)A+L C)a++ D)++ P
答案:C
备注:数组名是指针常量,是固定指针。不能给数组名赋新的地址值,也不能让指针常量“移动”指向数组的其他元素。
(25)下列程序的输出结果是_ _ _ _ _ _ _ _ _ _ _。
main()
{ int a==-1,b=1,k;
if((++aprintf("%d %d\n ",a,b);
else
printf("%d %d\n ",b,a);
}
A)-1LB)0L
C)10D)00
答案:C
评价:逻辑运算符的优先级如下:!(non) →&&(and) → ‖ (or),但是这个题目需要特别注意短路的概念。
< p>
(8)数据库系统的核心是_ _ _ _ _ _ _ _。
A)数据模型B)DBMS C)软件工具D)数据库
答案:B
点评:DBMS是数据库系统的核心。DBMS是负责建立、使用和维护数据库的软件。DBMS建立在操作系统之上,实现对数据库的统一管理和控制。用户使用的各种数据库命令和应用程序的执行最终都要经过DBMS。
(9)下列说法中正确的_ _ _ _ _ _ _ _。
A)数据处理是将信息转换为数据的过程
B)数据库设计是指数据库管理系统的设计
c)如果一个关系中的一个属性或属性组不是该关系的键,但却是另一个关系的键,则称为该关系的外键
D)关系中的每一列称为元组,一个数据库设计的目的本质上是设计一个符合实际应用需要的实用关系模型。关系中的行称为元组,对应的是存储文件中的记录,关系中的列称为属性,对应的是存储文件中的字段,所以D选项错误。(10)在下列模式中,_ _ _ _ _ _ _ _是用户模式。
A)内部模式B)外部模式C)概念模式D)逻辑模式
答案:B
评价:数据库管理系统的三级模式结构由外部模式、外部模式和内部模式组成。外部模式是指数据库用户看到的数据结构,是用户看到的数据视图。模式是对数据库中所有数据的逻辑结构和特征的描述,是所有用户看到的数据视图的总和。内部模式是指数据在数据库系统中存储介质上的表示,即数据的物理结构和访问方式的描述。
(11)C语言规定_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
A)直接递归调用和间接递归调用都允许
B)直接递归调用和间接递归调用都不允许
C) 允许直接递归调用但不允许间接递归调用
D)不允许直接递归调用
答:A
注释
(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是错的,做...while构成循环,当while语句中的表达式值为零时,结束循环而不是非零;选项c也是错的。
(24)如果定义:int a[9],* p = a;不能表示a[l]的地址的表达式
是_ _ _ _ _ _ _ _ _ _ _,不改变后面语句中P的值。
A)P+L B)A+L C)a++ D)++ P
答案:C
备注:数组名是指针常量,是固定指针。不能给数组名赋新的地址值,也不能让指针常量“移动”指向数组的其他元素。
(25)下列程序的输出结果是_ _ _ _ _ _ _ _ _ _ _。
main()
{ int a==-1,b=1,k;
if((++aprintf("%d %d\n ",a,b);
else
printf("%d %d\n ",b,a);
}
A)-1LB)0L
C)10D)00
答案:C
评价:逻辑运算符的优先级如下:!(non) →&&(and) → ‖ (or),但是这个题目需要特别注意短路的概念。
0条评论