- 相关推荐
2017年3月计算机二级考试C语言精选练习
C语言作为计算机二级考试必考重点内容,以此大家要加强C语言的练习,以下是小编为大家整理的2017年3月计算机二级考试C语言精选练习,希望对大家有所帮助。
1). 一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为( )
A.16
B.10
C.6
D.4
正确答案:A
答案解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,故此度为1的结点个数=总结点数-叶子节点数-度为2的节点数=25-5-4=16。
2). 设有定义 char str[] = ″Hello″; 则语句 printf(″%d %d″, sizeof(str), strlen(str)); 的输出结果是( )
A.6 6
B.6 5
C.5 5
D.5 6
正确答案:B
答案解析:sizeof主要用于测试变量所占的实际内存,而strlen函数主要测试字符串中实际字符的个数,字符串″Hello″占有内存6个字节,而字符串中共有5个字符。
3). 下列关于栈和队列的描述中,正确的是( )。
A.栈是先进先出
B.队列是先进后出
C.队列允许在队头删除元素
D.栈在栈顶删除元素
正确答案:D
答案解析:栈实际也是线性表,只不过是一种特殊的线性表。栈是只能在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。队列是只允许在一端删除,在另…端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。
4). 以下叙述中正确的是( )
A.关系运算符两边的运算对象可以是C语言中任意合法的表达式
B.在C语言中,逻辑真值和假值分别对应1和0
C.对于浮点变量x和y,表达式:x==y 是非法的,会出编译错误
D.分支结构是根据算术表达式的结果来判断流程走向的
正确答案:A
答案解析:C语言中没有逻辑类型,用非零表示逻辑真。0表示逻辑假,选项B错误,无法判断两个浮点变量是否相等,但是x==y不会出现编译错误,选项C错误,分支结构根据表达式的值,不一定为算术表达式,选项D错误。
5). 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是( )。
A.需求分析
B.详细设计
C.软件设计
D.概要设计
正确答案:A
答案解析:软件生命周期的主要活动阶段为:可行性研究和计划制定、需求分析、软件设计、软件实现、软件测试、运行和维护。其中需求分析是对开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能,编写软件规格说明书及初步的用户手册,提交评审。
6). 设文件指针fp已定义,执行语句fp=fopen(″file″,″w″);后,以下针对文本文件file操作叙述的选项中正确的是( )
A.写操作结束后可以从头开始读
B.可以在原有内容后追加写
C.可以随意读和写
D.只能写不能读
正确答案:D
答案解析:在题目中函数fopen以″只写″方式打开文件file。
7). 一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )
A.一对一
B.一对多
C.多对一
D.多对多
正确答案:B
答案解析:两个实体集间的联系可以有下面几种:一对一的联系、一对多或多对一的联系和多对多的联系。由于一个宿舍可以住多个学生,所以它们的联系是一对多联系。
8). 软件设计中划分模块的一个准则是( )
A.低内聚低耦合
B.高内聚低耦合
C.低内聚高耦合
D.高内聚高耦合
正确答案:B
答案解析:耦合性与内聚性是模块独立性的两个定性标准。一般一个较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
9). 当把4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是( )。
A.k%2
B.k%2==1
C.(k%2) !=0
D.!k%2==1
正确答案:A
答案解析:整数k对2求余数的两个结果只能是0和1,所以选项A表示k除以2的余数,其结果是0或1。在选项B、C和D中包括算术求余运算符″%″,关系等于运算符 ″==″和关系不等于运算符″!=″以及逻辑非运算符″!″。而逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑″非″)、算术运算符、关系运算符、&&(逻辑″与″)、||(逻辑″或″)、赋值运算符。选项B含义是判断表达式k%2的结果是否等于1、选项C的含义是判断表达式k%2的结果是否不等于0,选项D含义是判断表达式!k%2的结果是否等于1,所以选项B、C和D的含义相同。
2). 下列叙述中正确的是( )
A.栈是一种先进先出的线性表
B.队列是一种后进先出的线性表
C.栈与队列都是非线性结构
D.以上三种说法都不对
正确答案:D
答案解析:栈是先进后出的线性表,队列是先进先出的线性表,二者均为线性结构。
3). 以下关于C语言的叙述中正确的是( )。
A.预处理命令通常位于函数体外面,但也可以位于函数体中间
B.C语言中的变量定义须在其他语句之前
C.在C语言程序的书写中,一个语句必须单占一行
D.一个C语言源程序可以由一个或多个源文件组成,每个源文件可由自己的main函数
正确答案:A
答案解析:源程序中可以有预处理命令(include命令仅为其中的一种)。C语言中的变量可以在使用之前的任何位置进行定义。C语言程序的书写中,多个语句可以位于一行,但为了增强可读性,一般每行只有一条语句。一个C语言源程序可以由一个或多个源文件组成,但仅可以有一个mam函数.
4). 下列选项中可作为C语言合法常量的是( )。
A.-80
B.-080
C.-8e1.0
D.-80.Oe
正确答案:A
答案解析:所谓常量是指在程序运行的过程中,其值不能被改变的量。在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。选项B中是以0开头,表示一个八进制数,而八进制数的取值范围是0~7,所以“-080”错误;在C语言巾e后面的指数必须是整数,因此选项C和D也不正确。
5). 设树T的深度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1。则T中的叶子结点数为( )
A.8
B.7
C.6
D.5
正确答案:B
答案解析:深度为m二叉树其总结点数为2m -1=24-1=15。总结点数减去度为1,2,3,4的结点个数就是叶子结点数。15-4-2-1-1=7。
6). C语言主要是借助以下哪种手段来实现程序模块化( )
A.定义常量和外部变量
B.使用丰富的数据类型
C.使用三种基本结构语句
D.定义函数
正确答案:D
答案解析:C语言用函数实现软件的模块化设计。
7). 以下叙述中正确的是( )
A.只有全局变量才有自己的作用域,函数中的局部变量没有作用域
B.只要是用户定义的标识符,都有一个有效的作用域
C.只有在函数内部定义的变量才是局部变量
D.局部变量不能被说明为static
正确答案:B
答案解析:在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量,也是全局变量。全局变量可以为源文件中其他函数所共用,其作用域为从定义变量的位置开始到源文件结束。因此只要用户定义的标识符,全部都有作用域。局部变量可以说明为auto、register以及static。
8). 在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的( )。
A.连接码.
B.关系码
C.外码
D.候选码
正确答案:D
答案解析:在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有候选键中选取一个作为用户使用的键称为主键或主码。
1). 以下叙述中错误的是( )
A.预处理命令行的最后不能以分号表示结束
B.C程序对预处理命令行的处理是在程序执行的过程中进行的
C.#define MAX 是合法的宏定义命令行
D.在程序中凡是以″#″开始的语句行都是预处理命令行
正确答案:B
答案解析:预处理命令行是以″#″开始的语句,预处理命令行的最后不能以分号表示结束,预处理命令行。其中宏定义的字符替换的定义格式为:# define 标识符 字符串,预处理命令行是在系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。
2). 按照″后进先出″原则组织数据的数据结构是( )
A.队列
B.栈
C.双向链表
D.二叉树
正确答案:B
3). 以下程序段完全正确的是( )
A.int k, *p=&k; scanf(″%d″, p);
B.int *p; scanf(″%d″, p);
C.int *p; scanf(″%d″, &p);
D.int k, *p; *p=&k; scanf(″%d″, p);
正确答案:A
答案解析:选项B没有对指针进行初始化,无效指针。选项C错在没有对指针进行初始化,无效指针,并且在scanf(″%d″,&p)中无需再进行取地址操作。选项D,语句*p=&k;的左端*p是指针所指内存空间的值,&k是地址,应为p=&k。
4). 下列有关数据库的描述,正确的是( )。
A.数据库设计是指设计数据库管理系统
B.数据库技术的根本目标是要解决数据共享的问题
C.数据库是一个独立的系统,不需要操作系统的支持
D.数据库系统中,数据的物理结构必须与逻辑结构一致
正确答案:B
答案解析:数据库设计的目的实质上是设计出满足实际应用需求的实际关系模型。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。
6). 若程序中有宏定义行: #define N 100 则以下叙述中正确的是 ( )
A.宏定义行中定义了标识符N的值为整数100
B.上述宏定义行实现将100赋给标示符N
C.在运行时用100替换标识符N
D.在编译程序对C源程序进行预处理时用100替换标识符N
正确答案:D
答案解析:在C语言中,凡是以″#″号开头的行,都称为″编译预处理″。其含义是在C编译程序对C源程序进行编译前,由编译预处理程序对这些编译预处理命令进行处理的过程。由#define定义的宏就是编译预处理命令。C程序在进行编译之前,都要先对程序中所有出现的″宏名″,都用宏定义中的替换文本进行替换。
【3月计算机二级考试C语言练习】相关文章:
计算机二级C语言考试冲刺练习题06-21
计算机二级考试C语言模拟练习题07-23
9月计算机考试二级C语言模拟试题11-01
计算机二级考试C语言考试技巧05-13