第7章结构化算法的实现
软件工程-07

120
130 140
面向对象的程序设计方法
在面向对象的程序设计中,数据和操作数据的算 法不再分离,它们被封装在一起,构成对象,其 他的对象可以使用这个对象所提供的服务。
面向对象程序设计方法的特点是封装、泛化、多 态、协同和复用。 1. 封装 按照抽象数据类型的要求,对象把数据和相应 操作封装在其内部,通过定义在接口上的操作 访问。
对框架中的局部再做细化,得到整个程序。 main ( ) { /*建立2到100的数组A[ ],其中A[i]=i*/ for ( i = 2;i <= 100;i++ ) A[i] = i; /* 建立2到10的素数表B[ ],其中存放2到10以内的素数*/ B[1]= 2;B[2]= 3;B[3]= 5;B[4]= 7; /*若A[i]=i是B[ ]中任一数的倍数,则剔除A[i]*/ for ( j = 1;j <= 4;j++ )
软件工程59xp迭代的生存周期版本发布计划新用户故事项目速度用户故事上一次迭代项目速度制定迭代计划未完成的任务迭代计划新功能学习交流未通过测试的部分错误开发每日工作最新版本软件工程60xp的产品化阶段的核心是确认软件产品已经通过了大规模高强度的测试准备好进入产在这个阶段中会降低软件的演化速度但软件的演化过程并没有停止只是对于某个功能是否应被加入到下一个发布中需要慎重考虑
19
4. 协同 协同是指一组对象通过它们之间的协作来完成 一个任务。这组对象间的协作包含了一个消息 序列,亦称线程。 在使用消息传递时需要仔细考虑消息序列中每 个操作执行的前臵条件和后臵条件。 例如,使用队列时,在进队列前要先保证队列 非满,在出队列前要保证队列非空。但这样做, 必须了解消息接收者对象的细节,有悖于实现 与使用相分离的信息隐蔽原则。
C语言算法表示及结构化程序设计基本结构

C语言算法表示及结构化程序设计基本结构为了表示一个算法,可以用不同的方法。
常用的方法有:自然语言、传统流程图、结构化流程图和伪代码等。
1用自然语言表示算法自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。
用自然语言表示通俗易懂,但文字冗长,容易出现歧义,往往要根据上下文才能判断正确含义。
用自然语言来描述包含分支选择和循环算法不方便,花开两朵,各表一枝,同时只表达一个意思,这是自然语言表示的不足。
2用流程图表示算法流程图就是用一些图框来表示算法,直观形象,易于理解。
如:菱形框的作用是对一个给定的条件进行判断,根据给定的条件是否成立来判定如何执行其后的操作。
它有一个入口,两个或多个出口。
优于自然语言表示。
连接点小圆圈用于将画在不同地方的流程线连接起来,实际上表示一个对象,只是画不下オ分开来画或为了清晰表示而单独绘制,用连接点可以避免流程线出现交叉或过长,不利于阅读。
用流程图表示算法直观形象,比较清楚地显示出各个框之间的逻辑关系。
这种流程图占用篇幅较多,一条路走到头,与复杂的实际情况表示有差距有不足,尤其当算法比较复杂时就费时费力。
3.传统流程图的弊端与结构化设计的基本结构传统的流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制,不受限制地使流程随意地转来转去,使流程图变得毫无规律,阅读时要花很大精力去追踪流程,使人难以理解算法的逻辑。
为了提高算法的质量,使算法的设计和阅读方便,不允许无规律地使流程随意转向,只能顺序地进行下去。
但是,算法上难免会包含一些分支和循环,而不可能全部由一个个顺序框组成。
为了解决这个问题,人们规定出几种基本结构,然后由这些基本结构按一定规律组成一个算法结构。
4.用3种基本结构作为表示一个结构化算法的基本单元。
(1)顺序结构。
比如A 和B 两个框是顺序执行的,在执行完A 框所指定的操作后,接着执行B 他所指定操作。
(2)选择结构。
又称选取结构或分支结构,此结构中必包含一个判断框。
第07章 选择结构

End If
24
End If
Select Case语句(情况语句)
格式: Select Case 测试表达式 Case 表达式列表 1 语句块 1 Case 表达式列表 2 语句块 2 …… [Case Else 语句块 n+1] End Select
语句功能:先计算“测试表达式” 的值,然后依次查找该值与哪一个 case 子句中的“表达式列表”中 的值相匹配,如果找到了,则执行 该 case 子句中的语句块,如果没 有找到,则执行 case else 子句中 的语句块。
设置对象的属性如下表所示
对象名称
属性名称
窗体 Form1
Caption
标签 Label1
Caption
按钮 Command1 Caption
属性值 显示日期与时间 今天是: 显示
编写代码
续行符
练习
案例1 :求三角形的面积
功能描述
案例运行界面如图所示。根据输入的三条 边的边长,判断其是否能构成一个三角形。如 果能,则计算并显示该三角形的面积;如果不 能,则给出相应的提示信息。
• 说明:
– 表达式最终的值必须为逻辑值,即取值为真或者是假。
– 若语句块1和语句块2都是单条语句,可采用单行If格式,否则 采用块If语句。
– 跟If …Then 不同,该结构中即使表达式值为假,就执行语句
12
块2的语句内容 。
例7.2 编写一个程序,实现当用户输入的用户名和口令都
正确时显示"欢迎登录"的消息对话框,当用户名或口令有错 误时显示消息对话框报告错误。
psw = Text2.Text
If user =“DCZD" And psw = "123456" Then MsgBox ("欢迎您登录本系统!")
结构化程序设计方法

模块设计的方法: •模块化设计的思想实际上是一种“分而治之” 的思想,把一个大任务分为若干个子任务, 每一个子任务就相对简单了。 •在拿到一个程序模块以后,根据程序模块的 功能将它划分为若干个子模块,如果这些子 模块的规模还嫌大,还再可以划分为更小的 模块。这个过程采用自顶向下方法来实现。 •子模块一般不超过50行。 •划分子模块时应ห้องสมุดไป่ตู้意模块的独立性,即:使 一个模块完成一项功能,耦合性愈少愈好。
采取以下方法来保证得到结构化的程序: • 自顶向下; • 逐步细化; • 模块化设计; • 结构化编码。
两种不同的方法: • 自顶向下,逐步细化; • 自下而上,逐步积累。
用这种方法逐步分解,直到作者认为可以直接将各 小段表达为文字语句为止。这种方法就叫 做“自顶向 下,逐步细化”。
自顶向下,逐步细化方法的优点: 考虑周全,结构清晰,层次分明,作者
(5)检测程序,我们做的东西是否正确,不正确检测 错误。这一步是需要耐心的,不要怕错误,每一次检 测都会让你提高。做事时,不要因一些错误而畏缩不 前。
自上而下的编程方法基本步骤
(1)首先对你所面临的问题进行精确描述,即你遇到
的到底是什么问题;
(2)定义输入输出量,即分析我们的目的是什么和现 有的条件;
(3)设计算法,逐层分解,逐步求精,这是做事情的 一个过程,大部分人做事出错就出在这个地方,懒得 到逐层分解,逐步求精,总是妄想一步登天;
(4)把算法转化为程序语言,这一步是踏踏实实做的 过程,没有这一步你什么也做不成。
第7章 软件理论基础

二、数据模型
⒈数据模型概述 ①数据模型:是客观世界对象及其联系的数据抽象和描述。
②按不同的应用层次分成三种类型: 概念数据模型(概念模型) 逻辑数据模型(数据模型) 物理数据模型(物理模型)
⒉E-R模型 P242 该模型将客观世界的要求描述成实体、属性、联系以及它 们之间的联系,并用图表示出来。 ①实体:指客观存在并且可以相互区别的事物。 实体集:具有共同性质的同类实体组成的集合。 用矩形表示实体集。 ②属性:实体所固有的特征和特性。 用椭圆形表示属性。 ③联系:实体之间的对应关系。 一对一(1︰1) 班级—正班长 一对多(1︰m) 宿舍—学生 多对多(m︰n) 学生—课程
三、线性表
由n个数据元素组成的有限序列,是一种典型的线 性结构。如由26个大写英文字母组成的字母表 (A ,B ,C ,· · · ,X ,Y ,Z)就是一个线性表。 ⒈满足下面三个特点:
在非空的线性表中,有且仅有一个开始结点,它没 有直接前件,而仅有一个直接后件。
有且仅有一个终结点,它没有直接后件,而仅有一 个直接前件。 其余的内部结点都有且仅有一个直接前件和一个直 接后件。
出列 a0 front a1 a2 · · · ai · · · an-1 入列
rear
循环队列:将顺序队列的存储区假想为一个环状的 空间,使顺序队列的整个数组空间变为首尾相接的 队列。
四、树
⒈树是一种十分重要的非线性结构。在这种结构中,所有数据 元素之间的关系具有明显的层次特性。
⒉树结构的基本术语 根结点、叶子结点、父结点、子结点、子树 结点的度:一个结点拥有的后件个数,称为该结点的度。
20084001 20084218
李明 王新
男 男 女
fortran程序设计第7章

7.1.3 数组元素的引用
数组元素的引用形式: 数组名(下标, ...)
7.2 数组的逻辑结构和存储结构
7.3 数据的输入和输出
假定有以下数组说明语句: REAL W(3, 2) INTEGER A(10) 将以A数组和W数组为例介绍对数组进行输入和 A W 输出操作的三种方式.
7.3.1 利用DO循环对数组进行输入和输出
7.3.2 在输入输出语句中用数组名来输入输 出整个数组
FORTRAN规定在输入输出语句中可以出现数组名.如: WRITE (*, *) A 相当于: WRITE (*, *) A(1), A(2), A(3), A(4), …, A(10) 输入输出语句中的数组名可以是任意维数的.例如以上说 明的3*2的W数组是二维的,可以用以下语句输出W数组: WRITE (*, *) W 相当于: WRITE (*, *) W(1, 1), W(2, 1), W(3, 1), W(1, 2), W(2, 2), W(3, 2)
[例7.3]顺序查找
PARAMETER (NA=10) INTEGER A(NA), X, P DATA A/55, 62, 93, 87, 10, 23, 38, 71, 35, 91/ READ (*, *) X WRITE (*, *) (A(I), I=1, NA) P=1 DO 10 WHILE (X .NE. A(P) .AND. P .LT. NA) P=P+1 CONTINUE IF (X .EQ. A(P)) THEN WRITE (*, *) X, P ELSE WRITE (*, *) X, 'Could not be found' END IF END
FORTRAN语言 --FORTRAN 77结构化程序设计
《管理信息系统教程》(第7章)-新书版
29
(3)功能调用层次分明
各部分程序之间的联系采用程序调用的 形式。下层程序独立于上层程序而存在。
程序A
程序B
程序C
…
…
…
调用B
调用C
…
…
…
…
Return
Return
30
(4)程序书写采用同级对齐的方式
程序如果在书写时不分层次,就很 难阅读。
在结构化的程序设计中一般采用锯 齿型风格,提高程序的可读性。
首先,青钢专门建立了中央计算机房, 并在相关部门设立了计算机室。然后,依 据系统设计阶段给出的硬件结构和软件结 构进行了设备及所需系统软件购置。
4
例7-1 系统实施情景案例(续)
—青钢管理信息系统的系统实施 为了建立计算机系统的网络环境,由 太极计算机公司负责结构化布线及网络系 统的安装与调试。
同时,北京科技大学项目组依据系统 设计报告开始进行软件开发。为了节省成 本及方便工作的进行,项目组在北京科技 大学建立了模拟环境,专门用于软件的开 发工作。
评价系统,包括: ◆ 界面是否友好 ◆ 操作使用是否方便 ◆ 响应速度是否可以接受
21
(3)规范性 程序的规范性包括: ◆ 程序命名的规范性 ◆ 程序书写格式的规范性 ◆ 变量定义的规范性 ◆ 解释语句的使用的规范性
22
(4)可读性 程序的可读性包括: ◆ 程序结构清晰 ◆ 可理解性好 ◆ 无复杂的个人程序设计技巧
的静态特征,操作表示事物的动态特征。
出库单 (对象)
属性: 出库单编号、出库物资名称、 出库物资型号、出库物资规格、 出库日期 。
操作: 出库登记 。
39
(2)类和实例(Class & Instance)
张海藩《软件工程导论》(第6版)(课后习题 第7章 实现)【圣才出品】
第7章实现1.下面给出的伪码中有一个错误。
仔细阅读这段伪码,说明该伪码的语法特点,找出并改正伪码中的错误。
字频统计程序的伪码如下:答:(1)错误:INSERT the extracted word into the table在这个后面,没有给这个word的occurrence count赋值为1。
(2)语法特点:该伪代码在循环结构中嵌套循环结构,并且在嵌套的循环结构中又嵌套了IF ELSE结构。
2.研究下面给出的伪码程序,要求:(1)画出它的程序流程图。
(2)它是结构化的还是非结构化的?说明理由。
(3)若是非结构化的,则:a.把它改造成仅用3种控制结构的结构化程序;b.写出这个结构化设计的伪码;c.用盒图表示这个结构化程序。
(4)找出并改正程序逻辑中的错误。
答:(1)程序流程图,如图7-8所示。
图7-8程序流程图(2)此程序是非结构化的,它有一个GOTO语句,并且是从一个循环体内转到循环体外的一条件语句内部。
(3)①修改后的伪码,如图7-9所示。
图7-9修改后的伪码②修改后程序的盒图,如图7-10所示。
图7-10修改后程序的盒图(4)程序中的错误:①语句“IF WORD=KEYWORD”里的变量“WORD”没有预先赋值。
②程序中没有预先输入T的值。
③“N=0”应该是“MATCH=0”。
3.在第2题的设计中若输入的N值或KEYWORD不合理,会发生问题。
(1)给出这些变量的不合理值的例子。
(2)将这些不合理值输入程序会有什么后果?(3)怎样在程序中加入防错措施,以防止出现这些问题?答:(1)N=1,KEYWORD=#。
(2)不合理的值输入程序后无法打印出任何信息。
(3)可以通过加入循环来防止出现这些错误的问题。
4.回答下列问题。
(1)什么是模块测试和集成测试?它们各有什么特点?(2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计在对它进行测试期间将发现多少个错误?为什么?(3)设计下列伪码程序的语句覆盖和路径覆盖测试用例:答:(1)①模块测试时对每个单独的模块,分别用黑盒和白盒测试技术,测试它地功能是否正确,检查模块控制结构中的特定路径并发现最大数量的错误。
第7章 几种结构化知识表示及其推理
7.3.2 语义网络的表达能力
由语义网络的结构特点可以看出,语义网络不仅可以表 示事物的属性、状态、行为等,而且更适合于表示事物之间 的关系和联系。而表示一个事物的层次、状态、行为的语义 网络,也可以看作是该事物与其属性、状态或行为的一种关 系。如图7-3所示的语义网络,就表示了专家系统这个事物 (的内涵),同时也可以看作是表示了专家系统与“智能系 统”、“专家知识”、“专家思维”及“困难问题”这几个 事物之间的关系或联系。所以,抽象地说,语义网络可表示 事物之间的关系。因此,关系(或联系)型的知识和能化为 关系型的知识都可以用语义网络来表示。下面给出常见的几 种。
frame(name("教师"), body([st("类属",[st("<知识分子>",[])]), st("工作",[st("范围",[st("教学",[]),st("科研",[])]), st("缺省",[st("教学",[])])]), st("性别",[st("男",[]),st("女",[])]), st("学历",[st("中师",[]),st("高师",[])]), st("类型",[st("<小学教师>",[]),st("<中学教师>",[]), st("<大学教师>", [])])])) .
例7-1 下面是一个描述“教师”的框架: 框架名: <教师> 类属: <知识分子> 工作: 范围: (教学,科研)
结构化算法的实现概要
7.1.4 复杂结构C++实现示例
... do {
} while(con1) block5
if(con2) { if(con4) block3 else block4 } else { if(con3) block1 else block2 }
B C
A
7.1.4 复杂结构C++实现示例
[例7.3] 求任意n个整数中的最大者与最小者。 算法输入: 依次输入n个整数。 算法输出: 上述整数中的最大、最小值。 数据结构: n为整数,意义与题同。Max和Min均为整数,是已经输入数 据中的 最大和最小数。x为每次输入的整数。i为整数。 问题分析: 每循环一次输入一个整数,将之与以前的最大数Max和最小 数Min对 比后,根据比较结果更新Max和Min的值。
进入 具体操作 返回
返回值
子算法名(子算法参数表)
7.2.1 7.2.2 7.2.3 7.2.4
参数为普通类型的子算法 参数为指针的子算法 参数为引用的子算法 子算法设计与C++实现示例
7.2.1 参数为普通类型的子算法
子算法的参数为基本类型变量,调用子算法时的调用参数(实在参数)与子算 法输入参数(形式参数)的形实结合采用传值方式,对应于C++函数定义及其 调用的一般形式 。
#include "iostream.h" void main() { double r, Peri_bottom, S_bottom, S_side, V, h; cout<<"Please enter the radius ! r="; cin>>r; cout<<"Please enter the height! h="; cin>>h; Peri_bottom=6.28*r; S_side=Peri_bottom*h; S_bottom=9.86*r; V=S_bottom*h; cout<<"The lateral area is "<<S_side<<endl; cout<<"The volume is "<<V<<endl; }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include "iostream.h" void main() { int n=0, s=0, temp=0; cout<<"Please enter a digital "; cin>>n; for( ; n!=0; temp=n/10,s=s*10+(ntemp*10),n=temp) ; cout<<s<<endl; }
[例7.5] 使用子算法求n个正整数中的最小数,并求两组5个整数中 最小数之和。
算法输入: 子算法的入口参数为一维数组array[]及其所含元素数。 算法输出: 子算法返回数组中的最小值。 数据结构: data[]为整型数组。n为所含元素数; nTemp、nTemp1、
nTemp2为整型变量存储中间结果。 算法分析: 因为需要两次从一个数组中提取最小值,因此将这部分功
cout<<"Inpout X please\n"; cin>>x; if(Max<=x)
Max=x; else if(Min>x)
Min=x; i++; } cout<<"Max="<<Max<<endl; cout<<"Min="<<Min<<endl; }
算法开始 n, x Max←x Min←x i←i+1 直到 i=n Max, Min 算法结束
返回值 子算法名(子算法参数表)
进入 具体操作
返回
7.2.1 参数为普通类型的子算法 7.2.2 参数为指针的子算法 7.2.3 参数为引用的子算法 7.2.4 子算法设计与C++实现示例
7.2.1 参数为普通类型的子算法
子算法的参数为基本类型变量,调用子算法时的调用参数(实在参数)与子算 法输入参数(形式参数)的形实结合采用传值方式,对应于C++函数定义及其 调用的一般形式 。
造成存储溢出。考虑到分子和分母之间存在公共因子,因此首先对所给
公式化简如下:
C n i i ! ( n n ! i ) i ! ( n ! n ( n i ) 1 ( ) n i ( n 1 ) i 1 3 ) 2 i ! 1 n ( n 1 i ) ( i ( 1 n ) i 3 2 ) 2 ( 1 n i 1 ) k i 1 n k i k
nTemp=array[i]; } return nTemp; }
void main() { int data1[5]={ 8, 12, 4, 3, 6}; int data2[5]={ 2, 7, 8, 2, 1}; int nTemp1=GetMin(data1, 5); int nTemp2=GetMin(data2, 5); cout<<nTemp1+nTemp2<<endl; }
能独立作为一个模块,形成一个子算法,以便在需要时调 用。这个功能比较简单,按照一般思路得到下面子算法及 调用子算法的主算法。
7.2.2 参数为指针的子算法
这类子算法的参数可以为基本类型指针、数组、函数指针等 。
int GetMin(array[],nNum)
进入 i←1;i<=n;i←i+1 GetMin←nTemp 返回
进入
void ShiftRight(int nIndexFrom)
对ClassScore[], 从倒数第二个元素到 第nIndexFrom个元素
返回
如该元素为空
拷贝当前元素所有 字段至下一个元素
7.2.4 子算法设计与C++实现示例
[例7.8]
算法名称: GetScore。 主要功能: 根据学生的学号查寻班级成绩表,并得到该学生的成
x Max<x
Max←x Min>x
Min←x
7.2 子算法设计与C++实现
对于出现在算法中不同部分的一组相同操作,为减少算法描述工作 量,同时使算法更加简洁易读,通常的做法是将这个重复部分提取 出来作为一个独立模块并加以命名,在需要的地方通过模块名及参 数等信息调用这个模块,而不是反复重复相同的描述,这样的模块 被称为子算法(或函数)。PAD图表示方式如下:
绩。 算法输入: nIndexFrom(整型,该名次及该名次后的所有学生名次向后移一
名)。 算法输出: 无返回值。 问题分析: 向后移动一个数组的元素应从数组的倒数第二个元素开始,将这个
元素拷贝到倒数第一个元素、将第i-1个元素拷贝到第i个元素, 直到第nIndexFrom拷贝完为止。这个过程中如果发现某个元素尚 未被赋给有效值,那么没必要拷贝这个元素,直接进入下一个元 素的拷贝即可。
第7章结构化算法的实现
7.1 基本控制结构的C++实现
理想的算法设计应是语言无关的,可使用任何语言实现它,但是这将 带来两个问题:
其一,常用算法描述工具的描述能力有限,有些问题采用具体程序 语言所提供的语法对算法进行描述效率会更高、结构更简单;
其二,由于算法与语言的脱离,在使用具体语言实现算法时,程序 与算法描述之间并不总是一一对应的,经常需要对算法进行适当调 整,以利于实现。
int temp; temp=info.nVol*info.nNum; return temp; } void main() { CarInfo i; i.szPlate=new char[10]; strcpy(i.szPlate, "京A:StruRef"); i.nNum=40; i.nVol=100; cout<<GetTotalConsumption(i)<<endl; }
号,字符串)、nVol(油箱体积,整型)、nNum(加油次 数,整型)。进入返回 问题分析: 由于子算法所需要的输入均与某辆汽车相关,显然最好的 风格是将它们作为一个整体,因此在本算法实现中定义了 结构类型CarInfo,而为了提高参数的传递效率,将子算法 的参数类型取为引用类型CarType&。具体描述和相应的C++ 实现(其中包括子算法的调用方法示例)如下:
变形后公式的优点在于:……
7.2.1 参数为普通类型的子算法
算法描述及程序实现如下:
int GetCombination(int n, int i)
Cni
i k1
ni k k
进入 nTemp←1 k←1;k<=i;k←k+1 GetCombination←nTemp 返回
nTemp←nTemp*(n-i+k)/k
7.1.4 复杂结构C++实现示例
... do {
if(con2) { if(con4)
block3 else block4 } else { if(con3) block1 else block2 } } while(con1)
block5
B C
A
7.1.4 复杂结构C++实现示例
[例7.3] 求任意n个整数中的最大者与最小者。 算法输入: 依次输入n个整数。 算法输出: 上述整数中的最大、最小值。 数据结构: n为整数,意义与题同。Max和Min均为整数,是已经输入数 据中的
适当位置。 算法输入: nNum(整型,学号)、pName(字符串,学生姓名)、
nChi(整型,语文成绩)、nMath(整型,数学成绩)、 nChem(整型,化学成绩) 算法输出: 无返回值 数据结构: 使用了班级成绩表ClassScore。
void InsertScore(int nNum, char* pName, int nChi, int nMath, int nChem)
最大和最小数。x为每次输入的整数。i为整数。 问题分析: 每循环一次输入一个整数,将之与以前的最大数Max和最小 数Min对
比后,根据比较结果更新Max和Min的值。
void main() { int n=0, x=0, i=2; cout<<"Inpout N please\n"; cin>>n; cout<<"Inpout X please\n"; cin>>x; int Max=x, Min=x; while(i<=n) {
7.2.3 参数为引用的子算法
引用类型参数使子算法定义形式与其调用形式之间具有直观的对应性, 达到类似于传址调用的效果,引用类型参数可以提高数据传递效率。
[例7.7] 设计子算法,根据汽车的信息(车牌号、油箱体积、本年度累 计加油次数)计算本年度该汽车使用汽油量。 算法名称: GetTotalConsumption; 算法输入: 汽车信息(包括汽车牌照、油箱体积、加油次数)。 算法输出: 子算法返回汽车的年耗油量。 数据结构: 类型CarInfo为结构,具有三个字段:szSerial(汽车牌照
7.2.4 子算法设计与C++实现示例
[例7.8] 设计一个班级成绩管理程序,该程序能够将每个学生的成绩 按照总成绩由高到低的顺序存储,并可通过学号查寻学生的成绩。 学生的成绩包括总成绩、语文成绩、数学成绩、化学成绩等。
算法名称: InsertScore 主要功能: 将学生的各科成绩按照总成绩排序插入到班级成绩表的
在结构化程序设计与实现时巧妙地应用高级语言所提供的各种便利的 语法,能起到事半功倍的效果。
7.1.1 顺序结构的C++实现 7.1.2 分支结构的C++实现 7.1.3 循环结构的C++实现 7.1.4 复杂结构C++实现示例
7.1.3 循环结构的C++实现ห้องสมุดไป่ตู้