公共基础1.1算法特征1)可行性(3)有穷性(运行时间的有限)2)确定性(4)拥有足够的情报(输入可以没有)结构化程序的组成:顺序结构、选择结构、循环结构。
复杂度:时间复杂度(运算次数)和空间复杂度(存储空间)。
两者无直接关系1.3线性表在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。
线性表存储空间不一定连续,且各元素的存储顺序是任意的。
1.4栈和队列栈(一端操作)按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据,栈具有记忆作用。
队列(两端操作)是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。
(队尾插入,队头删除) 1.6树与二叉树AB CD E F GH I J K L M N OP Q R二叉树的遍历:前序遍历结果是:A、B、D、H、P、Q、I、R、E、J、K、C、F、L、M、G、N、O中序遍历结果是:P、H、Q、D、R、I、B、J、E、K、A、L、F、M、C、N、G、O后序遍历结果是:P、Q、H、R、I、D、J、K、E、B、L、M、F、N、O、G、C、A(1)前序遍历(DLR),首先访问根结点,然后遍历左子树,最后遍历右子树;(2)中序遍历(LDR),首先遍历左子树,然后访问根结点,最后遍历右子树;(3)后序遍历(LRD),首先遍历左子树,然后访问遍历右子树,最后访问根结点。
满二叉树是指除最后一层外,每一层上的所有结点有两个子结点,每一层上有2n-1个结点;总共2n-1个结点.完全二叉树是指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。
叶子结点总是比度为2的结点多一个。
总结点数=叶子结点+度为1的结点+度为2的结点.例:某二叉树总共有60个叶子结点和59个度为1的结点,求总结点数(169)1.7查找技术二分法查找只适用于顺序存储的线性表,对于长度为n的有序线性表,最坏情况只需比较log2n次。
1.8排序技术冒泡排序:快速排序:直接插入排序:最坏比较次数都为n(n-1)/2。
2.2结构化程序设计与分析四条原则: 1.模块化; 2.逐步求精;3.自顶向下;4.限制使用goto语句。
在结构化分析使用的数据流图(DFD)中,利用数据字典对其中的图形元素的进行确切解释。
3.3结构化设计方法(1)自顶向下(2)逐步细化(3)模块化设计(4)结构化编程衡量软件模块独立性使用耦合性和内聚性两个定性的度量标准。
优秀软件应高内聚,低耦合。
2.3面向对象的程序设计基本特点:(1)封装性;(2)继承性;(3)多态性;(4)标识惟一性;(5)模块独立性好。
类描述的是具有相似属性与操作的一组对象,而一个具体对象则称为类的实例。
3.4软件测试软件测试的目的:发现错误而执行程序的过程;设法暴露程序中的错误。
程序员应避免测试自己的程序。
软件测试方法:静态测试和动态测试(基于计算机的测试,包括白盒测试和黑盒测试。
)黑盒测试包括等价类划分法、边界值分析法、错误推测法。
提高软件的生产效率主要方法:软件可复用性.3.4软件生命周期分为三个阶段:定义阶段、开发阶段、维护阶段。
详细设计和编码、测试都属于开发阶段。
3.5程序的调试程序调试的任务是诊断和改正程序中的错误,主要在开发阶段进行。
程序设计的风格:清晰第一,效率第二。
4.1数据库系统的基本概念数据库系统:由数据库(数据)、数据库管理系统(软件;是数据库的核心)、数据库管理员(人员)、硬件平台(硬件)、软件平台(软件)五个部分构成的运行实体。
数据库应用系统:由数据库系统、应用软件及应用界面三者组成。
数据库系统的基本特点:数据的集成性、数据的高共享性与低冗余性、数据独立性(物理独立性与逻辑独立性)、数据统一管理与控制。
数据库技术的根本目标是要解决数据的共享问题数据库设计的四个阶段:需求分析;概念设计;逻辑设计;物理设计数据库系统的三级模式:(1)概念模式:数据库系统中全局数据逻辑结构的描述,全体用户公共数据视图;(2)外模式:也称子模式与用户模式。
是用户的数据视图,也就是用户所见到的数据模式;(3)内模式:又称物理模式,它给出了数据库物理存储结构与物理存取方法。
索引属于内模式。
数据库系统的两级映射:(1)概念模式到内模式的映射;(2)外模式到概念模式的映射。
数据库系统模型:(1)层次模型的基本结构是树形结构(2)网状模型是一个不加任何条件限制的无向图。
(3)关系模型采用二维表来表示,简称表,每一个二维表称为一个关系,行称为元组,列称为属性。
4.1数据结构分为逻辑结构和存储结构。
逻辑结构:数据集合中各数据元素之间所固有的逻辑关系。
存储结构:在对数据进行处理时,各数据元素在计算机中的存储关系。
循环队列属于顺序存储结构。
4.2数据模型E-R模型用:椭圆表示属性;菱形表示实体间的联系;矩形表示实体集。
E-R模型的图示法:(1)实体集表示法;(2)属性表示法;(3)联系表示法。
数据的物理结构和逻辑结构有高度独立性,结构不必一致。
上机考试1、填空题应注意:(1)一般设置3个填空;(2)填空后应将填空序号和填空下划线删除,防止编译出错。
2、修改题应注意:(1)错误一般有2个或3个;(2)错误一般位于每个found之下一行或两行范围之内。
3、编程题应注意:(1)编程题一般都是在被调用的函数之内编写;(2)所编写的被调用的函数要与调用函数保持和谐统一,符合被调用与调用的关系。
知识点1.符号常量(宏定义):不能被赋值。
2.标识符:只能由字母、数字、下划线组成,且数字不能开头。
注意关键字。
3.字母e(或E)的前后必须有数字,且e后面的指数必须为整数。
4.取余运算%的前后必须都为整数。
除法运算:5/2=2(舍去余数)5.字符常量:用单撇号括起来的一个字符。
但‘\’、‘’’除外。
6.转义字符:双引号括起来的。
“\t”跳到下一个tab位置,一般两个空格;“\b”退格,退到前一列;“\r”回车,将当前位置移到本行开头。
7.字符串常量:用一对双撇号括起来的字符序列(0个或多个字符)8.字符变量:只能存放一个字符,不能存放字符串。
即char c=“as”;(错)注意char c[]=”as”是对的。
9.将一个int、short、long型数据赋给一个char型变量时,只将其低八位原封不动地送到char变量10.else总是与它上面的最近的未配对的if配对。
11.break:跳出循环。
仅能用于循环语句和switch语句中12.continue:结束本次循环。
13.一维数组的初始化必须写成一句。
即int a[]={1,2,3,4,5};(对)int a[];a[]={1,2,3,4,5};(错)14.对二维数组赋初值时,第一维可以省略,第二维不能省略。
即a[][4](对);a[3][](错);a[][](错)。
15.字符数组的输入输出(1)逐个字符输入输出:用格式符“%c”。
(2)对整个字符串输入输出:用格式符“%s”例char c[]={“china”};printf(“%s”,c);另外注意scanf(“%s”,c)它不需要取地址符。
数组名代表一个数组的起始地址。
16.用puts和gets函数只能输入或输出一个字符串。
即puts(ste1,ste2)是错的17.strcat(字符数组1,字符数组2)作用是将2连到1的后面。
注意1的长度要足够大,a[]=”asd”此数组长度不是足够大。
18.strcpy(字符数组1,字符数组2)作用是将2复制到1中。
注意1要足够大,且1要写成数组名形式,2可以是数组名,也可以是字符串常量,如strcpy(str1,”china”)。
strcpy(str1,str2,2)意思是将2中的最前面的2个字符复制到1中,取代1中原有的最前面2个字符。
19.strcmp(字符串1,字符串2)作用比较1和2谁大,值是(串1减串2)大于为正整数等于为零小于为负整数。
20.strlen(字符数组)作用测试字符串的实际长度,也可以直接测试字符串长度,遇到结束字符就停止。
例char str[10]={“china”};printf(“%d”,strlen(str));输出结果不是10,也不是6,而是5.C har[]={“0asdd”}结果为0。
21.strlwr(字符串)作用将字符串中的大写字母变成小写字母。
22.strupr(字符串)作用将字符串中的小写字母变成大写字母。
23.函数不能嵌套定义。
一个源程序文件就是一个编译单位。
24.函数定义:类型标识符函数名(形式参数表列)类型标识符(即函数类型)决定函数的返回值类型。
例void表示不需要带回函数值,此时函数体内不得出现return语句。
但要注意里面是否有printf语句25.对函数的声明和定义不是一回事。
26.递归调用:用if语句来控制是否继续27.数组名也可作实参和形参,传递的是数组首元素的地址。
28.若同一个源文件中,外部变量与局部变量同名,则在局部变量作用范围内,外部变量就不起作用了。
29.变量的划分:按作用域(即空间)分全局变量和局部变量;按存在时间(即生存期)分静态存储方式和动态存储方式。
30.每个变量和函数有两个属性,一个是数据类型(如整形,字符型等),一个是数据的存储类别(即静态存储类和动态存储类,具体包括自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern))。
31.auto变量:包括函数中的形参和函数中定义的变量,即未加static32.static变量:特点保留上一次计算值,静态局部变量属于静态存储类别,只在编译时赋初值一次33.register变量:只有局部自动变量和形式参数可以做寄存器变量,静态变量是不行的,例register static int a,b,c;是错的34.extern变量:定义全局变量时用。
作用一一个文件内声明外部变量,作用二多文件的声明35.static声明外部变量:加上static表示只能用于本文件,若不加或加上extern表示可被别的文件使用36.用auto/register/static声明变量时,是在定义变量时加上这些关键字,而不能单独使用。
例int a;static a;这是错的37.宏定义不是C语言语句,不必加分号。
用#undef命令终止宏定义38.在宏定义时,在宏名与带参数的括号之间不应加空格39.宏定义不占运行时间,之占编译时间40.一个#include命令只能指定一个被包含文件41.指针P可以P++;但数组名A不可以A++。
因为数组名是指针常量42.#define SUB(a)(a)-(a)d=USB(a+b)*c;展开式为d=(a+b)-(a+b)*c。