计算机C语言基础知识Word文档下载推荐.docx
- 文档编号:1124423
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:14
- 大小:53.51KB
计算机C语言基础知识Word文档下载推荐.docx
《计算机C语言基础知识Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《计算机C语言基础知识Word文档下载推荐.docx(14页珍藏版)》请在冰点文库上搜索。
其他节点有且只有一个双亲。
网状数据模型的特点:
允许一个以上节点无双亲;
一个节点可以有多余一个的双亲。
关系数据模型是以二维表的形式来表示的。
关系数据库中的关系演算包括元组关系演算和域关系演算。
二者都是由原子公式组成的公式。
而这些关系演算都是以数理逻辑中的谓词演算为基础的。
Access中,一个表就是一个关系,每一个关系都是一个二维表。
在Access数据库中表之间的关系也一般为一对多型。
关系模型中的“关系”是指那种具有相关性,但非从属性的平行的数据之间按照某种序列排序的集合关系。
关系表中,每一行称为一个元组,对应表中的一条记录;
每一列称为表中的一个属性,对应表中的一个字段;
在二维表中凡能惟一标识元组的最小属性集称为该表的键或码。
关系模型较之格式化模型(网状模型和层次模型)有以下方面的优点,即数据结构比较简单、具有很高的数据独立性、可以直接处理多对多的联系,以及有坚实的理论基础。
数据库管理系统是位于用户与操作系统之间的一层系统管理软件,是一种系统软件,是用户与数据库之间的一个标准接口。
其总是基于某种数据模型,可以分为层次模型、网状模型和关系模型。
为了合理组织数据,应遵从的设计原则是
A)关系数据库的设计应遵从概念单一化“一事一地”的原则
B)避免在表中出现重复字段
C)用外部关键字保证有关联的表之间的联系
数据管理技术经历了人工处理阶段、文件系统和数据库系统、分布式数据库系统、面向对象数据库系统5个发展阶段。
在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。
其中数据独立性最高的阶段是数据库系统
在文件系统中,相互独立的记录其内部结构的最简单形式是等长同格式记录的集合,易造成存储空间大量浪费,不方便使用。
而在数据库系统中,数据是结构化的,这种结构化要求在描述数据时不仅描述数据本身,还要描述数据间的关系,这正是通过采用特定的数据模型来实现的。
数据库设计包括两个方面的设计内容,它们是概念设计和逻辑设计
实体是客观存在且可以相互区别的事物。
实体可以是具体的对象,如一个学生,也可以是一个抽象的事件,如一次出门旅游等。
因此,实体既可以是有生命的事物,也可以是无生命的事物,但它必须是客观存在的,而且可以相互区别。
数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗余;
数据的一致性是指在系统中同一数据的不同出现应保持相同的值。
(第四套第九题答案错误,应该为A)
数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。
也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。
数据独立性一般分为物理独立性与逻辑独立性两级。
当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的物理独立性。
外模式是用户的数据视图,也就是用户所见到的数据模式;
全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;
物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;
存储模式即为内模式。
内模式(InternalSchema)又称物理模式(PhysicalSchema),它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径。
数据库逻辑设计的主要工作是将E-R图转换成指定RDBMS中的关系模式。
首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性。
实体集也可以转换成关系。
E-R模型即实体-联系模型,是将现实世界的要求转化成实体、联系、属性等几个基本概念,以及它们之间的两种联接关系。
数据库逻辑设计阶段包括以下几个过程:
从E-R图向关系模式转换,逻辑模式规范化及调整、实现规范化和RDBMS,以及关系视图设计。
关系模型允许定义3类数据约束,它们是实体完整性约束、参照完整性约束及用户自定义的完整性约束。
其中前两种完整性约束由关系数据库系统支持,对于用户自定义的完整性约束,则由关系数据库系统提供完整性约束语言,用户利用该语言给出约束条件,运行时由系统自动检查。
数据库设计分为以下6个设计阶段:
需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。
数据库中的数据具有“集成”与“共享”的特点,亦即是数据库集中了各种应用的数据,进行统一构造与存储,而使它们可以被不同应用程序所使用,
数据是现实世界符号的抽象,而数据模型(datamodel)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。
数据模型按不同的应用层次分成3种类型,它们是概念数据模型(conceptualdatamodel)、逻辑数据模型(logicdatamodel)、物理数据模型(physicaldatamodel)。
数据库系统(DatabaseSystem,简称DBS)包括数据库(Database,简称DB)和数据库管理系统(DatabaseManagementSystem,简称DBMS)。
SQL语句中凡创建都用CREATE,删除都用DROP,改变用ALTER,再跟类型和名字,附加子句。
SQL语句中,用于修改表结构的是ALTER
关键字ASC和DESC分别表示升序排列和降序排列的含义。
对象有如下一些基本特点,即标识惟一性、分类性、多态性、封装性和模块独立性。
类是面向对象语言中必备的程序语言结构,用来实现抽象数据类型。
类与类之间的继承关系实现了类之间的共享属性和操作,一个类可以在另一个已定义的类的基础上定义,这样使该类型继承了其超类的属性和方法,当然,也可以定义自己的属性和方法。
在面向对象方法中,类之间共享属性和操作的机制称为继承。
将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。
在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为 消息。
相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。
面向对象模型中,最基本的概念是对象和类。
对象是现实世界中实体的模型化;
将属性集和方法集相同的所有对象组合在一起,可以构成一个类。
所以,类是对象的抽象,对象则是其对应类的一个实例。
模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程,由此分解来降低复杂性。
软件设计模块化的目的是降低复杂性。
算法是指解题方案的准确而完整的描述。
它有4个基本特征,分别是可行性、确定性、有穷性和拥有足够的情报。
算法分析是指对一个算法的运行时间和占用空间做定量的分析,一般计算出相应的数量级,常用时间复杂度和空间复杂度表示。
分析算法的目的就是要降低算法的时间复杂度和空间复杂度,提高算法的执行效率。
在算法正确的前提下,评价一个算法的两个标准是时间复杂度和空间复杂度。
算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。
所谓算法的时间复杂度是指执行算法所需要的计算工作量;
算法的空间复杂度一般是指执行这个算法所需要的内存空间。
数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;
数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。
在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。
数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构及数据上的运算集合。
数据的逻辑结构只抽象的反映数据元素之间的逻辑关系,而不管它在计算机中的存储表示形式。
数据结构是研究数据元素及其之间的相互关系和数据运算的一门学科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。
数据的逻辑结构有线性结构和非线性结构两大类。
数据结构分为逻辑结构与存储结构,线性链表属于存储结构
常用的存储表示方法有4种,顺序存储、链式存储、索引存储、散列存储。
其中,顺序存储方法是把逻辑上相邻的结点存储在物理位置也相邻的存储单元中。
串的长度指的是串中的字符的个数,且其字符个数可以为零。
若串s="
MathTypes"
,则其子串的数目是46。
串s中共有9个字符,由于串中字符各不相同,则其子串中有0个字符的1个(空串),1个字符的9个,2个字符的8个,3个字符的7个,4个字符的6个,5个字符的5个,6个字符的4个,7个字符的3个,8个字符的2个,9个字符的1个,共有1+2+3+4+5+6+7+8+9+1=46。
线性表是一种线性结构,数据元素在线性表中的位置只取决于它们自己的序号,即数据元素之间的相对位置是线性的;
栈、队列、线性链表实际上也是线性表,故也是线性结构;
树是一种简单的非线性结构。
线性表:
线性表可以为空表;
第一个元素没有直接前件,最后一个元素没有直接后件;
线性表的定义中,元素的排列并没有规定大小顺序。
在单链表中,增加头结点的目的是方便运算的实现。
头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点目的是为了便于运算的实现。
循环链表就是将链表的最后一个结点指向链表头结点(或第一个结点),即p->
next=head。
循环链表就是将单向链表中最后一个结点的指针指向头结点,使整个链表构成一个环形,这样的结构使得从表中的任一结点出发都能访问到整个链表。
栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。
二者的区别是:
栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;
而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表。
在线性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=
=n/2。
如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是e2,e4,e3,e1
栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是
由栈“后进先出”的特点可知:
A)中e1不可能比e2先出,C)中e3不可能比e4先出,且e1不可能比e2先出,D)中栈是先进后出的,所以不可能是任意顺序。
B)中出栈过程如图所示:
链表采用的是链式存储结构,它克服了顺序存储结构的缺点:
它的结点空间可以动态申请和释放;
它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。
但是链式存储结构也有不足之处:
①每个结点中的指针域需额外占用存储空间;
②链式存储结构是一种非随机存储结构。
链式存储结构克服了顺序存储结构的缺点:
故链式存储结构下的线性表便于插入和删除操作。
对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较log2n次,而顺序查找需要比较n次。
一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。
而实现递归
调用中的存储分配通常用栈
一些较流行的程序语言允许过程的递归调用。
递归调用就是过程调用本身。
递归实现的是:
当过程每一次执行后,都能返回到最近一次调用它的过程中。
这样各调用点之间形成一种后进先出关系,而栈结构正适合来存储这些调用点。
假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。
当数据表A中每个元素距其最终位置不远,说明数据表A按关键字值基本有序,在待排序序列基本有序的情况下,采用插入排序所用时间最少,故应采用的算法是直接插入排序
根据冒泡排序算法思想可知,若待排序的初始序列为“正序”序列,则只需进行一趟排序,在排序过程中进行n-1次关键字间的比较,且不移动和交换记录,这种情况是冒泡排序的最好情况,故冒泡排序算法在最好的情况下的元素交换次数为0。
在最坏情况下,堆排序需要比较的次数为O(log2n)。
在有向图中,若任意两个顶点都连通,则称该图是强连通图,这样的有向图的形状是环状,因而至少应有n条边。
二叉树
依据后序遍历序列可确定根结点为c;
再依据中序遍历序列可知其左子树由deba构成,右子树为空;
又由左子树的后序遍历序列可知其根结点为e,由中序遍历序列可知其左子树为d,右子树由ba构成,如下图所示。
求得该二叉树的前序遍历序列为选项D)。
利用前序和中序遍历的方法可以确定二叉树的结构,具体步骤如下:
①前序遍历的第一个结点A为树的根结点;
②中序遍历中A的左边的结点为A的左子树,A右边的结点为A的右子树;
③再分别对A的左右子树进行上述两步处理,直到每个结点都找到正确的位置。
已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为DGEBHFCA
若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是gdbehfca
所谓满二叉树是指这样的一种二叉树:
除最后一层外,每一层上的所有结点都有两个叶子结点。
这就是说,在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。
在深度为5的满二叉树中,叶子结点的个数为31
树是一个或多个结点组成的有限集合,其中一个特定的结点称为根,其余结点分为若干个不相交的集合。
每个集合同时又是一棵树。
树有且只有1个根结点。
在树形结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的根结点;
每一个结点可以有多个后件,它们都称为该结点的子结点。
没有后件的结点称为叶子结点。
软件工程
程序设计应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。
软件工程概念的出现源自软件危机。
所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
总之,可以将软件危机归结为成本、质量、生产率等问题。
软件工程概念的出现源自于软件危机。
为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件工程是使计算机软件走向工程科学的途径,逐步形成了软件工程的概念。
基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括:
软件开发技术和软件工程管理。
软件开发技术包括:
软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。
软件工程管理包括:
软件管理学、软件工程经济学,以及软件心理学等内容。
软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
基于这一目标,软件工程的理论和技术性研究的内容主要包括:
开发软件时对提高开发人员工作效率至关重要的是先进的软件开发工具和环境
软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。
工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。
使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。
软件测试是为了发现错误而执行程序的过程。
测试要以查找错误为中心,而不是为了演示软件的正确功能。
结构化分析的常用工具有数据流图、数据字典、判定树和判定表。
而PAD图是常见的过程设计工具中的图形设计。
在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,现在,与程序的效率相比,人们更重视程序的可理解性。
测试的目的是发现软件中的错误。
经验表明,程序中存在错误的概率与该程序中已发现的错误数成正比。
这一现象说明,为了提高测试效率,测试人员应该集中对付那些错误群集的程序。
软件的白盒测试方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明定的各种需求;
集成测试的主要目的是发现与接口有关的错误。
典型的数据流类型有两种:
变换型和事务型。
变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;
在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。
数据流图包括4个方面,即加工(转换)(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体)。
不包括选项中的控制流。
数据流相当于一条管道,并有一级数据(信息)流经它。
在数据流图中,用标有名字的箭头表示数据流。
数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。
软件的显著特点是规模庞大,复杂度超线性增长,在开发大型软件时,要保证高质量,极端复杂困难,不仅涉及技术问题,更重要的是必须要有严格而科学的管理。
开发大型软件时,产生困难的根本原因是大系统的复杂性
软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。
本题中,详细设计、软件编码和软件测试都属于软件开发阶段;
维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。
软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。
一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。
滥用goto语句将使程序流程无规律,可读性差,;
注解行有利于对程序的理解,不应减少或取消;
程序的长短要依照实际情况而论,而不是越短越好;
程序结构应有助于读者理解。
程序设计语言是用于书写计算机程序的语言,其基本成分有以下4种,数据成分:
用来描述程序中的数据。
运算成分:
描述程序中所需的运算。
控制成分:
用来构造程序的逻辑控制结构。
传输成分:
定义数据传输成分,如输入输出语言。
软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
软件需求规格说明书(SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。
它有以下几个方面的作用:
①便于用户、开发人员进行理解和交流;
②反映出用户问题的结构,可以作为软件开发工作的基础和依据;
③作为确认测试和验收的依据。
软件工程包括3个要素,即方法、工具和过程。
方法是完成软件工程项目的技术手段;
工具支持软件的开发、管理、文档生成;
过程支持软件开发的各个环节的控制、管理。
软件开发环境是全面支持软件开发全过程的软件工具集合。
内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量,内聚是从功能角度来度量模块内的联系;
耦合性是模块间互相连接的紧密程度的度量。
结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化及限制使用goto语句,总的来说可使程序结构良好、易读、易理解、易维护。
软件设计包括软件结构设计、数据设计、接口设计和过程设计。
其中结构设计是定义软件系统各主要部件之间的关系;
数据设计是将分析时创建的模型转化为数据结构的定义;
接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;
过程设计则是把系统结构部件转换成软件的过程性描述。
结构化分析方法主要包括:
面向数据流的结构化分析方法(SA-Structuredanalysis),面向数据结构的Jackson方法(JSD-JacksonsystemdevelopmentmethoD)和面向数据结构的结构化数据系统开发方法(DSSD-DatastructuredsystemdevelopmentmethoD)。
Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向数据结构的设计方法。
软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们是抽象、模块化、信息隐蔽和数据独立性。
自底向上是集成测试中增量测试的一种。
常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法4种。
测试的目的是暴露错误,评价程序的可靠性;
而调试的目的是发现错误的位置并改正错误。
软件维护活动包括以下几类:
改正性维护、适应性维护、完美性维护和预防性维护。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 语言 基础知识