版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第4 4章章 分支结构程序设计分支结构程序设计4.1 算法与基本程序结构1234.1.1 算法算法著名的计算机科学家沃思曾提出一个经典公式:著名的计算机科学家沃思曾提出一个经典公式:数据结构算法程序数据结构算法程序这一公式说明:这一公式说明:w程序由程序由数据结构数据结构和和算法算法两部分构成。两部分构成。w数据结构(数据结构(Data Structure)是数据的描述和组织)是数据的描述和组织形式。形式。w算法(算法(Algorithm)是指对操作步骤的描述。)是指对操作步骤的描述。w编写程序的关键就在于合理地组织数据和设计算法编写程序的关键就在于合理地组织数据和设计算法1. 算法的概念算
2、法的概念算法:算法:为解决一个问题而采取的方法和步骤,就称为为解决一个问题而采取的方法和步骤,就称为“算算法法”。计算机算法:计算机算法:计算机能够执行的对信息加工处理的方法。计算机能够执行的对信息加工处理的方法。计算机算法的分类:计算机算法的分类:w数值运算算法:数值运算算法:用于解决求数值解的问题,如计算方用于解决求数值解的问题,如计算方程的根、计算积分等;程的根、计算积分等;w非数值运算算法:非数值运算算法:解决需要用分析推理、逻辑推理才解决需要用分析推理、逻辑推理才能解决的问题,如查找、排序、人工智能中的许多算能解决的问题,如查找、排序、人工智能中的许多算法。法。 2. 简单算法描述简
3、单算法描述例如:例如:写出求写出求1 1* *2 2* *3 3* *4 4* *5 5的算法。的算法。4.2 基本程序结构基本程序结构所有程序都可以由如下三种基本结构完成:所有程序都可以由如下三种基本结构完成:u顺序结构:顺序结构:是最简单的一种结构,顺序结构中的各是最简单的一种结构,顺序结构中的各部分操作按照书写顺序依次执行,不存在任何跳转。部分操作按照书写顺序依次执行,不存在任何跳转。u分支结构:分支结构:也叫选择结构,通过条件判断选择程序也叫选择结构,通过条件判断选择程序执行流程。执行流程。循环结构:循环结构:是对一组操作进行重复操作的结构,往是对一组操作进行重复操作的结构,往往需要借
4、助对循环控制条件的判断,决定是否继续重往需要借助对循环控制条件的判断,决定是否继续重复执行操作。复执行操作。4. 2. 1算法的表示计算机算法可以采用如下方式来表示:计算机算法可以采用如下方式来表示:w自然语言描述自然语言描述w传统流程图描述传统流程图描述NS流程图描述流程图描述算法的表示w自然语言描述算法:自然语言描述算法:w自然语言就是人们日常生活中所使用的语言,自然语言就是人们日常生活中所使用的语言,可以使用人类可以使用人类语言加上数学语言语言加上数学语言描述一个算描述一个算法的实现。法的实现。w特点:特点:通俗易懂,但描述不直观、文字冗长,通俗易懂,但描述不直观、文字冗长,容易造成歧义
5、。一般不采用这种方式。容易造成歧义。一般不采用这种方式。 1. 流程图的算法描述o流程图是描述程序的控制流程和指令(命令/语句)执行情况的有向图,它是一种比较直观的表达形式,常用的流程图符号:w传统流程图描述算法:传统流程图描述算法:w传统流程图采用传统流程图采用图图形符号配合文字说明形符号配合文字说明来表示各种操作。来表示各种操作。w特点:特点:形象直观,形象直观,易于理解。易于理解。w常用的流程图符号常用的流程图符号如右图所示。如右图所示。用传统流程图描述顺序结构(如下图)用传统流程图描述顺序结构(如下图)例1:输入a,b,c三个变量,分别输出a,b,c的值开始开始输入a值结束结束输入b值
6、输入c值输出a,b,c值# #include include main( )main( )int ab,c;int ab,c; scanf(“%d,%b,%c”,&a,&b,&c); scanf(“%d,%b,%c”,&a,&b,&c); printf(“a=%d,b=%d,c=%dn”, a,b,c printf(“a=%d,b=%d,c=%dn”, a,b,c ););传统流程图描述选择结构(如下图)传统流程图描述选择结构(如下图)例2:o编写程序,判断输入的整数是否为6,若是,显示R,不是,显示G,否则,显示 W和 S;o本题需要根据所输入
7、的值(假设赋给a)是否为6来选择执行相应的两条语句;o在C语言中判断a中的值是否为6,使用”if a=6”的形式,一般在进行编程之前先画出程序流程图程序流程图开始开始输入a值a=6?a=6?显示R显示W显示G显示S结束结束真真假假用N-S流程图输入a的值a=6显示R显示G显示W显示S程序代码# #include main( )int a; printf(“input a: ); scanf(“%d”,&a); if(a=6) /*if语句开始*/ printf(“R!n); printf(“G!n); else printf(“W!n); printf(“S!n”); /*if语句结束
8、*/ 运行结果第一次运行结果:Input a:6 a=6 R! G!第二次运行结果:Input a:5 a=5 W! S! 4. 2. 2 分支结构的算法描述例例1:用自然语言描述:用自然语言描述n!的求解过程。的求解过程。第第1步:步:读取读取n的值。的值。第第2步:步:如果如果n0,提示,提示“输入错误输入错误”,跳至第,跳至第6步。步。如果如果n0,则给存放结果的变量,则给存放结果的变量s和代表乘数的和代表乘数的变量变量i赋初值赋初值1;第第3步:步:计算计算s=s*i;将乘数变量将乘数变量i增加增加1,即,即i=i+1,得到下一个乘,得到下一个乘数;数;第第4步:步:如果如果in,跳转
9、到第,跳转到第3步,重复执行第步,重复执行第3步和步和第第4步,否则执行第步,否则执行第5步;步;第第5步:步:输出输出s的值的值第第6步:步:结束算法结束算法例如:计算n!流程图开始s=s*in=n?i=i+1输出s的值结束nyyn#include main( )main( ) int s,i=1; int s,i=1;Scanf(“%d,%d”,&n);Scanf(“%d,%d”,&n);If(i=n) If(i=n) Printf(“%d”,s); Else s=i*1; i=i+1; Printf(“%d,%d”,s,i);Printf(“%d,%d”,s,i);设置变
10、量n,i算法描述工具2:wN-S流程图描述算法:流程图描述算法:w N-S流程图与传统流程图相比,取消流程线的使流程图与传统流程图相比,取消流程线的使用,算法只能自上而下执行,更适合结构化程序用,算法只能自上而下执行,更适合结构化程序设计。设计。w N-S流程图是推荐使用的算法描述工具。流程图是推荐使用的算法描述工具。用用N-SN-S流程图对程序三种结构的描述:流程图对程序三种结构的描述:AB例如:用例如:用N-SN-S流程图描述求解流程图描述求解n!n!的算法的算法3.算法的表示的优缺点算法的表示的优缺点例如:用传统流程图描述求解例如:用传统流程图描述求解n!的算法。的算法。4.2.3 4.
11、2.3 分支结构分支结构23415 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式1逻辑运算符逻辑运算符w有有3 3个逻辑运算符:个逻辑运算符: & & 逻辑与逻辑与 双目运算符双目运算符 左结合左结合 | | 逻辑或逻辑或 双目运算符双目运算符 左结合左结合 ! 逻辑非逻辑非 单目运算符单目运算符 右结合右结合w优先级别:优先级别:由低到高为:由低到高为:| & | & ! w相对于其他运算符的优先级:相对于其他运算符的优先级: (低)(低) 赋值运算符赋值运算符 | & | & 关系运算符关系运算符 算术运算符算术运算符 (高)(高) ! 11
12、. 1. 字符类型的逻辑表达式字符类型的逻辑表达式char ch; (ch = a & ch = A & ch = 0 & ch = a & ch = A & ch = 0 & ch = 9x=1 关系运算-1 x = -1 & x = a) & (ch = a & ch = a & ch = A & ch =a&ch=A & ch=0 & ch=9) k+; else m+; printf(字母的个数为:%dn,i); printf(空格的个数为:%dn,j); printf(数字
13、的个数为:%dn,k); printf(其他符的个数为:%dn,m);题:输入两个整数,分别存放在变量a和b中, 输出其中的较大数。#include main( )int a,b; scanf(“a=%d,b=%d, ”,&a,&b); if(ab) printf(“a=%d”,a); (a是较大数是较大数) else printf(“a=%d”,b); 例3:判断体重o题意:判断某人体重是否在题意:判断某人体重是否在50-5550-55公斤之间,若公斤之间,若在此范围内则显示在此范围内则显示“OK!”OK!”,否则显示,否则显示“NO!”NO!”;o1 1 编程思路:编程思路
14、: 首先将体重存放在变量首先将体重存放在变量W W中,要使中,要使W W的值在的值在50-5550-55范围内,应同时满足范围内,应同时满足“W50”“W50”和和W W55”.55”.在在C C语言中写成语言中写成(W(W=50 & W=50 & W=55).=55).o2. 2. 画程序流程图画程序流程图(N-S)(N-S)画程序流程图(N-S)输入体重W的值W=50 & W=55显示OK!显示NO!程序代码#include main( )float w=0.0; printf(“input w: ); scanf(“%f”,&w); printf(“w=%
15、fn”, w ); if(w=50”&”w=55) printf(“OK!n); else printf(“NO!n); 运行结果第一次运行结果:Input w:53.5 w=53.5 ok!第二次运行结果:Input w:60.7 w=60.7 No!If嵌套1题:输入三个整数题:输入三个整数a,b,c,要求按由小到大的顺序要求按由小到大的顺序输输 出。出。o程序程序#include main( )int a,b,c,t; scanf(“%d,%d,%d”,&a,&b,&c); if(ab) t=a;a=b,b=t(a和和b的互的互换换) if(ac) t=a
16、;a=c,c=t (a和和c的互的互换换) if(bc) t=b;b=c,c=t (b和和c的互的互换换) printf(“%d,%d,%dn“,a,b,c); If嵌套11If语句嵌套例例2 2:求百分制成绩等级:求百分制成绩等级o输入百分制成绩,要求输出成绩等输入百分制成绩,要求输出成绩等级级A、B、C、D。o 90分以上为分以上为A,o 89-89分为分为B,o 70-79分为分为C,o 60-69分为分为D,o 60分以下为分以下为E。程序:o#includemain()int a; /*a 是输入的成绩是输入的成绩*/printf(“Enter a:”);scanf(“%d”,&am
17、p;a);printf(“a=%d”,a)oif(a=90) printf(“your grade is An”);else if(a=80) printf(“your grade is Bn”);else if(a=70) printf(“your grade is Cn”);else if(a=60) printf(“your grade is Dn”);else printf(“your grade is En”);运行结果:运行结果:Enter a:98Enter a:98a=98;a=98;your grade is Ayour grade is A思考题:思考题:o火车托运行李收费
18、问题,行李重量火车托运行李收费问题,行李重量W在在20公斤内免费,行公斤内免费,行李重量在李重量在20-50公斤内,每公斤收费公斤内,每公斤收费2元,行李大于元,行李大于50公公斤,每公斤收费斤,每公斤收费4元,编程计算行李收费问题。元,编程计算行李收费问题。o分析分析o(1)行李重量)行李重量Wo(2)20公斤内免费公斤内免费 w20 & w50 o 设计费变量设计费变量Y;o y=o Y=0 w=20 Y=0 w20 & w20 & w20 & w20 & w=50 If语句1If语句1If语句的嵌套格式1If语句的嵌套1If语句的嵌套1If语句的嵌
19、套1If语句的嵌套语句的嵌套1If语句的嵌套1If语句的嵌套1If语句的嵌套1If语句的嵌套1o在编写程序时,经常会有按不同情况分转的多路问题,之前可以按嵌套“if-else-if”语句来实现,但如果分支较多,则if语句的层数就太多了,导致程序容易出错,C语言提供了处理多分支选择。11 E E是常量表达式是常量表达式4.4 switch语句14.4 switch语句说明:说明:wswitchswitch语句中的语句中的表达式表达式通常为通常为整型或字符整型或字符型型;w所有所有casecase分支中的分支中的常量不能重复常量不能重复出现。出现。w所有所有casecase分支的分支的顺序顺序没有
20、关系没有关系。w通常情况下,通常情况下,每个分支每个分支的语句的语句后后都要加一个都要加一个breakbreak语句,表示语句,表示跳出跳出switchswitch语句语句;程序在执;程序在执行时,去行时,去匹配某个匹配某个casecase分支,然后开始执行其分支,然后开始执行其后的语句,执行后的语句,执行完该分支完该分支的语句后,如果有的语句后,如果有breakbreak语句则语句则结束结束,否则,否则继续执行继续执行下面的语句,下面的语句,直到直到遇到遇到breakbreak或整个或整个switchswitch语句的最语句的最后。后。4.4 switch语句说明:说明:w每个分支的语句可以
21、是单条语句,也可以是多条每个分支的语句可以是单条语句,也可以是多条语句,多条语句不用加花括号。语句,多条语句不用加花括号。w有时候,可以特意省略某个分支的有时候,可以特意省略某个分支的breakbreak语句,让语句,让多个分支共享某些代码,从而简化代码编写。多个分支共享某些代码,从而简化代码编写。wswitchswitch可嵌套可嵌套。例:例: 用用switch语句求百分制成绩等级求百分制成绩等级o输入百分制成绩,要求输出成绩等输入百分制成绩,要求输出成绩等级级A、B、C、D。o 90分以上为分以上为A,o 89-89分为分为B,o 70-79分为分为C,o 60-69分为分为D,o 60分
22、以下为分以下为E。程序:o#includemain()int a; /*a 是输入的成绩是输入的成绩*/printf(“Enter a:”);scanf(“%d”,&a);Switch(a/10)o case 10: case 9: printf(“your grade is An”); case 8: printf(“your grade is Bn”); case 7: printf(“your grade is Cn”); case 6: printf(“your grade is Dn”); default: printf(“your grade is En”);运行结果:运行结果:Enter a:99Enter a:99a=99;a=99;your grade is Ayour grade is AB BC CD DE E改写程序去掉多余的等级o#includemain()int a; /*a 是输入的成绩是输入的成绩*/printf(“Enter
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外研八下英语Unit 2 Developing ideas《合作探究二》课件
- 人教 八年级 语文 下册 第2单元《8.时间的脚印 第1课时》课件
- 2025 高中信息技术数据结构在电商用户评价信息挖掘课件
- 海洋渔业资源增殖项目可行性研究报告
- 小学综合课程和综合实践活动
- 2025 高中信息技术数据与计算之算法的最小生成树算法课件
- 春季大风天气消防安全指南与防范措施
- 2025 高中信息技术数据与计算之数据与计算提升在线教育资源共享课件
- 2026年干法电极设备国产化与智能制造升级实践
- 2026年零点定位系统在五轴加工快速换产应用
- 2025年重庆市初中学业水平考试中考(会考)生物试卷(真题+答案)
- 矿业项目进退场交接措施
- 项目施工奖惩管理办法
- 【城市轨道交通客运组织优化研究-以天津地铁为例11000字(论文)】
- 喝酒划拳活动方案
- T/CHES 59-2021组合式金属防洪挡板安装、验收及维护规范
- 建筑行业安全生产部岗位职责
- 宁夏砖瓦用粘土矿产地质勘查技术规程 DB64-T 1754-2020
- 校长在人工智能教师培训专题研讨会上讲话:主动拥抱人工智能才能为学生开辟更广阔的成长空间
- 电工实训项目二常用电工工具、仪表使用模块二 认识和使用常用电工仪表
- 《经络与腧穴》课件-腧穴
评论
0/150
提交评论