C语言公共基础知识.docx
- 文档编号:5060207
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:14
- 大小:90.88KB
C语言公共基础知识.docx
《C语言公共基础知识.docx》由会员分享,可在线阅读,更多相关《C语言公共基础知识.docx(14页珍藏版)》请在冰豆网上搜索。
C语言公共基础知识
公共基础知识
一.数据结构
1算法的基本特征:
可行性、确定性、有穷性、拥有足够的情报
2算法的基本要素:
①对数据对象的运算和操作(+-*/)
②算法的控制结构,及运算或操作间的顺序
3数据结构的内容:
数据元素的信息、数据的前后关系
4数据的存储方式:
顺序存储结构、链式存储结构
*5线形结构的满足条件:
①有且只有一个根结点
②每一个结点最多有一个前件,也最多有一个后件(及一个挨着一个)
(非线性结构没有以上条件,如树形结构)
*6数据结构的类型:
线性结构、树形结构、网状结构、元素
7线性表的顺序存储结构:
①线性表中所有元素所占的
存储空间是连续的
②线性表中各元素在存储空
间中是按逻辑顺序依次存放的
8线性表包括顺序线性表和线性链表
二.栈、队列和树
1栈的定义:
它是一种特殊的线性表,他所有的插入与删除都限定在表的同一端进行。
在栈中,一端是封闭的,另一端是开口,允许插入和删除元素。
允许插入的一端称为栈顶,另一端称为栈底,当栈中没有元素的时候称为空栈。
*2栈的特点:
后进先出、先进后出
3栈的基本运算有三种:
入栈、退栈和读栈顶元素
4队列的定义:
只允许一端进行插入,而另一端只进行删除的线性表。
允许删除的一端称为队头,允许插入的一端称为队尾
*5队列的特点:
先进先出,后进后出
6循环队列的运算:
入队运算、退队运算
*7树是一种简单的非线性结构
*8树的各部分的相关术语
根结点:
没有前件的结点(只有一个)
父结点:
只有一个前件的结点
子结点:
有多个后件的结点
叶子结点:
没有后件的结点
度:
在数结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度
深度:
即一个树结构拥有的层数
子树:
在树中,以某个结点为根构成的树称为该结点的子树
9空二叉树没有结点,非空二叉树有且只有一个根结点
10二叉树的最大度数为2
*11满二叉树:
除了最后一层外,其它各层的结点都有两个字结点(即第n层有2的n-1方个结点)
*12完全二叉树:
除了最后一层外,其它各层的结点数均达到最大值,最后一层缺少若干结点
*13二叉树的性质
1二叉树的第n层,最多有(2的n-1次方)各结点
2深度为n的二叉树中,最多有(2的n次方-1)个结点
3对任何一颗二叉树,叶子结点总比度为2的结点多一个,即叶子结点数为n+1(n表示度为2的个数)
4具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示去log2n的整数部分
5一个二叉树的结点数等于n+2*m(n表示度为1的个数,m表示度为2的个数)
*14二叉树的遍历可分为3种:
前序遍历,中序遍历,
后序遍历(见下方说明)
即二叉树的遍历结果为ABDHEICFJG
15线性表不管是顺序存储,还是链式存储的结构,都只能用顺序查找
*16排序方法有:
冒泡排序、简单插入排序、简单选择排序、快速排序、堆排序(在最坏情况使用堆排序效率最快)
三.程序设计
*1结构化程序设计方法的原则:
自顶向下、逐步求精、模块化、限制使用goto语句
2程序结构包含有:
顺序结构、选择结构、重复结构
*3面向对象包括对象、类和实例、消息、继承、多态性
4对象的基本特点:
标识唯一性、分类性、多态性、封装性、模块独立性好
5消息传递是对象间通信的手段,一个对象通过向另一
对象发送信息来求其服务
6继承是指能够直接获得已有的性质和特征,而不必重复地定义它们
7对象根据所接收的消息而做出动作,同样的消息被不同的对象接收时可导致完全不同的行为,该现象称为多态性
四.软件工程基础
1计算机软件包括了:
程序、数据、文档
2软件的特点
1软件是一种逻辑实体,具有抽象性
2软件没有明显的制作周期
3对硬件和环境具有依赖性
4软件在使用期间不存在磨损、老化问题
5软件复杂性高,成本昂贵
6软件开发涉及诸多的社会问题
*3软件的分类:
1系统软件(egC语言)
2应用软件(egWord/QQ)
3支撑软件(开发和维护软件产品的工具软件)
4软件工程的原则:
抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性、可验证性
5软件的周期包括:
软件定义期、软件开发期、运行维护期
*6需求分析工作:
需求获取、需求分析、编写需求规格书和需求评审
7需求分析方法:
结构化分析方法、面向对象的分析方法
*8结构化分析方法的常用工具:
数据流图、数据字典、判定表、判定树
9软件需求规格说明书是确保软件质量的有力措施,是软件开发过程中的重要文档之一
*10软件设计基本的原则:
1模块化(划分数目不宜太多或太少)
2抽象(有概gai括性)
3信息隐蔽性
4模块独立性(要求内聚性高、耦合性低)
11软件概要设计的基本任务:
1设计软件系统结构
2数据结构及数据库设计
3编写概要设计文档
12结构图有4种模块类型:
协调模块、传入模块、变换模块、传出模块
*13过程设计工具:
程序流程图(PFD)、N-S图、PAD图、PDL
*14软件测试有许多种方法,根据软件是否需要被执行,可分为静态测试和动态测试(上机测试),按照功能划分,可分为白盒测试(各模块测试)和黑盒测试(举例测试)
15白盒测试包括:
逻辑覆盖测试(模块测试),基本路经测试
16黑盒测试地方法有:
等价类划分法、边界值分析法、错误推测法
*17软件测试的实施的4个步骤:
单元测试、集成测试、确认测试(验收测试)和系统测试
*18软件调试方法:
强行排错法、回溯法、原因排除法
五.数据库设计基础
1数据库是指长期存储在计算机内的、有组织的、可共享的数据集合,它具有两大特点即“集成”和“共享”
2数据库管理系统的功能:
①数据模式定义
②数据存取的物理构建
③数据操纵
4数据完整性、安全性的定义与检查
5数据库的并发控制与故障恢复
6数据的服务
*3数据管理技术的发展经历了3个阶段:
人工管理阶段、文件系统阶段和数据库系统阶段
*4数据库系统的基本特点:
1数据集成性
2数据的共享相高,赘余性低
3数据独立性高
4数据统一管理与控制
5数据库系统的三级模式结构:
概念nian模式(ASCll码)
外模式(显示给用户看)、内模式(物理模式,如电信号)
6数据模型的三要素:
数据结构、数据操作和数据约束
7数据模型的类型:
1概念数据模型
2逻辑数据模型
3物理数据模型
*8实体间联系的类型:
一对一、一对多、多对多
*9几何图形表示E-R模型中的三个概念:
1实体集表示法(矩形)
2属性表示法(椭圆)
3联系表示法(棱leng形)
*10关系模型的完整性约束:
1实体完整性约束
2参照完整性约束
3用户定义的完整性约束
*11关系代数的基本运算:
1投影运算(pai[A](R))A为R的属性列
2选择运算6F(R)F表示选择条件
3笛卡尔积R*S
*12关系代数的扩充运算:
交、连接、除
13数据库管理工作:
1数据库的建立
2数据库的调整
3数据库的重组
4数据库安全性与完整性控制
5数据库的故障恢复
6数据库监控
常见考点
算法的空间复杂度是指算法执行过程中所需要的存储空间
软件工程的3个要素是:
工具、过程、方法
软件开发离不开系统环境资源支持,其中必要的测试数据属于辅助资源
结构化程序设计主要强调的是:
程序的易读性
关系模型较之格式化模型(网状模型、层次模型)有以下优点:
数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系、以及有坚实的理论基础
算法的复杂度有时间复杂度和空间复杂度。
算法的时间复杂度是指执行算法需要的工作量,可以用执行算法过程所需基本运算的执行次数来度量;算法的空间复杂度是指算法执行过程中所需要的存储空间
软件工程研究内容主要包括:
软件开发技术和软件工程管理
数据库保护分为:
安全性控制、完整性控制、开发性控制性和数据的恢复
算法的有穷性是指:
算法程序的运行时间是有限的
需求分析阶段的任务是确定软件系统功能
程序流程图中带有箭头的线段表示的是控制流
数据流程图中带有箭头的线段表示数据流
模块之间的耦合包括:
内容、公共、外部、控制、标记、数据、非直接耦合
软件需求规则说明书具有以下几个方面的作用:
①便于用户、开发人员进行交流和理解
②反映出用户问题的结构,可作为软件开发的基础和依据
③作为确认测试和验收的依据
数据库设计包括数据库概念设计和数据库逻辑设计两大方面
数据库设计过程3个步骤是:
概念设计、逻辑设计、物理设计
关系表中,每一行成为一个元组,对应表中的一条记录;每一列成为一个属性,对应表中的一个字段
数据库设计可分为以下几个阶段:
需求分析阶段、概念设计阶段、物理设计阶段、逻辑设计阶段、实施阶段及数据库运行和维护阶段
确认测试的任务是验收软件的功能和性能,以及其他特征是否满足需求;集成测试的主要目的是发现与接口有关的错误
顺序存储结构在数据的插入和删除操作上的效率比链式存储结构的要低
线性表的顺序存储结构和线性表的链式存储结构分别是随机存取的存储结构、顺序存取的存储结构
树的根结点数目是0(空树)或1
数据库是一个数据集合
数据库系统包括数据库和数据库管理系统
数据模型数据库设计的核心
软件生命周期中花费费用最多的阶段是软件维护
为了提高测试的效率,应该集中对付那些错误群集的程序
程序设计的主导风格是:
清晰第一、效率第二
数据处理的最小单位是数据项;若干的数据项组成数据元素
数据库系统的核心是数据库管理系统
软件定义期间包括可行性研究和需求分析两个阶段
软件维护活动包括以下几类:
改正性维护、适应性维护、完善性维护和预防性维护
软件测试的重要特征有:
测试的挑剔性、完全测试的不可能性及测试的经济性
软件测试过程按4个步骤进行,即:
单元测试、集成测试、确认测试和系统测试
数据处理是指将数据转换为信息的过程
数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构
数据模型包括:
层次模型、网状模型和关系模型
数据库保护可分为:
安全性控制、完整性控制、并发性控制和数据的恢复
软件开发模型包括瀑布模型、快速原型发模型和螺旋模型
关系R和S,若R-(R-S),则其中R-S表示属于R但不属于S,R-(R-S)表示
数据库技术的根本目标是要解决数据的共享问题
二叉树的遍历
前序遍历ABDHEICFJG
中序遍历HDBEIAJFCG
后序遍历HDIEBJFGCA
在数据库设计中,将E-R图转换成关系数据模型的过程属于逻辑设计阶段
常见的排序方法有插入排序、交换排序、选择排序
软件测试有许多种方法,根据软件是否需要被执行,可分为静态
测试(无须被执行)和动态测试(上机测试),按照功能划分可
分为白盒测试(各模块测试)和黑盒测试(举例测试)
数据流程图(DFD)可以用于需求分析阶段
软件按功能可以分为:
应用软件(教务管理软件)系统软件(编译程序、操作系统、汇编程序)支持软件(介于两者之间,协助用户开发软件的工具软件)
几何图形表示E-R模型中的三个概念:
①实体集表示法(矩形)
②属性表示法(椭圆)
③联系表示法(棱leng形)
程序流程图中棱形框包括逻辑判断
错题集
#defineF(x,y)x y: x Main() {intx,y,z; x=5;y=10; z=10*F(x+y,x*y); printf(“%d\n”,z);}输出结果为: 此题容易错解为: z=10*(x+y x*y: x+y)=10*50=500; 正确的解法是: z=10*x+y x*y: x+y=5+10=15 Main() {inta[10]={1,2,3},*p;p=a; Printf(“%d\n”,p); Printf(“%d\n”,p+5);} 假设第一个Printf语句输出的是204,则第二个Printf语句输出的结果是: 分析: 解此道题首先要明白第一个Printf语句输出是a的首地址,又因为a[10]定义是int,则数组中每一个元素占两个字节,则p+5移动了10字节,所以第二语句输出的值是214 Main() {intx=1,y=5; For(;x<=10;x++) {If(y>2)break; Elsey-=5;} Printf(“%d”,x);}输出结果为: 分析: 此题的易错点在执行语句break后,x是否需要+1,其实语句break在跳出循环后,并没有+1,所以答案为1 Main() {intx=5,y=2; Printf(“%d”,++x+y,++y-x);}输出结果为: 分析: 解此道题要明白%d对应哪个数,并且它们的运算顺序是怎样的; %d对应的数是++x+y,而它们的运算顺序是: 先运算++y-x,再运算++x+y,所以结果为9.如果将输出语句改为Printf(“%d,%d”,++x+y,y++-x);要特别注意y++-x运行后y是有+1,所以输出结果为9,-3 #include Main() {chars[8]={china},*p;p=s; Printf(“%s,%d\n”,++p,strlen(p));}输出结果为: 分析: 解此道题要明白strlen的用法,它遇到“\0”便停止运算,但它对于空格同样有计算,而且要明白程序先运行strlen(p),再运行++p,所以计算结果为hina,6 Main() {int*p1,*p2,*p,x=4,y=6; P1=&x;p2=&y; if(x Printf(“%d,%d,”,*p1,*p2); Printf(“%d,%d”,x,y);}输出结果为: 分析: 语句p=p1;p1=p2;p2=p;的作用是将p1和p2对应的地址换一下位置,即P2=&x;p1=&y,但x,y自身的地址并没有换,所以输出的结果为6,4,4,6 Main() {union{chari[2];intk;}r; r.i[0]=2;r.i[1]=1; Printf(“%d”,r.k);}输出结果为: 分析: 解此道题要明白共同体的元素存放方式,如下图所示 i[]的地址(假设) i[] 元素 2223 i[0] 2 2224 i[1] 1 又因为k与i[]同地址,一个数的输出是从高地址到低地址,所以先输出2224对应的值,再输出2223对应的值,所以输出的结果为12 main() { inta=10,b=0; do {a+=2;b+=a;printf("a=%db=%d\n",a,b); if(b>20)break; }while(a=14); }输出结果为: 分析: 此题易错解为: 因为a=14所以为无穷循环,只有当b》20时才结束,因此简单认为答案是a=12b=12 a=14b=26 其实a=14除了说明无穷循环外,还是一个赋值语句,所以答案应该是 a=12b=12 a=16b=28 main() { inti; chars[6]; for(i=0;i<6;s[i]=getchar(),i++); for(i=0;i<6;i++)putchar(s[i]);} 当输入ab输出结果为 O yu 分析: 解此道题首先要明白getchar的用法,因为空格与回车间都是字符所以getchar也能将它们计入输入字符中,所以结果为ab O 几种重要的指针字符串 #include voidmain() {inta[3][2]={1,2,3,4,5,6}; int(*p)[2]=a; printf("%d\n",**p+5); } #include voidmain() {inta[3][2]={1,2,3,4,5,6}; int**p; *p=a[0]; printf("%d\n",**p+5); } #include voidmain() {inta[3][2]={1,2,3,4,5,6}; int(*p)[2]; p=a; printf("%d\n",**p+5); } #include voidmain() {inta[3][2]={1,2,3,4,5,6}; int*p; p=a[0]; printf("%d\n",*p+5); } #include voidmain() {inta[3][2]={1,2,3,4,5,6}; int(*p)[2]=a; printf("%d\n",*p[1]+5); } #include voidmain() {inta[2][3]={1,2,3,4,5,6}; int*p[2]; p[0]=a[0];p[1]=a[1]; printf("%d\n",*(p[0]+1)); printf("%d\n",p[1][2]); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 公共 基础知识