试题 百分网手机站

全国计算机二级C语言复习题及答案

时间:2020-11-03 19:34:27 试题 我要投稿

全国计算机二级C语言复习题及答案

  全国计算机等级考试已经进入冲刺阶段了,考生们在最后的几天复习里,可以多做几套练习题训练自己的做题速度,下面是百分网小编为考生搜索整理了关于计算机二级C语言复习题及答案,供大家参考学习,希望对你有所帮助。想了解更多相关信息请持续关注我们应届毕业生考试网!

  1)下面叙述正确的是________。

  A)算法的执行效率与数据的存储结构无关

  B)算法的空间复杂度是指算法程序中指令(或语句)的条数

  C)算法的有穷性是指算法必须能在执行有限个步骤之后终止

  D)算法的时间复杂度是指执行算法程序所需要的时间

  (1)C

  知识点:算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)

  评 析:算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中提供的数据类型及其算法。数据结构和算法是计算机科学的两个重要支柱。它们是一个不可分割的整体。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤以后结束。算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算次数。

  (2)以下数据结构属于非线性数据结构的是________。

  A)队列 B)线性表 C)二叉树 D)栈

  (2)C

  知识点:栈和队列的定义;栈和队列的顺序存储结构及其基本运算

  评 析:线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚插入的元素。所以栈又称后进先出表(Last In First Out)。队列可看作是插入在一端进行,删除在另一端进行的线性表,允许插入的一端称为队尾,允许删除的一端称为队头。在队列中,只能删除队头元素,队列的最后一个元素一定是最新入队的元素。因此队列又称先进先出表(First In First Out)。二叉树的数据结构是树型结构,结构中数据元素之间存在着一对多的关系,因此它是一种非线性数据结构。

  (3)在一棵二叉树上第8层的结点数最多是________。

  A)8 B)16 C)128 D)256

  (3)C

  知识点:二叉树的定义及其存储结构

  评 析:根据二叉树的性质:二叉树第i(I>1)层上至多有2i-1个结点。得到第8层的结点数最多是128。

  (4)下面描述中,不符合结构化程序设计风格的是________。

  A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑

  B)自顶向下

  C)注重提高程序的执行效率

  D)限制使用goto语句

  (4)C

  知识点:结构化程序设计

  评 析:结构化程序设计方法的四条原则是:1.自顶向下:2.逐步求精;3.模块化;4.限制使用goto语句。“自顶向下”是说,程序设计时,应先考虑总体,后考虑细节,先考虑全局目标,后考虑局部目标;“逐步求精’’是说,对复杂问题,应设计一些子目标作过渡,逐步细节化;“模块化”是说,一个复杂问题肯定是由若干稍简单的问题构成,解决这个复杂问题的程序,也应对应若干稍简单的问题,分解成若干稍小的部分。

  (5)下面概念中,不属于面向对象方法的是________。

  A)对象、消息 B)继承、多态 C)类、封装 D)过程调用

  (5)D

  知识点:面向对象的程序设计方法、对象、方法、属性及继承与多态性

  评 析:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。

  (6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是________。

  A)可行性分析 B)需求分析 C)详细设计 D)程序编码

  (6)B

  知识点:结构化设计方法

  评 析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流程图和数据字典。

  (7)软件生命周期中所花费用最多的阶段是________。

  A)详细设计 B)软件编码 C)软件测试 D)软件维护

  (7)D

  知识点:软件工程基本概念,软件生命周期概念,软件工具与软件开发环境

  评 析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。

  (8)数据库系统的核心是________。

  A)数据模型 B)DBMS C)软件工具 D)数据库

  (8)B

  知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统

  评 析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。

  (9)下列叙述中正确的是________。

  A)数据处理是将信息转化为数据的过程

  B)数据库设计是指设计数据库管理系统

  C)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键

  字,则称其为本关系的外关键字

  D)关系中的每列称为元组,一个元组就是一个字段

  (9)C

  知识点:数据模型,实体联系模型及E-R图,从E-R图导出关系数据模型

  评 析:数据处理是指将数据转换成信息的过程,故选项A叙述错误;设计数据库的目的实质上是设计出满足实际应用需求的实际关系模型,故选项B叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性。对应存储文件中的字段,故D选项叙述错误。

  (10)下列模式中,_______是用户模式。

  A)内模式 B)外模式 C)概念模式 D)逻辑模式

  (10)B

  知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统

  评 析:数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或称子模式,或称用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或称存储模式,或称物理模式,是指数据在数据库系统内的存储介质上的表示。即对数据的物理结构和存取方式的描述。

  (11)C语言规定,程序中各函数之间_______。

  A)既允许直接递归调用也允许间接递归调用

  B)不允许直接递归调用也不允许间接递归调用

  C)允许直接递归调用不允许间接递归调用

  D)不允许直接递归调用允许间接递归调用

  (11)A

  知识点:函数的递归调用

  评 析:c语言规定,程序中各函数之间既允许直接递归调用也允许间接递归调用。

  (12)C语言中下列叙述正确的是_______。

  A)不能使用do-while语句构成的循环

  B)do-while语句构成的循环,必须用break语句才能退出

  C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

  D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环

  (12)D

  知识点:do-while语句

  评 析:选项A是错误的,c语言支持do-while语句;选项B是错误的,do-while构成的循环,当while语句中的表达式值为零时结束循环,而不是非零;选项C也是错误的。

  (13)以下选项中属于C语言的数据类型是_______。

  A)复数型 B)逻辑型 C)双精度型 D)集合型

  (13)C

  知识点:c语言的数据类型

  评 析:c语言的数据类型分为基本类型、构造类型、指针类型、空类型四大类。其中,基本类型分为整型、字符型、实型三类。实型又称浮点型,包括单精度型和双精度型两种类型。

  (14)在C语言中,不正确的int类型的常数是_______。

  A)32768 B)0 C)037 D)0xAF

  (14)A

  知识点:int类型的范围

  评 析: c语言中int类型的常数的范围是:-32768~32767。c整常数可用三种形式表示:十进制整数,八进制整数,十六进制整数。选项A超出范围,不正确。

  (15)下列描述中不正确的是_______。

  A)字符型数组中可以存放字符串

  B)可以对字符型数组进行整体输入、输出

  C)可以对整型数组进行整体输入、输出

  D)不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值

  (15)C

  知识点:对数组的理解

  评 析: c语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、输出可以将整个字符串一次输入或输出。所以,选项C的说法是不正确的。

  (16)以下程序的输出结果是_______。

  main()

  { int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p。&x[1][1];

  for(i=0;i<4;i+=2)printf("%d",p[i]];

  }

  A)5 2 B)5 1 C)5 3 D)9 7

  (16)C

  知识点:通过指针引用数组元素

  评 析:题中*p=&x[1][1];是指将数组x的数组元素x[1][1]的地址赋值给指针变量p,使p指向x[l][l]这个数组元素,那么p[0]即为指针变量p当前所指向的数组元素x[l][1]的值。具体执行时如下所示:

  i=0时,输出p[0],也就是x[1][1],输出是5:

  i=2时,输出p[2],即p[2+0],也就是x[2][0],输出是3。

  (17)以下程序的运行结果是_______。

  #include "stdio.h"

  main()

  {

  int a[]={1,2,3,4,5,6,7,8,9,10,11,12};

  int*p=a十5,*q=NULL;

  *q=*(p+5);

  printf("%d %d ",*p,*q);

  }

  A)运行后报错 B)6 6

  C)6 12 D)5 5

  (17)A

  知识点:通过指针引用数组

  评 析:题目中没有给q分配存储单元,只是简单地给它赋了一个值,所以程序的运行结果是6 ll NULL pointer assignment,也就是运行后报错。

  (18)以下说法中正确的是________。

  A)c语言程序总是从第一个函数开始执行

  B)在C语言程序中,要调用函数必须在main()函数中定义

  C)C语言程序总是从main()函数开始执行

  D)c语言程序中的main()函数必须放在程序的开始部分

  (18)C

  知识点: C程序的运行顺序

  评 析:c语言的程序是由主函数main()开始运行,由主函数来调用其他函数,所以选项A错误;c语言中定义的函数必须是并列的,不能在一个函数中定义其他函数,选项B错误;函数必须先定义后使用,在调用函数之前要定义函数,而mmn()函数不一定要放在程序的开始部分,故选项D错误。

  (19)能正确表示a和b同时为正或同时为负的逻辑表达式是________。

  A)(a>=0l lb>=0)&&(a<0I lb<0) a="">=0&&b>--0)&&(a<0&&b<o)< p="">

  C)(a+b>0) &&(a+b<=0) b="">0

  (19)D

  知识点:对逻辑表达式的判断

  评 析:逻辑表达式是指用逻辑运算符将关系表达式或逻辑量连接起来。

  选项A中,表达式表示的是a,b为异号;

  选项B中,表达式表示的是0,因为没有满足条件的值;

  选项C中,表达式表示的是0,因为没有满足条件的值;

  选项D表示的是a和b为同号。

  (20)若己定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[l]地址的表达式是________。

  A)p+l B)a+l C)a++ D)++p

  (20)C

  知识点:数组地址的表示

  评 析:数组名是指针常量,是个固定的指针,不能对数组名赋予一个新的地址值,也不能使这个指针常量“移动”,指向数组的其他元素。