版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第07章e7d195523061f1c01da5a1f0837ac25283df40ff0a16bfd61AE6AB84AD7EB485CA8019BF267F2027DE2BF09650313B56A435BB3664F8B916CA3777391AC088C283181605E184D6D6879568EB73EB808A103F0784C8DFC3E9CDD14B61FDDA6A8A6237D2DFE3BBAEC8979D824A43E015648F6CB3D1F8D3E352A4BDC9925C075CFF312C4A0BE75FDF5C数据结构与算法大学计算机基础Fundamentalsofuniversitycomputerscience课前导读2
本章将从数据结构的基本概念开始,由浅入深地介绍数据结构、算法的基本概念、常用算法、程序、程序设计、程序设计的基本控制结构、常用的程序设计语言等知识,通过程序设计的实例介绍,让读者了解程序设计的基本方法和步骤。通过本章的学习,读者应了解程序设计的基本控制结构,并对程序设计的基本方法和步骤有一个初步的认识。e7d195523061f1c01da5a1f0837ac25283df40ff0a16bfd61AE6AB84AD7EB485CA8019BF267F2027DE2BF09650313B56A435BB3664F8B916CA3777391AC088C283181605E184D6D6879568EB73EB808A103F0784C8DFC3E9CDD14B61FDDA6A8A6237D2DFE3BBAEC8979D824A43E015648F6CB3D1F8D3E352A4BDC9925C075CFF312C4A0BE75FDF5C内容导航第07章7.2算法的基本概念7.3常用算法7.4程序设计7.1数据结构7.1.1数据结构概述
数据结构是计算机存储、组织数据的方式。
据结构有两个要素:一是数据元素的集合,通常记为d;二是d上的关系,它反映了数据元素之间的关系,通常记为s。一个数据结构可以表示成:b=(d,s)式中,b表示数据结构。用s反映d中各数据元素之间的关系。数据结构研究的对象是数据的逻辑结构和数据的物理结构。7.1.1数据结构概述1.数据的逻辑结构数据的逻辑结构是反映数据元素之间的逻辑关系的数据结构,是从操作对象抽象出来的数据模型,与它们真正在计算机中的存储位置无关。
b=(d,s) d={春季,夏季,秋季,冬季}
s={(春季,夏季),(夏季,秋季),(秋季,冬季),(冬季,春季)}根据数据结构中各数据元素之间关系的复杂程度,一般将数据结构分为两大类型:线性结构和非线性结构。7.1.1数据结构概述2.数据的物理结构数据的物理结构是指数据在计算机内的存储形式。由于数据元素在计算机内存储的位置关系可能与逻辑关系不同,因此为了表示存放在计算机内的各数据元素之间的逻辑关系,在数据的存储结构中,不仅要存放各数据元素的信息,还要存放各数据元素之间的前驱和后继的关系信息。一种数据的逻辑结构根据需要可以表示成多种存储结构。常用的存储结构有顺序存储结构、链式等存储结构。7.1.2数组
数组是指由相同数据类型的元素组成的一个有序序列。数组名表示整个数组,组成数组的各个元素称为数组分量,也称为数组元素;用于区分数组的各个元素的数字编号称为下标。7.1.2数组
1.一维数组一维数组是最简单的数组,只有一个下标,其逻辑结构是线性表。要使用一维数组,需经过定义、初始化和引用等过程。在C语言中inta[5];表示定义了一含有5个整型元素的一维数组a,该数组的逻辑结构如图所示。a[0]a[1]a[2]a[3]a[4]7.1.2数组
2.二维数组
与一维数组对应,二维数组有两个下标,分别表示行、列信息。在C语言中intb[3][3];表示定义了由3行、3列共9个整型元素组成的二维数组b。不同的语言对二维数组的物理存储是不一样的,分为行序为主的存放(即按行的顺序一行一行地存放)和列序为主的存放(即按列的顺序一列一列地存放)。下图所示为该数组的逻辑结构。b[0][0]b[0][1]b[0][2]b[1][0]b[1][1]b[1][2]b[2][0]b[2][1]b[2][2]7.1.3链表在链式存储方式中,要求每个节点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中,指针用于指向该节点的前一个或后一个节点等。链表分为单链表和双向链表等。7.1.3链表
1.单链表单链表是仅有一个数据域和一个指针域。单链表的节点结构示意图如图所示。
数据域data存放节点值的数据域;指针域next存放节点的直接后继地址(位置)。7.1.3链表
2.双向链表在某些应用中,对线性链表中的每个节点设置两个指针:一个称为左指针,用以指向其前驱节点;另一个称为右指针,用以指向其后继节点。这样的链表称为双向链表,如图所示。
7.1.3链表
2.双向链表数据域data存放节点的数据域;指针域prior存放节点的直接前驱地址(位置);指针域next存放节点的直接后继地址(位置)。有多个节点经过指针域链接后的示意图如图所示。
7.1.4栈
1.栈的基本概念栈是一种特殊的线性表,是限定只在一端进行插入和删除的线性表。在栈中,一端是封闭的,既不允许插入元素,也不允许删除元素;另一端是开口的,允许插入和删除元素。通常称插入、删除的这一端为栈顶,另一端为栈底。当表中没有元素时为空栈。
7.1.4栈
2.栈的基本运算栈的基本运算有3种:入栈、退栈和读栈顶元素。①入栈。入栈是指在栈顶位置插入一个新元素。②退栈。退栈是指取出栈顶元素并赋给一个指定的变量。③读栈顶元素。读栈顶元素是指将栈顶元素赋给一个指定的变量。
7.1.5队列队列是只允许在一端进行删除,在另一端进行插入的顺序表。通常将允许删除的这一端称为队头,允许插入的这一端称为队尾。队列需要用两个指针进行管理:一个是队头指针,指向队头元素;另一个是队尾指针,指向下一个入队元素的存储位置。7.1.6树和二叉树
1.树的定义树是由n(n≥0)个有限节点组成的一个具有层次关系的集合。把它叫作“树”,是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。任意一棵非空树是由根节点和若干棵子树构成的,由一个集合及在该集合上定义的一种关系组成。集合中的元素称为树的节点,所定义的关系称为父子关系。父子关系在树的节点之间建立了一个层次结构。在这种层次结构中有一个节点具有特殊的地位,这个节点称为该树的根节点,或者称为树根。7.1.6树和二叉树
2.树的基本概念根:在树结构中,没有前驱的节点只有一个,即树的根,如图中的A。在树中位于最上层。
父节点:在树结构中,每一个节点只有一个前驱,称为父节点。如图7.11中的B是F的父节点。
子节点:每一个节点可以有多个后继,称为该节点的子节点。如图中的E和F是B的子节点,H是F的子节点。
叶子节点:没有后继的节点称为叶子节点。图7.11中的C、E、H、G均为叶子节点。7.1.6树和二叉树
2.树的基本概念度:在树结构中,一个节点所拥有的子节点的个数称为该节点的度,所有节点中最大的度称为树的度。图7.11中,根节点A的度为3,节点B的度为2,叶子节点C的度为0。因此,该树的度为3。
深度:定义一棵树的根节点所在的层次为1,其他节点所在的层次等于它的父节点所在的层次加1。树的最大层次称为树的深度。图中,根节点A在第1层,节点B、C、D在第2层,节点E、F、G在第3层,H在第4层,所以该树的深度为4
子树:在树结构中,以某一个子节点为根构成的树称为该节点的一棵子树。图7.11中,B子树,包含节点有B、E、F、H。7.1.6树和二叉树3.二叉树在二叉树中,每一个节点的度最大为2,即所有子树(左子树或右子树)也均为二叉树。另外,二叉树中的每个节点的子树被明显地分为左子树和右子树。在二叉树中,一个节点可以只有左子树,也可以只有右子树,如图所示。7.1.6树和二叉树二叉树具有以下4个性质
性质1:在二叉树的第k层上,最多有2k-1(k≥1)个节点。
性质2:深度为m的二叉树最多有2m-1个节点。性质3:在任意一棵二叉树中,度为0的节点(即叶子节点)总是比度为2的节点多一个。
性质4:具有n个节点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取log2n的整数部分。7.1.7图
1.图的定义图是由顶点的有穷非空集合和顶点之间边的集合组成的。图中每一条边的两个顶点互为邻接点。如果图中的每条边是有方向的,则称该图是有向图,如上图所示。有向图中的边也称为弧,通常用尖括号表示。如果图中的每条边是没有方向的,则称该图是无向图,如下图所示。无向图中的边均为顶点的无序对,通常用圆括号表示。7.1.7图
2.图的遍历图的遍历是指从图中某一顶点出发访问图中的每一个顶点,且每个顶点仅被访问一次。图的遍历方法有两种:一种是深度优先搜索遍历(Depth-FirstSearch,DFS),另一种是广度优先搜索遍历(Breadth-FirstSearch,BFS)。e7d195523061f1c01da5a1f0837ac25283df40ff0a16bfd61AE6AB84AD7EB485CA8019BF267F2027DE2BF09650313B56A435BB3664F8B916CA3777391AC088C283181605E184D6D6879568EB73EB808A103F0784C8DFC3E9CDD14B61FDDA6A8A6237D2DFE3BBAEC8979D824A43E015648F6CB3D1F8D3E352A4BDC9925C075CFF312C4A0BE75FDF5C内容导航第07章7.3常用算法7.4程序设计7.1数据结构7.2算法的基本概念7.2算法
算法是程序设计的精髓,可以把它定义成在有限步骤内求解某一问题所使用的一组定义明确的规则。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。通俗点说,就是计算机解题的过程。
在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。
7.2.1算法的概念算法是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算,是对解题方案的准确与完整的描述。对算法的学习包括5个方面的内容。(1)设计算法。(2)表示算法。(3)确认算法。(4)分析算法。(5)验证算法。7.2.2算法的特征算法应该具有以下5个重要的特征:(1)确定性。每一种运算必须有确定的意义。(2)可行性。算法中有待实现的运算都是基本的。(3)输入。一个算法可能有多个输入。(4)输出。一个算法会产生一个或多个输出。(5)有穷性。一个算法会在执行了有限步的运算后终止。7.2.3算法的描述
算法是解题方法的精确描述。描述算法的工具对算法的质量有很大的影响。(1)自然语言(2)伪码(3)流程图(4)N-S结构图7.2.3算法的描述
(1)自然语言
自然语言就是日常使用的语言,可以使用中文,也可以使用英文。用自然语言描述的算法,通俗易懂,但是文字冗长,准确性不好,易于产生歧义性。因此,一般情况下不提倡用自然语言来描述算法。
(2)伪码
伪码不是一种现实存在的编程语言。使用伪码的目的是为了使被描述的算法可以容易地以任何一种编程语言实现。它可能综合使用多种编程语言中语法、保留字,甚至会用到自然语言。因此,伪代码必须结构清晰,代码简单,可读性好,并且类似自然语言。7.2.3算法的描述7.2.3算法的描述
(3)流程图
流程图是一种传统的算法表示法,它利用几何图形的框来代表各种不同性质的操作,用流程线来指示算法的执行方向。符
号
符
号
名
称
含
义
起止框
表示算法的开始或结束
输入/输出框
表示输入/输出操作
处理框
表示对框内的内容进行处理
判断框
表示对框内的条件进行判断
流向线
表示算法的流动方向
连接点
表示两个具有相同标记的“连接点”相连
表7.1流程图的常用符号7.2.3算法的描述
(4)N-S结构图N-S图用一个大矩形框来表示算法,它是算法的一种结构化描述方法,是一种适合于结构化程序设计的流程图e7d195523061f1c01da5a1f0837ac25283df40ff0a16bfd61AE6AB84AD7EB485CA8019BF267F2027DE2BF09650313B56A435BB3664F8B916CA3777391AC088C283181605E184D6D6879568EB73EB808A103F0784C8DFC3E9CDD14B61FDDA6A8A6237D2DFE3BBAEC8979D824A43E015648F6CB3D1F8D3E352A4BDC9925C075CFF312C4A0BE75FDF5C内容导航第07章7.4程序设计7.1数据结构7.2算法的基本概念7.3常用算法7.2.3算法的描述
(4)N-S结构图N-S图用一个大矩形框来表示算法,它是算法的一种结构化描述方法,是一种适合于结构化程序设计的流程图7.3常用算法
任何复杂的算法,都可以由顺序结构、选择(分支)结构和循环结构这3种基本结构组成,因此,构造一个解决问题的具体方法和步骤的时候,也仅以这3种基本结构作为“建筑单元”,遵守3种基本结构的规范,基本结构之间可以相互包含,但不允许交叉,不允许从一个结构直接转到另一个结构的内部。
7.3.1算法概述算法是程序设计的精髓,它的定义是在有限步骤内求解某一问题所使用的一组定义明确的规则。在计算机科学中,算法要用计算机语言来描述,算法代表用计算机解一类问题的精确、有效的方法和步骤,即计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。因此算法设计与实现是计算思维训练的重要抓手。7.3.2累加求和算法定义一个变量s(往往初值为0)作为累加器使用,再定义一个变量用来保存加数。一般在累加算法中的加数都是有规律可循的,可结合循环程序来实现。求1+2+3+…+100的累加和。设累加器s专门存放累加的结果,初值为0,加数用变量t表示。当t=1时,s的值应为0+1=1,即s=0+1=s+t(执行语句s=s+t)。当t=2时,s的值应为1+2=3,即s=1+2=s+t(执行语句s=s+t)。当t=3时,s的值应为3+3=6,即s=3+3=s+t(执行语句s=s+t)。当t=4时,s的值应为6+4=10,即s=6+4=s+t(执行语句s=s+t)。……当t=100时,累加器s=s+100=1+2+3+…+99+100=5050(执行语句s=s+t)。不难看出,t的值从1变化到100的过程中,累加器均执行同一个操作s=s+t7.3.2累加求和算法求解此类问题的基本步骤可以概括如下。①定义代表和的变量s,定义代表第n项的变量t。②令s=0。③构建循环体,一般情况下为s=s+t。④构建循环条件,根据问题的具体要求,选用相应的循环语句。⑤输出累加和s的值。7.3.3连乘求积算法设一个变量p,作为累乘器使用,初值一般为1;设一个变量k用来保存每次需要乘的乘数,在循环体中执行p=p*k的语句即可。求10!=1×2×3×…×10的结果。设乘法器p,初值为1,设变量k存放乘数。当k=1时,p=p×k=1×1=1。当k=2时,p=p×k=1×2=2。当k=3时,p=p×k=2×3=6。……当k=10时,p=p×k=1×2×3×…×9×10。因此,在k的值从1变化到10的过程中,乘法器均执行同一个操作p=p×k。7.3.3连乘求积算法求解此类问题的基本步骤可以概括如下。①定义代表乘积的变量p,定义代表第n项的变量k。②令p=1。③构建循环体,一般情况下为p=p×k。④构建循环条件,根据问题的具体要求,选用相应的循环语句。⑤输出乘积p的值。7.3.4求最值算法在N个数中求最大值和最小值的思路是:定义一个变量,假设为max,用来存放最大值,再定义一个变量,假设为min,用来存放最小值。一般先将N个数中的第1个数赋予max和min作为初始值,然后将剩下的每个数分别同max、min比较——如果比max大,将该数赋予max;如果比min小,将该数赋予min。也就是说,让max中总是存放当前的最大数,让min中总是存放当前的最小值,这样当所有数都比较完时,在max中存放的就是最大数,在min中存放的就是最小数。7.3.4求最值算法求解此类问题的基本步骤可以概括如下。①定义x代表N个数中的一个数。②定义一个存放最大值的变量max,定义一个存放最小值的变量min。③分别令max=所有数据中的第1个数,min=所有数据中的第1个数。④构建循环体,然后将x与max比较,如果x比max大,令max=x;将x与min比较,如果x比min小,令min=x。⑤构建循环条件,根据问题的具体要求,选用相应的循环语句。⑥输出max和min的值。7.3.5排序所谓排序,就是将一组相同类型的记录序列调整为按照元素关键字有序(递增或递减)的记录序列。例如,将学生记录按学号排序、上体育课时按照身高从高到低排队、考试成绩从高分到低分排列、电话簿中的联系人姓名按照字母顺序排列、电子邮件列表按照日期排序等。7.3.5排序
冒泡法排序方法的算法描述是:
第1趟排序对全部n个记录R1,R2,…,Rn自左向右顺次两两比较,如果Rk大于Rk+1(其中,k=1,2,…,n−1),则交换两者内容,第1趟排序完成后Rn成为序列中的最大记录;
第2趟排序对序列前n−1个记录采用同样的比较和交换方法,第2趟排序完成后Rn−1成为序列中仅比Rn小的次大的记录;
第3趟排序对序列前n−2个记录采用同样的处理方法;如此做下去,最多做n−1趟排序,整个序列就排序完成了。7.3.5排序冒泡法排序原始数据 44、33、25、19R[1],R[2],R[3],R[4]第1趟 44、33、25、19
33、44、25、19
33、25、44、19
33、25、19、44R[1],R[2],R[3] 第2趟 33、25、19
25、33、19
25、19、33R[1],R[2] 第3趟 25、19
19、25排序后的数据 19、25、33、447.3.5排序冒泡法排序的基本步骤。定义数组r存放待排序的n个数。①定义变量i表示比较的趟数,定义变量j表示每一趟比较的次数,定义变量temp作为交换时的临时变量。②利用循环把n个数送给数组元素。③i=0。④构建循环体(控制趟数,共n−1趟)。j=0。构建循环体(控制每一趟比较的次数,从0变化到n−1−i)。将r[j]和r[j+1]比较,如果r[j]比r[j+1]大,令r[j]与r[j+1]互换值,即temp=r[j],r[j]=r[j+1],r[j+1]=temp。⑤构建循环条件,根据问题的具体要求,选用相应的循环语句。⑥利用循环输出排序后的数组元素。7.3.6查找
查找也称为检索,是在较大的数据集中找出或定位某些数据的过程,即在大量的信息中寻找一个特定的信息元素。在计算机中进行查找的方法是根据表中的记录的组织结构确定的,被用于查找的数据元素的属性一般称为关键字。
顺序查找也称为线性查找,是一种最简单的查找方法,可用于有序列表,也可用于无序列表。7.3.6查找
查找也称为检索,是在较大的数据集中找出或定位某些数据的过程,即在大量的信息中寻找一个特定的信息元素。在计算机中进行查找的方法是根据表中的记录的组织结构确定的,被用于查找的数据元素的属性一般称为关键字。
顺序查找也称为线性查找,是一种最简单的查找方法,可用于有序列表,也可用于无序列表。其基本思想是:从查找表(数据结构线性表)的一端开始,顺序扫描线性表,依次将扫描到的节点关键字同给定值key相比较,如果当前扫描到的节点关键字同key相等,则表示查找成功;如果扫描结束后,没有找到关键字等于key的节点,表示查找失败。7.3.6查找假设顺序查找表存储在一维数组,目标数据有100个,这些数据是无序的,分别存放在一维数组R[1],…,R[100]中。现要求查找这些数据里有没有值为key的数据元素,如果找到,就给出其所在的位置;如果没有找到,则给出相应提示信息。算法描述如下。SqSearch(key)设初始查找位置k为1;当k≤100且R[k]≠key时 //位置向后移动,直到找到或k越界
k=k+1;如果k≤100,
returnk; //返回数据元素所在的位置否则
return0; //没有找到,返回07.3.7统计统计算法一般用于求解特定值问题。输入一串字符,统计其中的字母个数、数字个数和其他字符的个数。分析:要统计满足指定要求的字符个数,应定义相应变量作为计数器,初值为0,每找到符合条件的字符,将指定计数器的值加1。本题需要定义3个计数器n1、n2、n3,分别统计字母、数字和其他字符的个数,初值均为0。对字符串中的字符逐个判断,如果是字母,n1执行加1操作;如果是数字,n2加1;否则n3加1。7.3.7统计归纳出求解此类问题的基本步骤如下。①定义代表所有统计要求的计数器变量(有几项统计要求,就有几个计数器变量)。②令所有计数器变量的初值为0。③构建循环体,当满足指定的计数要求时,就将相应的计数器的值加1(执行类似于n=n+1的操作)。④构建循环条件,根据问题的具体要求,选用相应的循环语句。⑤输出所有计数器的值。e7d195523061f1c01da5a1f0837ac25283df40ff0a16bfd61AE6AB84AD7EB485CA8019BF267F2027DE2BF09650313B56A435BB3664F8B916CA3777391AC088C283181605E184D6D6879568EB73EB808A103F0784C8DFC3E9CDD14B61FDDA6A8A6237D2DFE3BBAEC8979D824A43E015648F6CB3D1F8D3E352A4BDC9925C075CFF312C4A0BE75FDF5C内容导航第07章7.1数据结构7.2算法的基本概念7.3常用算法7.4程序设计7.3.7统计程序的概念非常普遍。简单地说,程序可以看作是对一系列动作的执行过程的描述。随着计算机的出现和普及,“程序”已经成了计算机领域的专有名词。计算机程序是指为了得到某种结果而由计算机等具有信息处理能力的装置执行的代码化指令序列。也可以这样说,程序就是由一条条代码组成的,这样的一条条代码各自代表着不同的命令,这些命令结合起来,组成了一个完整的工作系统。程序的性质目的性:程序必须有一个明确的目的。分步性:程序给出了解决问题的步骤。有限性:解决问题的步骤必须是有限的。如果有无穷多个步骤,那么在计算机上就无法实现。可操作性:程序总是实施各种操作于某些对象的,它必须是可操作的。有序性:解题步骤不是杂乱无章地堆积在一起,而是要按一定顺序排列的。这是最重要的一点。7.4.1程序设计的概念那么要让计算机处理一个问题(程序设计),需要经过哪些步骤呢?建立数学模型。确定算法(算法设计)。编写源程序。程序调试。整理资料。7.4.2结构化程序设计的基本原则人们从多年来的软件开发经验中发现,任何复杂的算法,都可以由顺序结构、选择结构和循环结构这3种基本结构组成,因此,在构造一个解决问题的具体方法和步骤的时候,也仅以这3种基本结构作为“建筑单元”,遵守3种基本结构的规范,基本结构之间可以相互包含,但不允许交叉,不允许从一个结构直接转到另一个结构的内部。正因为整个算法都是由3种基本结构组成的,就像用模块构建的一样,所以结构清晰,易于正确性验证,易于纠错。这种方法就是结构化方法,遵循这种方法的程序设计,就是结构化程序设计。7.4.2
结构化程序设计的基本原则(1)模块。当把要开发的一个较大规模的软件,依照功能需要,采用一定的方法(例如,结构化方法)划分成一些较小的部分时,这些较小的部分就称为模块,也叫作功能模块。(2)模块化设计。通常把以功能模块为设计对象,用适当的方法和工具对模块的外部(各有关模块之间)与模块内部(各成分之间)的逻辑关系进行确切的描述称为模块化设计。7.4.2结构化程序设计的原则(1)自顶向下。
考虑总体,后考虑细节。(2)逐步求精。(3)模块化。(4)限制使用GoTo语句。7.4.2面向对象的程序设计面向对象的程序设计(ObjectOrientedProgramming,OOP)。在面向对象的程序设计风格中,会将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数据和函数。同时,会以某种方式将这些子集分为不同等级,而一个对象就是已定义的某个类型的变量。与传统的结构化分析与设计技术相比,面向对象技术具有许多明显的优点,主要体现在以下3个方面。(1)可重用性。(2)可维护性。(3)表示方法的一致性。7.4.3程序设计的基本控制结构
结构化程序设计提出了顺序结构、选择(分支)结构和循环结构3种基本程序结构。
一个程序无论大小都可以由3种基本结构搭建而成。7.4.3程序设计的基本控制结构顺序结构要求程序中的各个操作按照它们出现的先后顺序执行。这种结构的特点是:程序从入口点开始,按顺序执行所有操作,直到出口点处。其流程图如图10.3所示。7.4.3程序设计的基本控制结构1.两路分支选择结构两路分支选择是指根据判断结构入口点处的条件来决定下一步的程序流向。如果条件为真则执行语句组1,否则执行语句组2。
但不论选择了哪一条分支执行,最后流程都一定到达结构的出口点处,其流程图如图10.4所示。图10.4两路分支选择结构的流程图7.4.3程序设计的基本控制结构1.两路分支选择结构实际使用过程中可能会遇到只有一条有执行的两分支,此时最好将这些语句放在条件为真的执行语句中,如右侧图所示。在有些地方,这个结构称为是单分支结构。单分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目托管合同范例
- 饭店引流合同范例简短
- app推广服务合同范例
- 购铜合同范例
- 合同范例神器
- 化妆培训员工合同范例
- 装修材料合同合同范例
- 学校托管采购合同范例
- 销售合同范例建陶
- 员工入职档案合同范例
- 2024年公司年会领导演讲稿致辞(5篇)
- 重大事项内部会审制度例文(2篇)
- 贵州省铜仁市碧江区2023-2024学年八年级上学期期末数学试题
- 大部分分校:地域文化形考任务二-国开(CQ)-国开期末复习资料
- 2024年马拉松比赛项目合作计划书
- 苗圃购销合同范本
- ICU患者跌倒、坠床应急预案及防范措施
- 电力监控系统安全防护总体方案
- 炉渣炉灰采购合同模板
- 药理学(浙江大学)智慧树知到答案2024年浙江大学
- 2023-2024学年深圳市初三中考适应性考试英语试题(含答案)
评论
0/150
提交评论