收藏 分享(赏)

计算机二级串讲资料.doc

上传人:wspkg9802 文档编号:7202286 上传时间:2019-05-09 格式:DOC 页数:93 大小:812KB
下载 相关 举报
计算机二级串讲资料.doc_第1页
第1页 / 共93页
计算机二级串讲资料.doc_第2页
第2页 / 共93页
计算机二级串讲资料.doc_第3页
第3页 / 共93页
计算机二级串讲资料.doc_第4页
第4页 / 共93页
计算机二级串讲资料.doc_第5页
第5页 / 共93页
点击查看更多>>
资源描述

1、第一部分 考纲的基本知识结构及其考纲和考试重点分析第一部分 考试大纲分析公共基础考试内容一、基本数据结构与算法1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度) 。2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。5.线性单链表、双向链表与循环链表的结构及其基本运算。6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)

2、。二、程序设计基础1.程序设计方法与风格2.结构化程序设计。3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。三、软件工程基础1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。3.结构化设计方法,总体设计与详细设计。4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。5.程序的调试,静态调试与动态调试。四、数据库设计基础1.数据库的基本概念:数据库,数据库管理系统,数据库系统。2.数据模型,实体联系模型及 ER 图,从 ER 图导出关系数据模型。3.关系代数运算,

3、包括集合运算及选择、投影、连接运算,数据库规范化理 论。4.数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略。考试方式1.公共基础知识的考试方式为笔试,与C 语言程序设计的笔试部分合为一张试卷,公共基础知识部分占全卷的 30 分。2.公共基础知识有 l0 道选择题和 5 道填空题。C 语言程序设计基本要求1.熟悉 TURBO C 集成环境。2.熟练掌握结构化程序设计的方法,具有良好的程序设计风格。3.掌握程序设计中简单的数据结构和算法。4.TURBO C 的集成环境下,能够编写简单的 C 程序,并具有基本的纠错和调试程序的能力。C 语言程序设考试内容一、C 语言的结构1.

4、程序的构成,MAIN 函数和其他函数。2.头文件,数据说明,函数的开始和结束标志。3.源程序的书写格式。4.C 语言的风格。二、数据类型及其运算1.C 的数据类型(基本类型,构造类型,指针类型,空类型)及其定义方法。2.C 运算符的种类、运算优先级和结合性。3.不同类型数据间的转换与运算。4.C 表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。三、基本语句1.表达式语句,空语句,复合语句。2.数据的输入与输出,输入输出函数的调用。3.复合语句。4.GOTO 语句和语句标号的使用。四、选择结构程序设计1.用 IF 语句实现选择结构。2.用 SWIT

5、CH 语句实现多分支选择结构。3.选择结构的嵌套。五、循环结构程序设计1.FOR 循环结构。2.WHILE 和 DO WHILE 循环结构。3.CONTINUE 语句和 BREAK 语句。4.循环的嵌套。六、数组的定义和引用1.一维数组和多维数组的定义、初始化和引用2.字符串与字符数组。七、函数1.库函数的正确调用。2.函数的定义方法。3.函数的类型和返回值。4.形式参数与实在参数,参数值的传递。5.函数的正确调用,嵌套调用,递归调用。6.局部变量和全局变量。7.变量的存储类别(自动,静态,寄存器,外部) ,变量的作用域和生存期。8.内部函数与外部函数。八、编译预处理1.宏定义:不带参数的宏定

6、义;带参数的宏定义。2.“文件包含”处理。九、指针1.指针与指针变量的概念,指针与地址运算符。2.变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体的指针变量。通过指针引用以上各类型数据。3.用指针作函数参数。4.返回指针值的指针函数。5.指针数组,指向指针的指针,MAIN函数的命令行参数。十、结构体(即“结构” )与共用体(即“联合” )1.结构体和共用体类型数据的定义方法和引用方法。2.用指针和结构体构成链表,单向链表的建立、输出、删除与插入。十一、位运算1.位运算符的含义及使用。2.简单的位运算。十二、文件操作只要求缓冲文件系统(即高级磁盘 I/O系统) ,对

