全国计算机等级考试二级C语言真题库之选择题.doc

上传人:s****u 文档编号:12771605 上传时间:2020-05-23 格式:DOC 页数:10 大小:101.50KB
返回 下载 相关 举报
全国计算机等级考试二级C语言真题库之选择题.doc_第1页
第1页 / 共10页
全国计算机等级考试二级C语言真题库之选择题.doc_第2页
第2页 / 共10页
全国计算机等级考试二级C语言真题库之选择题.doc_第3页
第3页 / 共10页
点击查看更多>>
资源描述
全国计算机等级考试等级考试真题库全国计算机等级考试等级考试真题库之选择题(15)1.下列链表中,其逻辑结构属于非线性结构的是A) 二叉链表B) 循环链表C) 双向链表D) 带链的栈 参考答案:A【解析】在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。2.设循环队列的存储空间为Q(1: 35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A) 15B) 16C) 20D) 0或35 参考答案:D【解析】在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加,朝前移动。只不过当头尾指针指向向量上界时,其加操作的结果是指向向量的下界。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为D选项。3.下列关于栈的叙述中,正确的是A) 栈底元素一定是最后入栈的元素B) 栈顶元素一定是最先入栈的元素C) 栈操作遵循先进后出的原则D) 以上说法均错误 参考答案:C【解析】栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或后进先出表,所以选择C。4.在关系数据库中,用来表示实体间联系的是A) 属性B) 二维表C) 网状结构D) 树状结构 参考答案:B【解析】关系模型实体间的联系采用二维表来表示,简称表。选项C为网状模型实体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是A) 1:1联系B) m:1联系C) 1:m联系D) m:n联系 参考答案:C【解析】两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系(1:1)、一对多联系(1:m)、多对一联系(m:1)、多对多联系(m:n)。对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系(1:m),答案选C。6.A) 选择B) 投影C) 自然连接D) 并 参考答案:A【解析】由关系R到关系S为一元运算,排除C和D。关系S是关系R的一部分,是通过选择之后的结果,因此选A。7.数据字典(DD) 所定义的对象都包含于A) 数据流图(DFD图) B) 程序流程图C) 软件结构图D) 方框图 参考答案:A【解析】在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来就构成了数据字典。因此选A,而B,C,D都不符合。8.软件需求规格说明书的作用不包括A) 软件验收的依据B) 用户与开发人员对软件要做什么的共同理解C) 软件设计的依据D) 软件可行性研究的依据 参考答案:D【解析】软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。软件需求规格说明书有以下几个方面的作用。便于用户、开发人员进行理解和交流,B正确;反映出用户问题的结构,可以作为软件开发工作的基础和依据,C正确;作为确认测试和验收的依据,A正确。9.下面属于黑盒测试方法的是A) 语句覆盖B) 逻辑覆盖C) 边界值分析D) 路径覆盖 参考答案:C【解析】黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为C。而A、B、D均为白盒测试方法。10.下面不属于软件设计阶段任务的是A) 软件总体设计B) 算法设计C) 制定软件确认测试计划D) 数据库设计 参考答案:C【解析】从技术观点上看,软件设计包括软件结构设计、数据设计、接口设计、过程设计。所以A、B、D正确,C为软件测试阶段的任务。11.以下叙述中正确的是A) NS流程图只能描述简单的顺序结构的程序B) 程序的算法只能使用流程图来描述C) 结构化程序的三种基本结构是循环结构、选择结构、顺序结构D) 计算机可以直接处理C语言程序,不必进行任何转换 参考答案:C【解析】N-S流程图是可以描述循环结构选择结构顺序结构等多种结构的程序,所以A选项错误程序的算法可以用流程图伪代码N-S结构图等方法表示,所以B选项错误计算机只能处理二进制表示的目标程序,不能直接执行由C语言编写的源程序,所以D选项错误12.以下叙述中正确的是A) 书写源程序时,必须注意缩进格式,否则程序会有编译错误B) 程序的主函数名除main外,也可以使用Main或_mainC) 程序可以包含多个主函数,但总是从第一个主函数处开始执行D) 在C程序中,模块化主要是通过函数来实现的 参考答案:D解析】C语言的源程序中对缩进没有要求,所以A选项错误C语言中区分大小写,main函数不能写成Main或_main,所以B选项错误一个C程序有且只有一个主函数,所以C选项错误13.C语言中double 类型数据占字节数为A) 4B) 8C) 12D) 16 参考答案:B【解析】double型数据在内存中占8个字节,float型数据占4个字节,int型数据占2个字节,char型数据占1个字节所以选择B14.以下叙述中正确的是A) 语言中的关键字不能作变量名,但可以作为函数名B) 标识符的长度不能任意长,最多只能包含16个字符C) 标识符总是由字母、数字和下划线组成,且第一个字符不得为数字D) 用户自定义的标识符必须见名知义,如果随意定义,则会出编译错误 参考答案:C解析】C语言中的关键字即不能做变量名也不能做用户函数名,所以A错误标识符的命名规则,即由下划线字母数字组成,且必须以下划线和字母开始,也不能和关键字一致不同C语言规定标识符的有效长度可能会不同,但没有限制最大长度,所以B错误用户定义的标识符只要满足标识符命名规则没有特殊要求,不必一定见名知义,所以D错误15.以下叙述中正确的是A) 由printf输出的数据都隐含左对齐B) scanf和printf是C语言提供的输入和输出语句C) 赋值语句是一种执行语句,必须放在函数的可执行部分D) 由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的 参考答案:C【解析】scanf和printf是C语言提供的输入输出函数,所以B错误由printf输出的数据都隐含右对齐,所以A错误Printf输出数据所占的宽度由系统决定,所以D错误16.以下叙述中正确的是A) 复合语句在语法上包含多条语句,其中不能定义局部变量B) 花括号对只能用来表示函数的开头和结尾,不能用于其他目的C) 空语句就是指程序中的空行D) 当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键) 前,可以任意修改 参考答案:D【解析】复合语句可以包含多条语句,在其中可以定义局部变量,所以A错误花括号对不仅用来表示函数的开头和结尾,也可以用于表示复合语句,所以B错误C语言中的语句必须以分号;结束,所以空语句表示为;,不是空行,所以C错误17.以下叙述中正确的是A) 在C语言中,逻辑真值和假值分别对应1和0B) 关系运算符两边的运算对象可以是语言中任意合法的表达式C) 对于浮点变量x和y,表达式:x=y 是非法的,会出编译错误D) 分支结构是根据算术表达式的结果来判断流程走向的 参考答案:B【解析】A选项中,在C语言中,逻辑真值对应非0; C选项中,表达式:x=y 是合法的;D选项中,分支结构的流程走向是根据表达式的值,并不仅仅是算数表达式的值。因此B选项正确。18.以下叙述中正确的是A) 对于逻辑表达式:a+ | b+,设a的值为1,则求解表达式的值后,b的值会发生改变B) 对于逻辑表达式:a+ & b+,设a的值为0,则求解表达式的值后,b的值会发生改变C) else不是一条独立的语句,它只是if语句的一部分D) 关系运算符的结果有三种:0,1,-1 参考答案:C【解析】B选项和A选项中,对于逻辑表达式,其中b的值不会因为表达式的结果发生改变;D选项中,关系运算符的结果有真和假两种。因此C选项正确。19.以下叙述中正确的是A) continue语句使得整个循环终止B) break语句不能用于提前结束for语句的本层循环C) 使用break语句可以使流程跳出switch语句体D) 在for语句中,continue与break的效果是一样的,可以互换 参考答案:C【解析】break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,即满足条件时便跳出循环。continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。A、B和D三个选项中均有错误。因此C选项正确。20.以下叙述中正确的是A) 循环发生嵌套时,最多只能两层B) 三种循环for,while,do-while可以互相嵌套C) 循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误D) for语句的圆括号中的表达式不能都省略掉 参考答案:B【解析】A选项中,循环发生嵌套时,没有规定层数; C选项中,循环嵌套时,书写代码时没有要求必须缩进;D选项中,for语句的圆括号中的表达式都可以省略掉。因此B选项正确。21.下面选项中合法的字符常量是A) XB) XC) abcD) 参考答案:B【解析】字符常量是用单引号括起来的一个字符。A选项中,使用双引号,所以是错误的; C选项中,abc是字符串,字符常量只能是单个字符,不能是字符串;D选项中,以反斜线开头的是转义字符。因此B选项正确。22.以下叙述中正确的是A) 转义字符要用双引号括起来,以便与普通的字符常量区分开B) 字符常量在内存中占2个字节C) 字符常量需要用单引号括起来D) 字符常量是不能进行关系运算的 参考答案:C【解析】B选项中,字符常量在内存中占1个字节;A选项中,转义字符是以反斜线开头,后跟一个或几个字符;D选项中,字符常量可以进行关系运算,不能参与数值运算。因此C选项正确。23.以下叙述中正确的是A) 用户自己定义的函数只能调用库函数B) 实用的C语言源程序总是由一个或多个函数组成C) 不同函数的形式参数不能使用相同名称的标识符D) 在C语言的函数内部,可以定义局部嵌套函数 参考答案:B【解析】A选项中,用户自己定义的函数只能调用库函数描述是不正确的,也可以调用自定义函数;C选项中,对于不同函数的形式参数可以使用相同名称的标识符;D选项中,关于函数的定义不可以嵌套,但函数的调用可以嵌套。因此B选项正确。24.以下叙述中正确的是A) int* p1; int * p2; int *p3;都是合法的定义指针变量的语句B) 指针变量只能通过求地址运算符(&) 来获得地址值C) 语句p=NULL;与p=0;是等价的语句D) 语句p=NULL;执行后,指针p指向地址为0的存储单元 参考答案:A【解析】B选项描述不正确,指针变量可以通过求地址运算符(&) 来获得地址值,可以通过指针变量获得地址值,还可以通过标准函数获得地址值;C选项中,p=NULL;和p=0;或p=0;等价;D选项中,语句p=NULL;执行后,指针p并不是指向地址为0的存储单元,而是具有一个确定的值-空。因此A选项正确。25.以下叙述中正确的是A) 即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同B) 如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息C) 设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;D) 指针变量之间不能用关系运算符进行比较 参考答案:B【解析】A选项描述不正确,指针变量的赋值只能赋予地址, 决不能赋予任何其它数据,否则将引起错误;C选项中,p=NULL;和p=0;是等价的;D选项中,指向同一数组的两指针变量进行关系运算可表示它们所值数组元素之间的关系。因此B选项正确。26.以下叙述中正确的是A) 一条语句只能定义一个数组B) 每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元C) 数组说明符的一对方括号中只能使用整型常量,而不能使用表达式D) 在引用数组元素时,下标表达式可以使用浮点数 参考答案:B【解析】A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句定义多个数组;C选项中,数组说明符的一对方括号中可以是整型常量,可以是整型常量表达式;D选项中,在引用数组元素时,下标表达式必须是整型的。因此B选项正确。27.以下叙述中正确的是A) 数组下标的下限是1B) 数组下标的下限由数组中第一个非零元素的位置决定C) 数组下标的下限由数组中第一个被赋值元素的位置决定D) char c1, c2, *c3, c440;是合法的变量定义语句 参考答案:D【解析】数组下标的下限是0。因此D选项正确。28.以下叙述中正确的是A) 语句int a8 = 0; 是合法的B) 语句 int a = 0;是不合法的,遗漏了数组的大小C) 语句 char a2 = A, B; 是合法的,定义了一个包含两个字符的数组D) 语句 char a3; a = AB; 是合法的,因为数组有三个字符空间的容量,可以保存两个字符 参考答案:A【解析】B选项中,如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数;C选项中,char a2 = A, B;不合法,应为char a2 = A, B;;D选项中,用字符串方式赋值比用字符逐个赋值要多占1个字节,在该选项中应为3个字节。因此A选项正确。29.下面选项中的程序段,没有编译错误的是A) char* sp, s10; sp = Hello;B) char* sp, s10; s = Hello;C) char str110 = computer, str210; str2 = str1;D) char mark; mark = PROGRAM; 参考答案:A【解析】本题考查字符数组的初始化以及指向字符串的指针,B选项不能直接将字符串赋值给数组名,C选项不能将两个字符数组直接互相赋值,D选项中不能这样定义char mark,必须指定长度或者直接初始化。30.以下叙述中正确的是A) 字符串常量str1的类型是:字符串数据类型B) 有定义语句: char str1 = str1; ,数组str1将包含4个元素C) 下面的语句用赋初值方式来定义字符串,其中,0是必须的 char str1 = s, t, r, 1, 0;D) 字符数组的每个元素可存放一个字符,并且最后一个元素必须是0字符 参考答案:C【解析】本题考查字符数组的相关操作,B选项中数组str1包含了5个元素,其中有结尾符,A选项中str1的类型不是字符串类型,字符数组的最后一个元素可以不是0字符31.以下叙述中正确的是A) 字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组B) char ca35 = A, BB, CCC; 是不合语法的C) char ca 5 = A, BB, CCC; 是不合语法的D) char *ca3 = A, BB, CCC; 是不合语法的 参考答案:A【解析】本题考查字符串数组的相关知识,选项B、C、D都是合语法的。32.以下叙述中正确的是A) 两个字符串可以用关系运算符进行大小比较B) 函数调用strlen(s);会返回字符串s实际占用内存的大小(以字节为单位)C) C语言本身没有提供对字符串进行整体操作的运算符D) 当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和 参考答案:C【解析】本题考查字符串处理函数strlen、strcat、strcmp。B选项中strlen返回的是字符串s实际占用内存大小加上结尾符,A选项中不能用关系运算符进行大小比较,可以使用strcmp。D选项当使用连接函数strcat时,内存空间会减少一个字符位置。33.以下叙述中正确的是A) 如果函数带有参数,就不能调用自己B) 所有函数均不能接受函数名作为实参传入C) 函数体中的语句不能出现对自己的调用D) 函数名代表该函数的入口地址 参考答案:D【解析】本题考查函数调用相关知识,B选项中函数可以接受函数名作为实参传入,引用函数名也是指针,C、A选项是错误的,因为递归函数就能调用自己。34.以下叙述中正确的是A) 局部变量不能被说明为staticB) 只有全局变量才有自己的作用域,函数中的局部变量没有作用域C) 只有在函数内部定义的变量才是局部变量D) 只要是用户定义的标识符,都有一个有效的作用域 参考答案:D【解析】本题考查局部变量和全局变量作用域,B选项中局部变量也有作用域,C选项中,函数内部定义的也可能是全局变量,A选项错误,因为可以定义个静态局部变量。35.下面选项中关于编译预处理的叙述正确的是A) 预处理命令行必须使用分号结尾B) 凡是以#号开头的行,都被称为编译预处理命令行C) 预处理命令行不能出现在程序的最后一行D) 预处理命令行的作用域是到最近的函数结束处 参考答案:B【解析】本题考查预编译的预编译处理命令行,预处理命令行不能以分号结尾,所以A选项错误,预处理命令行可以出现在程序的最后一行,预处理命令行作用域是整个文件36.以下叙述中正确的是A) 使用typedef说明新类型名时,其格式是: typedef 新类型名 原类型名;B) 在程序中,允许用typedef来说明一种新的类型名C) 使用typedef 说明新类型名时,后面不能加分号D) 在使用typedef改变原类型的名称后,只能使用新的类型名 参考答案:B【解析】本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,选项A总新类型名应该在原类型名之后,C选项中后面要加分号,D选项中可以使用原类型名。37.以下叙述中正确的是A) 结构体类型中各个成分的类型必须是一致的B) 结构体类型中的成分只能是C语言中预先定义的基本数据类型C) 在定义结构体类型时,编译程序就为它分配了内存空间D) 一个结构体类型可以由多个称为成员(或域) 的成分组成 参考答案:D【解析】本题考查结构体类型,结构体类型中的成分可以是结构体,所以B选项错误,定义结构体时编译程序并不会给它分配内存空间,所以C选项错误,结构体中各个成分的类型可以是不一样的,所以A选项错误。38.以下叙述中正确的是A) 使用typedef定义新类型名后,新类型名与原类型名实际上是等价的B) 结构体类型中的各个成分均不能是数组或指针C) 结构体类型的变量,不能在声明结构体类型组成时一起定义D) 元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义 参考答案:A【解析】本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,结构体类型中的成分可以是数组和指针,所以B选项错误,结构体类型的变量可以在声明结构体的时候一起定义,C选项错误,D选项中可以一起定义。39.下面选项中关于位运算的叙述正确的是A) 位运算的对象只能是整型或字符型数据B) 位运算符都需要两个操作数C) 左移运算的结果总是原操作数据2倍D) 右移运算时,高位总是补0 参考答案:A【解析】本题考查位运算。按位取反只需要一个操作数,所以B选项错误,左移一位是原操作数的2倍,其他情况不是,比如左移两位就是原操作数的4倍,所以C选项错误,右移运算时,高位在某些情况下不是补0。40.下面选项中关于文件指针概念的叙述正确的是A) 文件指针是程序中用FILE定义的指针变量B) 文件指针就是文件位置指针,表示当前读写数据的位置C) 文件指针指向文件在计算机中的存储位置D) 把文件指针传给fscanf函数,就可以向文本文件中写入任意的字符 参考答案:A【解析】在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。文件指针不是文件位置指针,所以BC选项错误,D选项中不可以写入任意的字符。10
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!