支结构,复习 if语句 使用if语句嵌套 switch语句,授课要点,体重问题,标准体重(身高100)0.9(单位:千克) 其数值的正负10为健康。 你是否拥有一个健康的体型呢?如何用C程序实现以上体型判断?,问题分析,据标准,一个人的体重有两种可能性:体重在标准范围内、体重超标。流程图描述为两分支
第4章分支结构Tag内容描述:
1、支结构,复习 if语句 使用if语句嵌套 switch语句,授课要点,体重问题,标准体重(身高100)0.9(单位:千克) 其数值的正负10为健康。
你是否拥有一个健康的体型呢?如何用C程序实现以上体型判断?,问题分析,据标准,一个人的体重有两种可能性:体重在标准范围内、体重超标。
流程图描述为两分支结构,采用if-else结构即可解决。
,if-else 描述分支结构,根据已有流程图,进行描述 将分支结构部分流程图转换为if-else结构描述,if(条件P)A elseB,A和B为处理模块,问题求解:流程图转换为程序,程序,源代码,#include void main()/主函数 int height; /*用户身高*/float sweight,weight; /*标准体重,用户体重*/printf(“n请输入您的身高,以cm为单位:“);scanf(“%d“, ,模仿练习,根据流程图用if-else结构编写程序【练习1】输入学生的三门课程成绩(实数,0100之间),计算平均分并判断是否及格。
2、收费0.3元/kg。
这个处理过程,可归纳为下面数学表达式: 0.2w(w20kg) 0.2*20+0.3*(w-20)(w20kg),P=,6.2转移指令,6.2.1无条件转移指令6.2.2条件转移指令,6.2.1无条件转移指令,指令汇编格式:JMP targ 操作:段内转移:IP目标的偏移地址 段间转移:IP目标的偏移地址 CS目标所处代码段的基址 受影响的状态标志位:无 说明:指令中的targ可以是直接标号、寄存器间接或存储器间接寻址形式。
,6.2.1无条件转移指令,(1)段内转移(NEAR) 1)段内直接转移 JMP LABEL_N ;LABEL_N在当前代码段 JMP SHORT LABEL_N ;LABEL_N在当前代码段,且在-128127范围内; 例:,6.2.1无条件转移指令,CSEG SEGMENTASSUME CS:CSEG START: JMP L1JMP SHORTL2JMP L2JMP START L2: NOPORG L2+100H L1: NOP CSEG ENDSEND,6.2.1无条件转移指令,0000 CSEG S。
3、第四章汇编语言程序设计 汇编语言程序设计概述汇编语言基本语法汇编语言程序设计BIOS及DOS功能调用汇编语言程序设计实例 分析问题 问题性质 目的 要求 已知条件等等 建立相应数学模型 确定算法 把实际问题转化为计算机求解的步骤和方法 绘制。
4、F = 1;否则ZF = 0 (3)符号标志SF运算结果最高位为1,则SF = 1;否则SF = 0 (4)溢出标志 OF 若无符号数运算的结果有溢出,则OF1;否则 OF0 (5)奇偶标志 PF当运算结果中“1”的个数为零或偶数时,PF = 1;否则PF = 0,4.1 条件标志位的设置规则,MOV指令不影响标志位; 加减指令影响上述所有标志,但增1和减1指令不影响CF;乘除指令只影响CF和OF 设AX=78C4H, BX=9F35H. 通过示例观察每条指令执行后对标志位的影响CF SF OF ZF PF ADD AX,BX 1 0 0 0 ADD AH,AL 0 1 1 0 ADD AH,BL 0 1 0 0 SUB AX,BX SUB BX,BX SUB AH,BH,4.2.1 无条件转移指令,(OPD+2)CS,注意: 实际编程时,汇编程序会根据目标地址的距离,自动处理成短转移、近转移或远转移程序员可用操作符short、near ptr 或far ptr 强制,返回首页,JMP FAR PTR 标号,JMP NEAR PTR 标号,JMP DWORD PTR O。
5、记主管机关核准后领取营业执照,并在核准登记的经营范围内从事经营活动。
是独立的经济实体和会计主体,但不具有独立法人资格,二、分支机构具有以下几个特点:1不具有法人资格。
(没有对外投资、筹资功能)2具有内部的权力与责任。
3分支机构形式多样。
(分公司、分店、分行、分所、营业部)4多属于独立的会计主体。
5. 分支机构的财务报表不需要对外报送。
,三、分支机构类型,典型的分支机构多属于驻外机构,这是根据相对总部的地域划分的。
依据责任目标的不同,分支机构可以分为管理中心、成本中心、销售中心、投资中心。
根据核算对象与记账人员关系,可以分为记账分离型分支机构和记账统一型分支机构。
,四、分支机构与销售代理处,区别:主要体现在经营自主权上 代理处:不具有独立的经营自主权(一般不直接经销商品。
在购销:展销、与客户签订订单方式。
资金使用:备用金。
会计核算上只设现金登记簿、不计算盈亏、不需编制报表) 分支机构:需要领取营业执照五、分支机构与子公司 区别:法人与非法人 分支机构:不是法人。
投资来源于总公司,没有筹资、投资和利润分配问题。
子公司:是独立的法人。
独立承担民事责任,具有筹资、投资和利润分配。
6、C语言与程序设计 江汉大学数学与计算机科学学院 选择 分支 结构 2 1 设计行动计划 1 乘车上班 如果起晚了就打的 否则乘公汽 2 放松一下 如果中了奖就去游港澳 否则到东湖 3 晚自习 如果宿舍有电就在宿舍看书 否则到教室2 特点都是。
7、0|year%4=0&year%100!=0 输入year,根据上述逻辑表达式的值,即可得到year是否闰年的结论。
,2实现程序 /* program e4-10.c */ #include void main() int year;printf(“Input year: “);scanf(“%d“, ,4.5.2判断等边三角形,例4-11 输入三角形的边长值,判断三角形是否是等边三角形。
1问题分析与算法设计 设三角形三条边为a、b、c,则对于输入的任意一组数据,首先要判断其正确性,若不能满足构成三角形的条件时,则数据不正确,要重新输入数据。
能构成三角形时,再判断是否是等边三角形。
下面的逻辑表达式成立时,数据不正确,不能构成三角形。
a=0|b=0|c=0|a+bc|a+cb|b+ca 能构成三角形,且下面的逻辑表达式成立时,则为等边三角形。
a=b&a=c,2实现程序 /* program e4-11.c */ #include void main() int a,b,c;loop: pr。
8、“%c”,getchar(),一种输入单个字符的新方法:单个字符的输入函数 功能:从标准输入设备(键盘)输入一个字符 语法: c=getchar();c是一个字符型变量注意:需要包含头文件 stdio.h,putchar(),一种输出单个字符的新方法:单个字符的输出函数 功能:输出一个字符到标准输出设备(显示器) 语法: putchar(c);c是一个字符变量或常量(如:A),也可以是一个转义字符(如:n)注意:需要包含头文件 stdio.h,单个字符的输入输出举例,include main() char a,b;a=getchar();b=getchar();putchar(a);putchar(n);putchar(b); ,考虑: 输入: 4k回车 输出:?输入:4 k回车 输出:? 为什么有区别?,条件运算符与条件表达式,条件运算符,一般格式条件运算符的一般格式为:表达式1?表达式2:表达式3条件运算符是C语言中惟一的一个三目运算符,其中的“表达式1”、“表达式2”、“表达式3”的类型可以各不相同。
,条件运算符,运算符的优先级与结合性优先级为13, 。
9、 数据结构(Data Structure)是数据的描述和组织形式。
算法(Algorithm)是指对操作步骤的描述。
编写程序的关键就在于合理地组织数据和设计算法,算法的概念,算法:为解决一个问题而采取的方法和步骤,就称为“算法”。
计算机算法:计算机能够执行的对信息加工处理的方法。
计算机算法的分类: 数值运算算法:用于解决求数值解的问题,如计算方程的根、计算积分等; 非数值运算算法:解决需要用分析推理、逻辑推理才能解决的问题,如查找、排序、人工智能中的许多算法。
,简单算法举例,例如:写出求1*2*3*4*5的算法。
,算法1 步骤1:先求1*2,得2 步骤2:将步骤1的结果再*3,得6 步骤3:将步骤2的结果再*4,得24 步骤4:将步骤3的结果再*5,得120,简单算法举例,例如:写出求1*2*3*4*5的算法。
,算法2: 设变量p代表被乘数,变量i代表乘数。
用循环算法实现求解:步骤1:使p=1步骤2:使i=2步骤3:使p*i,乘积仍放在变量p中:p*i=p步骤4:使i的值加1:i+1=i步骤5:如果i的值不大于5,返回s3,重新执行步骤35;否则运算结束,得到最后的结果。
,思。
10、39; ,4,Enter 10 characters:7834tus$#! Letter=3,digit=4,other=3,注意,必须连续输入10个字符,字符之间不能有间隔。
For循环中,每次读入一个字符,根据字符的种类,选择不同的分支执行相应的累加运算。
循环执行了10次,共读入10个字符,做了10次累加运算。
程序中使用字符输入函数getchar()读入字符,用逻辑表达式判断字符的种类,多分支结构则用else-if语句实现。
,5,字符类型,上例中,用到了字符类型的数据,包括字符型变量ch和字符型常量a、Z、0等。
字符型常量 指单个字符,用一对单引号及其所括起的字符来表示。
例如:A、a、9、!是字符型常量,他们分别表示字母A、a,数字字符9和符号!。
,6,字符型常量 ASCII码表,ASCII字符集(附录C,P307)中列出了所有可以使用的字符,共256个 每个字符都有一个唯一的次序值,即ASCII码。
数字字符0、1、2、9的ASCII码按升序连续排列 大写字母A、B、C、Z的ASCII码按升序连续排列 。
11、顺序进行数据处理。
分支结构:程序要对问题进行判断,根据判断的结果,选择不同的处理方式,进行不同的操作。
C语言用于实现分支的结构:if结构switch结构 7.1.1 if语句if语句结构是一种常用的分支结构,是最简单的一种单分支结构,该结构构成一个二叉结构。
,if语句的一般形式为。
if()语法功能:先判断的值,若该值为“真”,则:执行;否则:什么也不执行。
注意: 1. :一般为条件表达式或逻辑表达式。
2. if语句中的一般情况下都是以复合语句的形式出现,即用一对花括号将语句括起来。
如果语句只有一条,则可以不需要花括号 3. if结构的流程图 :,7.1 if结构,例1:从键盘任意输入两个实数a和b,要求a的值总是小于或等于b的值,然后输出这两个数a和b的值。
分析:根据题意,要求ab。
方案:先输入一个较小的数,赋给变量a,再输入一个较大的数,赋给变量b。
问题:输入的限制对用户不合理。
如果先输入的值较大,后输入的值较小,则结果为ab。
方案修正:不论输入的大小顺序怎样,总是会有ab的结果。
,7.1 if结构,7.1 if结构,算法的流程图如图所示:其中虚线。
12、目的,1.熟练实现分支结构的语句if、switch的使用2.熟练掌握分支结构的编写程序方法3.熟练掌握分支结构中的常用算法,特别是菜单设计.4.利用追踪测试方法,查找程序中的逻辑错误。
,二、实验内容(P26-29),2.设计性实验至少选择其中2个完成,其余课后练习,温馨提示,1.验证性实验按照教材要求进行实验,所需要程序代码在网络平台的“课程导学”的“实验引导”中下载。
,三、实验内容示范,1.验证性实验,目的:认识单步测试和断点测试的方法 先按照实验1的操作步骤进入VC+的源程序编辑区,再从“平台”上提供的代码文件test2_10.cpp中取代码,粘贴到编辑区中,编译连接,第1次运行,第2次运行,第3次运行,第4次运行,第5次运行,单步测试逐”步“执行程序,单击该按钮或直接使用F10功能键,此时在菜单栏出现debug或“调试”菜单命令,在程序中出现指向某程序行的箭头,表示程序运行于此 ,并弹出运行程序对话框,每执行一次F10,程序向下执行一步。
注意观察Variabes窗口中变量及值的变化和Watch窗口中设置的变量值的变化,单步测试结束后,需要执行菜单栏中的“D。
13、构:if结构switch结构 4.1.1 if语句if语句结构是一种常用的分支结构,是最简单的一种单分支结构,该结构构成一个二叉结构。
,if语句的一般形式为。
if()语法功能:先判断的值,若该值为“真”,则:执行;否则:什么也不执行。
注意: 1. :一般为条件表达式或逻辑表达式。
2. if语句中的一般情况下都是以复合语句的形式出现,即用一对花括号将语句括起来。
如果语句只有一条,则可以不需要花括号 3. if结构的流程图 :,4.1 if结构,4.1 if结构,例1:从键盘任意输入两个实数a和b,要求a的值总是小于或等于b的值,然后输出这两个数a和b的值。
分析:根据题意,要求ab。
方案:先输入一个较小的数,赋给变量a,再输入一个较大的数,赋给变量b。
问题:输入的限制对用户不合理。
如果先输入的值较大,后输入的值较小,则结果为ab。
方案修正:不论输入的大小顺序怎样,总是会有ab的结果。
,4.1 if结构,算法的流程图如图所示:其中虚线框为if结构。
程序的难点:交换a,b的值。
程序见:example4_1.c例2:从键盘输入一个整数,求该数的绝对值。
阅读例4-。
14、出总价,if (表达式)语句1 else语句2,/计算总价 #include int main() const double unitPrice;double x, price;scanf(“%lf“, ,3.1.1 if - else语句,if (表达式)语句1 else语句2,if (x10) /如果x10有5%的折扣printf(“%.2fn“,x*unitPrice*0.95);else /否则,无折扣printf(“%.2fn“,x*unitPrice);,语句1和语句2可以是单个语句,也可以是用括起来的复合语句,小练习,判断奇偶性。
输入一个整数n,判断n是奇数还是偶数,若为奇数输出”奇数”,若为偶数,输出”偶数”,If ( n是2的倍数)输出“偶数”; else输出“奇数”;,if (n不是2的倍数)输出“奇数”; else输出“偶数”;,n%2=0,n%2!=0,复合语句是用“ ”括起来的一组语句,例如:t=a; a=b;b=t; 复合语句的一般形式为: 说明部分;语句部分; ,3.1.2 复合语句,3.1.3 两个内存变量内容互换,例3.。
15、第 章 4 分支结构 语句概述 问题的引出 if语句的嵌套 switch语句 if语句 C语言的语句可以分为五大类 1 表达式语句 表达式的后面加一个分号 赋值语句 自加减运算符构成的表达式语句 逗号表达式语句注 有些表达式语句是没有意义的。
16、标号1:,标号2:,条件1,条件2,IFTHENELSE结构,标号1:,条件1成立 ?,P1,N,Y,CASE结构,程序结构:TEST/CMP指令(测试条件1) Jx 标号1 ;不满足转标号1处理体P1JMP 标号n+1 标号1:TEST/CMP指令(测试条件2) Jx 标号2 ;不满足转标号2处理体P2JMP 标号n+1 标号2:TEST/CMP指令(测试条件3) Jx 标号3 ;不满足转标号3处理体P3JMP 标号n+1 标号3:TEST/CMP指令(测试条件4) 标号n+1:(公共出口),条件2成立 ?,条件n成立 ?,Pn+1,标号2:,标号n:,标号n+1:,P2,Pn,N,N,Y,Y,例:P178,例4-14,统计成绩。
流程图中虚线框内,例题18:求某数X的绝对值,并送回原处。
求X的绝对值,即要求完成下面的运算:X , X=0Y=-X , X0 显然,这是一个分支程序,程序将根据X的值不同完成不同的运算,其流程图如图4-3所示,程序如下: 首先是各个段寄存。
17、x1 = (-b) / (2 * a)x2 = Sqr(D) / (2 * a)Print x1; “+“; x2; “i“, x1; “-“; x2; “i“End Select,例5:用case结构求一元二次方程的三种根。
,例5,说明: 测试变量或表达式只能是数值表达式或字符串表达式,不能是逻辑表达式。
表达式表与测试变量或表达式的类型必须相同,每一个表达式表是一个或几个值的列表。
表达式表有四种形式: 一个表达式。
如:Case 6 一组用逗号隔开的枚举值。
如:Case 1,3,5,7 TO 如:Case 1 To 10Is 如:Case Is=80 注:Case语句只对单个表达式求值。
如果Case子句里面有多个条件,可以用逗号隔开,其含义和If语句里的运算符OR一样。
只要这些条件有一个为真,Case子句就为真。
,“表达式”例子及含义,Private Sub Command1_Click()Dim Score As IntegerScore = Val(Text1.Text)Select Case ScoreCase 90 To 100Label2。
18、实现:if语句,第一节 分支程序逻辑,第二节 条件表述,第三节 分支结构实现:条件运算符,第五节 分支结构实现:switch语句,第一节 分支程序逻辑,【例4-1】从键盘输入3个数,如果这3个数能构成一个三角形,则输出该三角形的形状信息(等边、等腰、任意三种情况)。
,【简要分析】当实际问题中涉及的条件较多时,如何科学组织条件和表述条件是正确编制程序的关键。
,请先看三个实例。
,由数学知识可知,结论“a、b、c能构成三角形”包含的前提条件:,a、b、c必须同时为正数。
(a0,b0,c0),a、b、c任意两数之和必须大于第三数。
(a+bc,b+ca,a+cb),方法1:用自然语言描述程序逻辑。
,.设置相关环境。
.定义实型变量a、b、c。
(分别表示三角形三边) .输入a、b、c的值。
.a、b、c能构成三角形否?若能转,否则输出“不能构成三角形!”字样转。
.a、b、c能构成等边三角形否?若能则输出“等边三角形!”字样转,否则转。
.a、b、c能构成等腰三角形否?若能则输出“等腰三角形!”字样转结束,否则输出“任意三角形!”字样转。
.结束。
,第一节 分支程序逻辑。
19、据成绩统计不同分数段学生的人数。
两种类型:if语句switch语句,If分支结构,if语句的一般形式:if结构if-else结构if-else if结构,If结构,最简单的分支结构语句,其具体格式为:,if 语句,功能描述:如果表达式的值为真(非0),则执行语句;否则不做任何处理,直接执行if语句的后继语句序列。
这种if结构又称为单分支结构语句。
示例:if(a=b) printf(“%s”, “ a equal to b”);,【注意】表示相等条件时,应使用关系运算符“=”,不能用赋值运算符“=”。
,If结构,/Exam4-1.cpp #include void main( ) int a,b,max;printf(“input two numbers: “);scanf(“%d,%d“, ,程序运行结果: input two numbers:3,5 max=5,【例4-1】输入两个整数,输出其中的大数。
,用于解决双分支选择问题,其格式为:功能描述:如果表达式值为真,则执行语句1;若值为假则程序进入else部分,执行语句任一分支语句执行完毕后,都跳出if-else。