7、非标准缓冲文件系统(即低级磁盘 I/O 系统)不要求。1.文件类型指针(FILE 类型指针) 。2.文件的打开与关闭(FOPEN,FCLOSE) 。3.文件的读写(FPUTC,FGETC,FPUTS ,FGETS,FREAD, FWRITE,FPRINTF,FSCANF 函数) ,文件的定位(REWIND,FSEEK 函数) 。考试方式1.笔试:120 分钟,满分 100 分,其中含公共基础知识部分的 30 分。2.上机:60 分钟,满分 100 分。上机操作包括:(1) 填空; (2)改错; (3)编程。第二部分 公共基础知识和 C 语言基本知识的重点分析重点难点知识讲解C 语言之指针、数组

8、和函数基本解释1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址) ;数组的本质则是一系列的变量。2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变” ,所以我们常用指针来操作动态内存。3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。 问题:指针与数组听说 char a 与 char *a 是一致的,是不是这样呢?答案与分析:指针和数组存在着一些本质的区别。当然,在某种情况下,比如数组作为函数的参数进行传递时,由于该数组自动退化为同类型的指针,所以在函数内部,作

9、为函数参数传递进来的指针与数组确实具有一定的一致性,但这只是一种比较特殊的情况而已,在本质上,两者是有区别的。请看以下的例子:char a = “Hi, pig!“;char *p = “Hi, pig!“;上述两个变量的内存布局分别如下:数组 a 需要在内存中占用 8 个字节的空间,这段内存区通过名字 a 来标志。指针 p 则需要 4 个字节的空间来存放地址,这 4 个字节用名字 p 来标志。其中存放的地址几乎可以指向任何地方,也可以哪里都不指,即空指针。目前这个 p 指向某地连续的 8 个字节,即字符串“Hi, pig!” 。另外,例如:对于 a2和 p2,二者都返回字符i ,但是编译器产

10、生的执行代码却不一样。对于 a2,执行代码是从a 的位置开始,向后移 动 2 两个字节,然后取出其中的字符。对于 p2,执行代码是从 p 的位置取出一个地址,在其上加 2,然后取出对应内存中的字符。问题:数组指针为什么在有些时候我们需要定义指向数组而不是指向数组元素的指针?如何定义?答案与分析:使用指针,目的是用来保存某个元素的地址,从而来利用指针独有的优点,那么在元素需要是数组的情况下,就理所当然要用到指向数组的指针,比如在高维需要动态生成情况下的多维数组。定义例子如下: int (*pElement)2。下面是一个例子: int array23 = 1,2,3,4 ,5,6;int (*p

11、a)3; /定义一个指向数组的指针 pa = / /将打印 array00,即 1 pa+; / 猜一猜,它指向谁?array1?对了!printf (“%d“, (*pa)0); / 将打印 array10,即 4上述这个例子充分说明了数组指针一种指向整个数组的指针的定义和使用。需要说明的是,按照我们在第四篇讨论过的,指针的步进是参照其所指对象的大小的,因此,pa+将整个向后移 动一个数组的尺寸,而不是仅仅向后移 动一个数组元素的尺寸。问题:指针数组有如下定义:struct UT_TEST_STRUCT *pTo2MAX_NUM;请分析这个定义的意义,并尝试说明这样的定义可能有哪些好处?答案

12、与分析:前面我们谈了数组指针,现在又提到了指针数组,两者形式很相似,那么,如何区分两者的定义呢?分析如下:数组指针是:指向数组的指针,比如 int (*pA)5。指针数组是:指针构成的数组,比如int *pA5。至于上述指针数组的好处,大致有如下两个很普遍的原因:a)、各个指针内容可以按需要动态生成,避免了空间浪费。b)、各个指针呈数组形式排列,索引起来非常方便。在实际编程中,选择使用指针数组大多都是想要获得如上两个好处。 问题:指向指针的指针在做一个文本处理程序的时候,有这样一个问题:什么样的数据结构适合于按行存储文本?答案与分析:首先,我们来分析文本的特点,文本的主要特征是具有很强的动态性

