二级C选择题复习公共基础知识背诵(DOC)
全国计算机二级C语言公共基础知识
选择合适的数据结构和算 法
合理使用数组、链表、哈希表 等数据结构,以及快速排序、 二分查找等算法,可以提高代 码效率和性能。
减少函数调用
过多的函数调用会增加时间复 杂度,可以通过减少函数调用 或使用内联函数来提高性能。
避免重复计算
将重复计算的结果存储在变量 中,避免每次需要时重新计算 。
使用缓存技术
指针的运算
指针可以进行加法、减法、比较等运 算,以方便对数组元素的访问和操作。
指针的声明与初始化
指针变量需要先声明类型,再通过赋 值操作符将变量的地址赋值给指针。
指针与数组
通过指针可以方便地访问数组元素, 例如使用指针遍历数组、访问数组元 素等。
结构体与联合体
结构体的概念
结构体是一种自定义数据类型,可以 包含多个不同类型的数据成员。
1973-1978年
C语言逐渐成熟,成为UNIX操作系统的主要编程语 言。
1978-至今
C语言成为计算机领域中最广泛使用的编程语言之一 ,广泛应用于系统软件、应用软件、嵌入式系统等 领域。
C语言的特点
01
02
03
04
高效
C语言是一种低级语言,能够 直接代码清晰易 懂,易于学习和使用。
结构化
C语言采用结构化的程序设计 方法,强调代码的模块化和组 织结构,提高了代码的可读性 和可维护性。
可移植性
C语言的标准规范统一,在不 同的操作系统和硬件平台上具 有良好的可移植性。
C语言的应用领域
系统软件
操作系统、编译器、数据库等系统软件主要使用 C语言进行开发。
嵌入式系统
C语言在嵌入式系统中应用广泛,如智能家居、 智能硬件等领域。
结构体的声明与初始化
计算机二级c公共基础知识
计算机二级c公共基础知识计算机二级C是国内常见的计算机软件专业资格认证之一,对于想要从事计算机编程或软件开发工作的人来说,具备C语言的基础知识是必要的。
下面将介绍一些计算机二级C的公共基础知识。
一、C语言概述C语言是一种通用的计算机编程语言,由贝尔实验室的Dennis Ritchie于20世纪70年代开发。
它在系统编程和嵌入式系统开发等领域广泛应用。
C语言的特点包括高效性、可移植性和灵活性,使得它成为了许多计算机科学和信息技术领域的主要编程语言之一。
二、C语言的基本语法和数据类型1. 变量和常量:C语言中需要定义变量来存储数据,并可以使用常量来表示固定的值。
变量的定义需要指定数据类型,如int、float、char等。
2. 运算符:C语言支持各种算术运算、逻辑运算和关系运算,并提供了相应的运算符。
3. 控制语句:C语言提供了分支控制语句(if-else、switch)和循环控制语句(for、while、do-while),用于根据条件执行不同的代码块或者循环执行一段代码。
4. 数组:C语言支持定义和操作一维和多维数组,用于存储一系列相同类型的数据。
5. 函数:C语言使用函数来组织代码和实现代码的重用,可以定义自己的函数并在程序中调用。
三、C语言中的指针和内存管理1. 指针:C语言支持指针,指针是一个变量,它存储了内存地址。
通过指针可以访问和修改内存中的数据。
2. 动态内存分配:C语言提供了动态内存分配函数malloc()和free(),可以根据需要在程序运行时动态地申请和释放内存空间。
四、C语言中的文件操作1. 文件的打开和关闭:C语言提供了打开文件的函数fopen()和关闭文件的函数fclose(),通过文件指针可以对文件进行读写操作。
2. 文件的读写:C语言提供了一系列的文件读写函数,如fread()、fwrite()、fgets()、fprintf()等,用于从文件中读取数据或向文件中写入数据。
计算机二级c语言公共基础知识
计算机二级c语言公共基础知识计算机二级 C 语言公共基础知识是准备参加 C 语言二级考试的考生必备的知识点。
C 语言是一种高级程序设计语言,广泛用于计算机科学与工程领域。
本文将从以下几个方面介绍 C 语言的公共基础知识。
一、C 语言基本语法1. 注释:在 C 语言中,使用 // 进行单行注释,使用 /* */ 进行多行注释。
注释是用来解释代码的作用,提高代码的可读性。
2. 数据类型:C 语言支持的数据类型包括整型、浮点型、字符型、布尔型等。
声明变量时需要指定变量的数据类型。
3. 运算符:C 语言中有各种算术运算符、关系运算符和逻辑运算符,用于进行相应的计算和比较操作。
4. 控制语句:C 语言提供了条件语句(if-else、switch)、循环语句(for、while、do-while)和跳转语句(break、continue、goto)等控制流程语句。
二、C 语言数组与函数1. 数组:数组是一种存储相同类型数据的集合,通过下标来访问数组中的元素。
C 语言中,数组的声明和初始化需要指定数组的大小。
2. 函数:函数是一段封装了一组语句的代码块,可以在程序中多次调用。
C 语言中的函数包括库函数和用户自定义函数。
函数需要声明和定义,通过函数名和参数可以调用函数。
三、C 语言指针与字符串处理1. 指针:指针是存储变量内存地址的变量。
通过指针,可以对变量进行间接访问,实现对内存的灵活操作。
C 语言中使用 * 运算符来定义和操作指针。
2. 字符串处理:C 语言中的字符串是以字符数组的形式存储的,通过使用相应的库函数可以进行字符串的读取、拷贝、连接等操作。
四、C 语言文件操作与结构体1. 文件操作:C 语言提供了一系列函数来进行文件的读写操作,如fopen、fclose、fread、fwrite 等。
通过文件操作,可以实现对外部文件的读取和写入。
2. 结构体:结构体是一种自定义的数据类型,可以将不同类型的数据组合在一起形成一个新的数据类型。
历年全国计算机二级c考试真题及答案
全国计算机等级考试二级笔试试卷公共基础知识及C++语言程序设计(考试时间90分钟,满分100)分)一、选择题((1)~(35)每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1) 下面叙述正确的是A)算法的执行效率与数据的存储结构无关B)算法的空间复杂度是指算法程序中指令(或语句)的条数C)算法的有穷性是指算法必须能在执行有限个步骤之后终止D)以上三种描述都不对(2)以下数据结构中不属于线性数据结构的是A)队列B)线性表C)二叉树D)栈(3)在一棵二叉树上第5层的结点数最多是A)8 B)16 C)32 D)15(4)下面描述中,符合结构化程序设计风格的是A)使用顺序、选择与重复(循环)三种基本控制结构表示程序的控制逻辑B)模块只有一个入口,可以有多个出口C)注重提高程序的执行效率D)不使用goto语句(5)下面概念中,不属于面向对象方法的是A)对象B)继承C)类D)过程调用(6)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是A)可行性分析B)需求分析C)详细设计D)程序编码(7)在软件开发中,下面任务不属于设计阶段的是A)数据结构设计B)给出系统模块结构C)定义模块算法D)定义需求并建立系统模型(8)数据库系统的核心是A)数据模型C)软件工具B)数据库管理系统D)数据库(9)下列叙述中正确的是A)数据库系统是一个独立的系统,不需要操作系统的支持B)数据库设计是指设计数据库管理系统C)数据库技术的根本目标是要解决数据共享的问题D)数据库系统中,数据的物理结构必须与逻辑结构一致(10)下列模式中,能够给出数据库物理存储结构与物理存取方法的是A)内模式B)外模式C)概念模式D)逻辑模式(11)关于面向对象的程序设计方法,下列说法正确的是A)“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理B)“多态性”指的是对象的状态会根据运行时要求自动变化C)基类的私有成员在派生类的对象中不可访问,也不占内存空间D)在面向对象的程序设计中,结构化程序设计方法仍有着重要作用(12)判断字符型变量ch是否为大写英文字母,应使用表达式A ) ch>='A' & ch<='Z'B ) ch<='A' ||ch>='Z'C ) 'A'<=ch<='Z'D ) ch>='A' && ch<='Z'(13)已知下列语句中的x与y都是int型变量,其中错误的语句A ) x=y++;B ) x=++y;C ) (x+y)++;D ) ++x=y;(14)执行语句序列int n;cin >> n;switch(n){ case 1:case 2: cout << '1';case 3:case 4: cout << '2'; break;default: cout << '3';时,若键盘输入1,则屏幕显示A)1 B)2 C)3 D)12(15)下列程序的输出结果是#include <iostream>using namespace std;int main()char a[] = "Hello, World";char *ptr = a;while (*ptr)if (*ptr >= 'a' && *ptr <= 'z')cout << char(*ptr + 'A' -'a');else cout << *ptr;ptr++;return 0;A ) HELLO, WORLDB ) Hello, WorldC ) hELLO, wORLD D ) hello, world(16)已知:int m=10;在下列定义引用的语句中,正确的是A ) int &x=m;B )int y=&m;C )int &z;D ) int &t=&m;(17)下列函数原型声明中错误的是A ) void Fun(int x=0, int y=0);B ) void Fun(int x, int y);C ) void Fun(int x, int y=0);D ) void Fun(int x=0, int y);(18)已知程序中已经定义了函数test,其原型是int test(int, int, int);,则下列重载形式中正确的是A ) char test(int,int,int);B ) double test(int,int,double);C ) int test(int,int,int=0);D ) float test(int,int,float=3.5F);(19)有以下程序#include<iostream>int i = 0;void fun()static int i = 1;std::cout<<i++<<',';std::cout<<i<<',';int main()fun(); fun();return 0;程序执行后的输出结果是A)1,2,1,2, B)1,2,2,3, C)2,0,3,0, D)1,0,2,0,(20)已知函数f的原型是:void f(int *a, long &b); 变量v1、v2的定义是:int v1;long v2;,正确的调用语句是A) f(v1, &v2); B) f(v1, v2);C) f(&v1, v2); D) f(&v1, &v2);(21)有以下类定义class MyClasspublic:MyClass(){cout<<1;}则执行语句MyClass a, b[2], *p[2];后,程序的输出结果是A)11 B)111 C)1111 D)11111(22)关于友元,下列说法错误的是A)如果类A是类B的友元,那么类B也是类A的友元B)如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员C)友元关系不能被继承D)如果类A是类B的友元,那么类A的所有成员函数都是类B的友元(23)关于动态存储分配,下列说法正确的是A)new与delete是C++语言中专门用于动态内存分配与释放的函数B)动态分配的内存空间也可以被初始化C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new(24)有以下程序#include<iostream>using namespace std;class MyClasspublic:MyClass(int n){number = n;}//拷贝构造函数MyClass(MyClass &other){ number=other.number;}~MyClass(){}private:int number;MyClass fun(MyClass p)MyClass temp(p);return temp;int main()MyClass obj1(10), obj2(0);MyClass obj3(obj1);obj2=fun(obj3);return 0;程序执行时,MyClass类的拷贝构造函数被调用的次数是A)5 B)4 C)3 D)2(25)在公有派生的情况下,派生类中定义的成员函数只能访问原基类的A)公有成员与私有成员B)私有成员与保护成员C)公有成员与保护成员D)私有成员、保护成员与公有成员(26)在C++中用来实现运行时多态性的是A)重载函数B)析构函数C)构造函数D)虚函数(27)一个类可以同时继承多个类,称为多继承。
【精品】二级C公共基础知识讲义.doc
第一章数据结构与算法1.1算法1、算法是指解题方案的准确而完整的描述。
换句话说,算法是对特定问题求解步骤的一种描述。
*:算法不等于程序,也不等于计算方法。
程序的编制不可能优于算法的设计。
2、算法的基本特征(1)可行性。
针对实际问题而设计的算法,执行后能够得到满意的结果。
(2)确定性。
每一条指令的含义明确,无二义性。
并且在任何条件下,算法只有唯一的一条执行路径,即相同的输入只能得出相同的输出。
(3)有穷性。
算法必须在有限的时间内完成。
有两重含义,一是算法屮的操作步骤为有限个,二是毎个步骤都能在有限时间内完成。
(4)拥有足够的情报。
算法中各种运算总是要施加到各个运算对象上,而这些运算对象又可能具有某种初始状态,这就是算法执行的起点或依据。
因此一个算法执行的结果总是与输入的初始数据有关,不同的输入将会有不同的结果输出。
当输入不够或输入错谋时,算法将无法执行或执行有错。
一般说來,当算法拥有足够的情报时,此算法才是有效的;而当提供的情报不够时,算法可能无效。
*综上所述,所谓算法,是一组严谦地定义运算顺序的规则,并且每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
3、算法复杂度主要包括时间复杂度和空间复杂度。
(1)算法时间复杂度是指执行算法所需要的汁算工作最,可以用执行算法的过程中所需基本运算的执行次数來度最。
(2)算法空间复杂度是指执行这个算法所需要的内存空间。
4、算法的基木要索:一是对数据对象的运算和操作;二是算法的控制结构。
5、指令系统:一个计算机系统能执行的所有指令的集合。
6•基本运算包扌舌:算术运算、逻辑运算、关系运算、数据传输。
7.算法的控制结构:顺序结构、选择结构、循环结构。
&算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、冋溯法。
1.2数据结构的基本概念1、数据结构是指相互有关联的数据元索的集合。
2、数据结构主要研究和讨论以卜-二个方面的问题:(1)数据集合中各数据元素之间所尚有的逻辑关系,即数据的逻辑结构:数据的逻辑结构包含:1)表示数据元索的信息;2)表示各数据元索Z间的前后件关系。
计算机二级C语言选择题题库
二级C语言 (170道)第一部分公共基础知识单项选择题(10分)1)、程序流程图中带有箭头的线段表示的是(A)数据流(B)调用关系(C)控制流(D)图元关系标准答案:C(1)箭头表示的是控制流(2)矩形表示的是加工步骤(3)菱形表示逻辑条件2)、下列关于栈的叙述正确的是(A)只能在栈底插入数据(B)栈按"先进后出"组织数据(C)不能删除数据(D)栈按"先进先出"组织数据标准答案:B栈是限定仅在表头进行插入和删除操作的线性表。
3)、算法的有穷性是指(A)算法只能被有限的用户使用(B)算法程序的长度是有限的(C)算法程序所处理的数据量是有限的(D)算法程序的运行时间是有限的标准答案:D一个算法应该具有以下五个重要的特征:有穷性算法的有穷性是指算法必须能在执行有限个步骤之后终止;确切性算法的每一步骤必须有确切的定义;输入项一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;输出项一个算法有一个或多个输出,以反映对输入数据加工后的结果。
没有输出的算法是毫无意义的;可行性算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步。
4)、设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为(A)课号,成绩(B)学号,姓名,成绩(C)学号,成绩(D)学号,课号标准答案:D5)、结构化程序设计的基本原则不包括(A)自顶向下(B)多态性(C)逐步求精(D)模块化标准答案:B“自顶而下,逐步求精”的设计思想“独立功能,单出、入口”的模块结构6)、在软件开发中,需求分析阶段产生的主要文档是(A)软件需求规格说明书(B)集成测试计划(C)概要设计说明书(D)可行性分析报告标准答案:A软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。
二级考试公共基础知识复习资料[整理版].doc
C语言二级考试公共基础知识复习资料第一章数据结构与算法1.1算法算法:是指解题方案的准确而完整的描述。
算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。
算法的基木特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的, 此顺序将在有限的次数下终止。
特征包括:(1)可行性;(2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义ft;(3)有穷性,算法必须能在有限的时间内做完(算法的运行时间是有限的),即能在执行有限个步骤后终止,包括合理的执行吋间的含义;(4)拥有足够的情报。
算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。
指令系统:一个计算机系统能执行的所有指令的集合。
基木运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。
算法的控制结构:顺序结构、选择结构、循环结构。
算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、冋溯法。
算法复杂度:算法时间复杂度和算法空间复杂度。
算法时间复杂度是指执行算法所需要的计算工作量,主要取决于问题的规模和待处理数据的初态。
亦空间复杂度是指执行这个算法所需要的内存空间。
算法分析的目的是:分析算法的效率,以求改进。
1.2数据结构的基本基本概念数据结构研究的三个方面:(1)数据集合中各数据元素Z间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理吋,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。
数据结构是指相互有关联的数据兀素的集合。
数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元索之间的前后件关系。
数据的存储结构有顺序、链接、索引和散列等。
线性结构条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。
非线性结构:不满足线性结构条件的数据结构。
1.3线性表及其顺序存储结构(各元素的存储空间是连续的)线性表由一组数据元素构成,数据兀素的位置只取决于自己的序号,元素Z间的相对位置是线性的。
2022年C#二级公共基础知识点
计算机等级考试二级公共基础考前背诵版下面分为四个部分进行组织。
文中标注了三个星号旳,表达非常重要,基本每次考试都是必考;标注了两个星号或一种星号旳,表达也较重要,很轻易考到。
出目前【】括号中旳内容,表达要很精确旳背下来旳。
整个文档中旳五页,提议考前都要认真旳记忆。
第一部分算法与数据构造(历年比例41%)1、算法◆ 问题处理方案旳对旳而完整旳描述称为【算法】。
算法分析旳目旳是,分析算法旳效率以求改善。
算法旳基本特性是【可行性】、【确定性】、【有穷性】和拥有足够情报。
◆ 算法旳有穷性是指:算法程序旳运行时间是有限旳。
◆ 算法旳复杂度是衡量算法好坏旳度量,分为【时间复杂度】和【空间复杂度】。
★★ 时间复杂度是指执行算法所需要旳【计算工作量】;算法旳空间复杂度是指算法执行过程中所需旳【存储空间】。
◆ 算法时间复杂度或空间复杂度中旳一项旳值,没有措施推出另一项旳值。
2、数据构造◆ 数据构造分为【逻辑构造】和【存储构造】。
线性构造和非线性构造属于逻辑构造;次序、链式、索引属于存储构造(物理构造)。
循环队列属于【存储构造】。
★ 数据旳存储构造又称为物理构造,是数据旳逻辑构造在计算机存储空间中旳寄存形式。
◆ 一种逻辑构造可以有多种存储构造,且多种存储构造影响数据处理旳效率。
程序执行旳效率与数据旳存储构造亲密有关。
◆ 数据构造分为线性构造和非线性构造,带链旳队列属于【线性构造】。
◆ 线性表旳存储构造重要分为次序存储构造和链式存储构造。
次序存储构造旳存储一定是持续旳,链式存储旳存储空间不一定是持续旳。
◆ 有序线性表既可以采用次序存储构造,也可以采用链式存储构造。
◆ 队列是一种特殊旳线性表,循环队列按照【先进先出】原则组织数据。
循环队列是队列旳【次序】存储构造。
◆ 数据旳独立性分为【物理独立】性和【逻辑独立性】。
当数据旳存储构造变化时,其逻辑构造可以不变,因此,基于逻辑构造旳应用程序可以不用修改,称为【物理独立性】。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八课二级公共基础知识总结本课主要知识点知识点1.数据结构与算法算法:是一组有穷指令集,是解题方案的准确而完整的描述。
通俗地说,算法就是计算机解题的过程。
算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。
算法是一组严谨地定义运算顺序的规则,每一个规则都是有效的,且是明确的,此顺序将在有限的次数下终止。
所以其四个基本特征包括:(1)确定性,算法中每一步骤都必须有明确定义,不允许有模棱两可的解释,不允许有多义性;(2)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止;(3)可行性,算法原则上能够精确地执行;(4)拥有足够的情报。
算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。
指令系统:一个计算机系统能执行的所有指令的集合。
算法效率的度量—算法复杂度:算法时间复杂度和算法空间复杂度。
算法时间复杂度:指执行算法所需要的计算工作量。
即算法执行过程中所需要的基本运算次数。
通常,一个算法所用的时间包括编译时间和运行时间。
算法空间复杂度:指执行这个算法所需要的内存空间。
包括算法程序所占的空间,输入的初始数据所占的空间,算法执行过程中所需的额外空间。
1.2 数据结构的基本概念数据结构:指相互有关联的数据元素的集合。
数据结构研究的三个方面:(1(2(3)对各种数据结构进行的运算。
数据的逻辑结构应包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系(指逻辑关系,与存储位置无关)。
数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构,也称数据物理结构。
数据的存储结构有顺序、链接、索引等。
线性结构的条件,(一个非空数据结构):(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。
非线性结构:不满足线性结构条件的数据结构。
非空线性表的结构特征:(1)且只有一个根结点a1,它无前件;(2)有且只有一个终端结点an,它无后件;(3结点个数n n=0线性表的顺序存储结构具有以下两个基本特点:(1)线性表中所有元素所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
元素ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k,ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。
顺序表的运算:查找、插入、删除。
在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。
Rlink)指向后件结点。
其允许插入与删除的一端称为栈顶,用指针表示栈顶位置。
栈的存储方式有顺序存储和链式存储。
栈的基本运算:(1) 入栈运算,在栈顶位置插入元素;(2) 退栈运算,删除元素(取出栈顶元素并赋给一个指定的变量);队列运算包括:(1) 入队运算:从队尾插入一个元素;(2) 退队运算:从队头删除一个元素。
队列的顺序存储结构一般采用队列循环的形式。
循环队列s=0表示队列空;s=1且front=rear表示队列满。
计算循环队列的元素个数:“尾指针减头指针”,若为负数,再加其容量即可。
1.6 树与二叉树树是一种简单的非线性结构,其所有元素之间具有明显的层次特性。
在树结构中,每一个结点只有一个前件,称为父结点。
没有前件的结点只有一个,称为树的根结点,简称树的根。
每一个结点可以有多个后件,称为该结点的子结点。
没有后件的结点称为叶子结点。
在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。
树的最大层次称为(1) 非空二叉树只有一个根结点;二叉树基本性质:(1)在二叉树的第k层上,最多有2k-1(k≥1)个结点;(2)深度为m的二叉树最多有2m-1个结点;(3)度为0的结点(即叶子结点)总是比度为2的结点多一个;(4)具有n个结点的二叉树,其深度至少为[logn]+1,其中[log2n]表示2取logn的整数部分2(5) 具有n个结点的完全二叉树的深度为[log2n]+1;(6) 设完全二叉树共有n个结点。
如果从根结点开始,按层序(每一层从左到右)用自然数1,2,…n给结点进行编号(k=1,2….n),有以下结论:①若k=1,则该结点为根结点,它没有父结点;若k>1,则该结点的父结点编号为INT(k/2);②若2k≤n,则k结点的左子结点编号为2k;否则该结点无左子结点(也无右子结点);③若2k+1≤n,则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结点。
补充:增加度为1的结点不会影响二叉树的叶子结点数,每增加一个度为2的结点便会增加一个叶子结点,没有度为2的结点时叶子结点数为1。
已知完全二叉树有x个结点,求其叶子结点数:①确定层数为k;②第k层的结点数y=x-(2 k-1-1);(k-1)-1(2(3(有左先左,再找右,后寻根,到最右一路上行,树根在最后)小结:逻辑结构可分为线性表和非线性表。
线性表包括栈、队列,其存储方式为顺序存储、链式存储均可。
链式型有:线性链表,带链的栈,带链的队列,循环链表等。
非线性表包括树(二叉树),其存储方式为链式存储。
1.7 查找技术只能使用顺序查找的两种情况:(1)线性表为无序表,不管是顺序存储还是链式存储;n的有序线性表,最坏情况只需比较要比较n次。
1.8 排序技术排序是指将一个无序序列整理成按值非递减顺序排列的有序序列。
交换类排序法:(1)冒泡排序法,需要比较的次数为(2 ) 快速排序法。
插入类排序法:(1)简单插入排序法,最坏情况需要(2)希尔排序法,最坏情况需要较。
选择类排序法:(1)简单选择排序法, 最坏情况需要(2)堆排序法,最坏情况需要较。
相比以上几种(除希尔排序法外),堆排序法的时间复杂度最小。
知识点2.程序设计基础2.1 程序设计设计方法和风格“清晰第一、效率第二”已成为当今主导的程序设计风格。
形成良好的程序设计风格需注意:(详见书P27)2.2 结构化程序设计4结构化程序的基本结构及特点:(1)顺序结构:一种简单的程序设计,最基本、最常用的结构;(2)选择结构:又称分支结构,包括简单选择和多分支选择结构,可根据条件,判断应该选择哪一条分支来执行相应的语句序列;(3)循环结构:又称重复结构,可根据给定条件,判断是否需要重复执行某一相同或类似的程序段。
结构化程序设计的特点:只有一个入口和出口2.3 面向对象的程序设计面向对象的程序设计的首次提出以60年代末挪威奥斯陆大学和挪威计算机中心研制的SIMULA语言为标志。
面向对象方法的优点:(1)与人类习惯的思维方法一致;(2)稳定性好;(3)可重用性好;(4)易于开发大型软件产品;(5)可维面向对象的程序设计方法中,对象是由数据的容许的操作组成的封装体,是系统中用来描述客观事物的一个实体,对象的基本特点:(4)封装性;(5)模块独立性好。
类是指具有共同属性、共同方法的对象的集合。
类是关于对象性质的描述。
类是对象的抽象,对象是其对应类的一求的信息,它统一了数据流和控制流。
消息的组成包括:(2)消息标识符,也称消息名;(3)零个或多个参数。
继承是使用已有的类定义作为基础建立新类的定义技术,广义指能够直接获得已有的性质和特征,而不必重复定义他们。
继承具有传递性,一个类实际上继承了他上层的全部基类的特性。
继承分单继承和多重继承。
单继承指一个类只允许有一个父类,即类等级为树形结构;多重继承指一个类允许有多(1)软件是一种逻辑实体,具有抽象性;(2)软件的生产与硬件不同,它没有明显的制作过程;(3)软件在运行、使用期间不存在磨损、老化问题;(4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;(5)软件复杂性高,成本昂贵;(6)软件开发涉及诸多的社会因素。
软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。
软件工程过程是把软件转化为输出的一组彼此相关的资源活动,包含4种基本活动:(1)P(plan)——软件规格说明;(2)D(do)——软件开发;主要活动阶段是:(1)可行性研究与计划制定;(2)需求分析;(3)软件设计(概要设计和详细设计);(4)软件实现;(5)软件测试;(6)运行和维护。
软件工程的目标:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
基本目标:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发软件易于移植;需要较低的费软件管理学包括人员组织、进度安排、质量保证、配置管理、项目计划等。
软件工程基本原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
软件定义阶段中,可行性研究与计划的制定是确定待开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发的实施计划。
需求分析,对待开发软件提出的需求分析并给出详细的定义。
需求分析方法有:(1①面向数据结构的Jackson方法(ISD);②面向数据流的结构化分析方法(SA);③DSSD);(2OOA从需求分析建立的模型的特性来分:静态分析和动态分析。
结构化分析方法的实质:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主(1)数据流图(DFD图):描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统功能建模。
①加工(转换)——圆框,输入数据经加工变换产生的输出。
②数据流——箭头,沿箭头方向传递数据的通道,一般在旁边标注数据流名。
③存储文件(数据源)——双横线,表示处理过程中存放各种数据的文件。
④源、潭——方框,表示系统和环境的接口,属系统之外的实体。
(2)数据字典:对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。
(4)判定表:与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合而引发的,使用判定表描述比较适宜。
软件需求规格说明书的特点:①正确性;②无岐义性;③完整性;④可验证性;⑤一致性;⑥可理解性;⑦可修改性;⑧可追踪性。
设计人员应该在反复理解软件需求的基础上,给出软件结构、模块的划分、功能的分配以及处理流程。
①结构设计:定义软件系统各主要部件之间的关系。
②数据设计:将分析时创建的模型转化为数据结构的定义。
③接口设计:描述软件内部、软件和协作系统之间以及软件与人之间如何通信。
软件设计的一般过程:软件设计是一个迭代的过程;先进行高层次的结构设计;后进行低层次的过程设计;穿插进行数据设计和接口设计。