13、,一行文本的字符个数或多或少不确定,整个文本所拥有的文本行数也是不确定的。这样的特征决定了用固定的二维数组存放文本行必然限制多多,缺乏灵活性。这种场合,使用指向指针的指针有很大的优越性。现实中我们尝试用动态二维数组(本质就是指向指针的指针)来解决此问题:图示是一个指针数组。所谓动态性指横向(对应每行文本的字符个数)和纵向(对应整个文本的行数)两个方向都可以变化。就横向而言,因为指针的灵活性,它可以指向随意大小的字符数组,实现了横向动态性。就竖向而言,可以动态生成及扩展需要的指针数组的大小。下面的代码演示了这种动态数组的用途:/ 用于从文件中读取以 0结尾的字符串的函数extern char *

14、getline(FILE *pFile);FILE *pFile;char *ppText = NULL; / 二维动态数组指针 char *pCurrText = NULL; / 指向当前输入字符串的指针ULONG ulCurrLines = 0;ULONG ulAllocedLines = 0; while (p = getline(pFile))if (ulCurrLines = ulAllocedLines)/ * 当前竖向空间已经不够了,通过realloc 对其进行扩展。ulAllocedLines += 50; / 每次扩展 50 行。ppText = realloc (ppTex

15、t, ulAllocedLines * (char *);if (NULL = ppText)return; / 内存分配失败,返回 ppTextulCurrLines+ = p; / 横向“扩展”,指向不定长字符串 问题:指针数组与数组指针与指向指针的指针指针和数组分别有如下的特征:指针:动态分配,初始空间小数组:索引方便,初始空间大下面使用高维数组来说明指针数组、数组指针、指向指针的指针各自的适合场合。多维静态数组:各维均确定,适用于整体空间需求不大的场合,此结构可方便索引,例 a1040。数组指针:低维确定,高维需要动态生成的场合,例 ax40。指针数组:高维确定,低维需要动态生成的场合

16、,例 a10y。指向指针的指针:高、低维均需要动态生成的场合,例 axy。问题:数组名相关问题假设有一个整数数组 a,a 和int *p = 0;p = a; /* p 指向 a0所在的地方 */x = *p; /* x = a0 = 1*/p = /* 编译器会提示你错误,*/*显示整数指针与整数数组指针不一样 */问题:函数指针与指针函数请问:如下定义是什么意思:int *pF1();int (*pF2)();答案与分析:首先清楚它们的定义:指针函数,返回一个指针的函数。函数指针,指向一个函数的指针。可知:pF1 是一个指针函数,它返回一个指向 int 型数据的指针。pF2 是一个函数指针

17、,它指向一个参数为空的函数,这个函数返回一个整数。计算机二级 C 语言典型题解析例题 1void f(int a, int i, int j) int t;if(iScore pj-Score) t=pi; pi=pj; pj=t;printf(“%d %dn“, s1.Score, p1-Score);执行后输出结果是A)550 550 B)680 680 C) 580 550 D)580 680答案:C解析:本题算法类似于“冒泡排序“,它是依次将 p0、p1、p2 、p3、p4分别指向s5中成员 Score 从低到高排列的数组单元,即 537、550、580、680、703,而 s5数组的

18、值不变,因此,s1.Score=580,p1-Score=550.有以下程序(提示:程序中 fseek(fp, -2L*sizeof(int), SEEK_END);语句的作用是使位置指针从文件末尾向前移 2*sizeof(int)字节)#include main() FILE *fp; int i, a4=1,2,3,4,b;fp=fopen(“data.dat“, “wb“);for(i=0;i1)层上至多有 2i-1 个结点。得到第 8 层的结点数最多是 128。(4)下面描述中,不符合结构化程序设计风格的是_。A)使用顺序、选择和重复( 循环 )三种基本控制结构表示程序的控制逻辑B)自

19、顶向下C)注重提高程序的执行效率D)限制使用 goto 语句(4)C知识点:结构化程序设计评 析:结构化程序设计方法的四条原则是:1自顶向下:2逐步求精;3模块化;4限制使用 goto 语句。 “自顶向下 ”是说,程序设计时,应先考虑总体,后考虑细节,先考虑全局目标,后考虑局部目标;“逐步求精 是说,对复杂问题,应设计一些子目标作过渡,逐步细节化;“模块化”是说,一个复杂问题肯定是由若干稍简单的问题构成,解决这个复杂问题的程序,也应对应若干稍简单的问题,分解成若干稍小的部分。(5)下面概念中,不属于面向对象方法的是_。A)对象、消息 B)继承、多态 C)类、封装 D)过程调用(5)D知识点:面

20、向对象的程序设计方法、对象、方法、属性及继承与多态性评 析:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是_。A)可行性分析 B)需求分析 C)详细设计 D)程序编码(6)B知识点:结构化设计方法评 析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流程图和数据字典。(7)软件生命周期中所花费用最多的阶段是_。A)详细设计 B)软件编码 C)软件测试 D)软件维护(7)D

21、知识点:软件工程基本概念,软件生命周期概念,软件工具与软件开发环境评 析:软件生命周期分为软件定义、软件开发及软件运行维护 3 个阶段。本题中详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。(8)数据库系统的核心是_。A)数据模型 B)DBMS C)软件工具 D)数据库(8)B知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统评 析:数据库管理系统 DBMS 是数据库系统的核心。DBMS 是负责数据库的建立、使用和维护的软件。DBMS 建立在操作系统

22、之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过 DBMS。另外,DBMS 还承担着数据库的安全保护工作,按照 DBA 所规定的要求,保证数据库的完整性和安全性。(9)下列叙述中正确的是_。A)数据处理是将信息转化为数据的过程 B)数据库设计是指设计数据库管理系统C)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字D)关系中的每列称为元组,一个元组就是一个字段(9)C知识点:数据模型,实体联系模型及 E-R 图,从 E-R 图导出关系数据模型评 析:数据处理是指将数据转换成信息的过程,故选项 A 叙

23、述错误;设计数据库的目的实质上是设计出满足实际应用需求的实际关系模型,故选项 B 叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性。对应存储文件中的字段,故 D 选项叙述错误。(10)下列模式中,_是用户模式。A)内模式 B)外模式 C)概念模式 D)逻辑模式(10)B知识点:数据库的基本概念:数据库,数据库管理系统,数据库系统评 析:数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或称子模式,或称用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和

24、。外模式是模式的一部分。内模式,或称存储模式,或称物理模式,是指数据在数据库系统内的存储介质上的表示。即对数据的物理结构和存取方式的描述。(11)C 语言规定,程序中各函数之间_。A)既允许直接递归调用也允许间接递归调用B)不允许直接递归调用也不允许间接递归调用C)允许直接递归调用不允许间接递归调用D)不允许直接递归调用允许间接递归调用(11)A知识点:函数的递归调用评 析:c 语言规定,程序中各函数之间既允许直接递归调用也允许间接递归调用。(12)C 语言中下列叙述正确的是_。A)不能使用 do-while 语句构成的循环B)do-while 语句构成的循环,必须用 break语句才能退出C

25、)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 语言的数据类型分为基本类型、构造类型、指针类型、空

26、类型四大类。其中,基本类型分为整型、字符型、实型三类。实型又称浮点型,包括单精度型和双精度型两种类型。(14)在 C 语言中,不正确的 int 类型的常数是_。A)32768 B)0 C)037 D)0xAF(14)A知识点:int 类型的范围评 析: c 语言中 int 类型的常数的范围是:-3276832767。c 整常数可用三种形式表示:十进制整数,八进制整数,十六进制整数。选项 A 超出范围,不正确。(15)下列描述中不正确的是_。A)字符型数组中可以存放字符串B)可以对字符型数组进行整体输入、输出C)可以对整型数组进行整体输入、输出D)不能在赋值语句中通过赋值运算符“= ”对字符型数

27、组进行整体赋值(15)C知识点:对数组的理解评 析: c 语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、输出可以将整个字符串一次输入或输出。所以,选项 C 的说法是不正确的。(16)以下程序的输出结果是_。main() int i,x33=9,8,7,6,5,4,3,2,1,*p。ch10-ch14 的值分别为:8,2,5,4,0;第一个 for 循环用于将数组指针分别指向二维数组的第一行和第二行;第二个 for 嵌套循环用于取出pO0,p02,p1O,p12四个存储单元的数组成一个四位数进行输出。具体执行过程如下:i=O:j=0:s=O+(pOO-0) ;即 s=6(“

28、pO0-0”通过 ASCII 码相减的方法将字符转换成数字)j=2:s=60+(p02-O):即 s=63i=l:j:0:s=630+(p10-0);即 s=638j=2:s=6380+(p12-0);即 s=6385(117)若变量已正确定义并赋值,下面符合c 语言的表达式是_。A)a: b+1 B)a=b=c+2 C)int 1853 D)a=a+7=c+b(117)B知识点:表达式类型和求值规则评析:选项 A 和 c 一望而知其错;对于表达式 a=a+7=c+b(答案 D),是先执行赋值表达式 a+7=c+b,再把这个表达式的值赋给a,显然,表达式 a+7=c+b 非法,因为赋值表达式的

29、左侧不能为常量或表达式。(118)C 语言运算对象必须是整型的运算符是_。A) B) C)= D)=10 0r a=0 a=10 & a=10 a2)return(fib(n-1)+fib(n-2); else return(2);main() printf(ldn,fib(3);该程序的输出结果是_。A)2 B)4 C)6 D)8(131)B知识点:函数的递归调用评析:函数仃 b 内部有两个递归调用,当n=3 时,fib(n-1) 返回 2,fib(n-2)也返回 2,所以 fib(n-1)+fib(n 一 2)的值为 4。(132)在 c 语言中,函数中变量的隐含存储类别是_。A)auto

30、 B)static C)extern D)无存储类别(132)A知识点;函数中变量的存储类别评析:函数中变量的存储类别包括auto,static,extem,其中 auto 为隐含存储类别,static 为静态存储类别,register 是寄存器存储类别。(133)有如下程序#define n 2#define m N+I#define NUM 2*m+lmain() int i;for(i=l; i=NUM;i+)printf(dn ,i);该程序中的 for 循环执行的次数是_。A)5 B)6 C)7 D)8(133)B知识点:宏定义的应用评析:在 c 语言中,宏定义在编译时将被直接替换所

31、以 NUM 最后会被替换成2*N+1+1,即 2*2+l+l,值为 6。因此,for循环执行的次数为 6。(134)有以下函数char *fun(char*p)return p; 该函数的返回值是_。A)无确切的值 B)形参 p 中存放的地址值C)一个临时存储单元的地址 D)形参 p 自身的地址值(134)B知识点:返回指针值的指针函数评析:p 本身就是一个字符型指针变量,返回 p 也就是返回变量 p 中存放的地址值。(135)有如下程序段int a=14,b=15,x;char c=A:x=(a b) (cB);执行该程序段后,x 的值为_。A)true B)false C)0 D)1(135)D知识点:逻辑表达式的运算评析: a&b 的值为 true,cB的值也为true,所以 (a&b)&(cB)的值为true。但 x 是 int 型变量,所以 (a&b)&(cB)的值最后要从 bool 型转换为int 型赋给 x。这样 x 的值应为 l。(136)若 fp 是指向某文件的指针,且已读到此文件末尾,则库函数 feof(fp)的返回值是

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报