cc程序设计第3章-结构化程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《cc程序设计第3章-结构化程序设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cc 程序设计 结构 课件
- 资源描述:
-
1、C/C+程序设计 C/C+程序设计程序设计第第3章章 结构化程序设计结构化程序设计第第3章章 结构化程序设计结构化程序设计 程序程序-为了让计算机解决一个任务而编写的指令的有序集合。按顺序执行一个个动作就是人在完成一个任务的基本方式。这种方式对应程序中的语句的执行次序,就是顺序结构顺序结构。在完成一个任务的过程中,总会遇到一些选择的状况,条件成立时就可以做某事A,而不成立时则需要做另外一件事B。贯穿我们人的一生中有许许多多选择。所以选择是一种非常常见的结构,这种结构在程序设计称为选择结构选择结构。将一个事情重复做多次的方式,我们称为循环。在程序设计中称这种结构为循环结构循环结构。当然这种循环绝
2、不是简单的重复,每循环一次自有一次的不同结果。顺序结构、选择结构和循环结构就是结构化程序设计思想中的顺序结构、选择结构和循环结构就是结构化程序设计思想中的三种基本结构三种基本结构,由这三种基本结构,几乎可以设计出解决任何复杂问题的程序。3.1 顺序结构程序设计顺序结构程序设计C语言语句分类语言语句分类 一个C程序由若干条C语句组成,每个C语句完成一个特定的操作。C C语言的语句可语言的语句可分为分为5 5类类:(1)表达式语句:如:a=1;c=a+b;(2)流程控制语句:有9种。见第1章(3)函数调用语句:如:scanf(%d,&x);(4)复合语句:如:t=a;a=b;b=t;(5)空语句:
3、一个单独的分号“;”(注意不能随便加分号注意不能随便加分号)3.1 顺序结构程序设计顺序结构程序设计1 1顺序结构顺序结构 顺序结构表示程序中的各操作是按照它们出现的顺序结构表示程序中的各操作是按照它们出现的先后顺序执行,程序从入口处开始,按顺序执行所有先后顺序执行,程序从入口处开始,按顺序执行所有操作(下图中块操作(下图中块A和块和块B可能是一段代码,也可能是一可能是一段代码,也可能是一个语句),直到出口处,所以称为顺序结构。个语句),直到出口处,所以称为顺序结构。块块 A块块 B顺序结构流程图顺序结构流程图3.1 顺序结构程序设计顺序结构程序设计2顺序结构编程举例顺序结构编程举例【例例3-
4、1】编程计算 。设a,b,c 为正整数,要求dit值保留2位小数。分析:1)需要调用库函数中的开平方根函数,故需增加 “#include math.h”头包含命令。2)因开平方根函数sqrt()的值为double类型,故变量dit应定义为double类型。程序:#include#include int main()int a,b,c;double dit;scanf(%d%d%d,&a,&b,&c);dit=sqrt(a*b*b+4*a*c);printf(a=%d,b=%d,c=%d n ,a,b,c);printf(dit=%.2lf n ,dit);return 0;3.1 顺序结构程序
5、设计顺序结构程序设计【例例3-加加1】已知三角形三条边长,计算三角形的面积。已知三角形三条边长,计算三角形的面积。分析:分析:(首先假设给程序提供的三条首先假设给程序提供的三条边长能构成三角形边长能构成三角形)(1)应该提供三个边长值(考虑数据类型)(2)利用海伦公式海伦公式计算三角形面积。(3)输出面积值。注意:(1)程序用到开平方根!应程序用到开平方根!应该加该加math.h头文件。头文件。程序程序:#include#include void main()double a,b,c,s,area;scanf(%lf%lf%lf,&a,&b,&c);s=(a+b+c)/2;area=sqrt(
6、s*(s-a)*(s-b)*(s-c);printf(%lf,area);3.1 顺序结构程序设计顺序结构程序设计【例例3-加加2】假设假设=0,求一元二次方程的实数根,求一元二次方程的实数根分析:分析:(同时假设二次项系数同时假设二次项系数a不等于不等于0)(1)应该提供三个系数值(考虑数据类型)应该提供三个系数值(考虑数据类型)(2)利用求根公式计算两个实根。)利用求根公式计算两个实根。(3)输出这两个实根值。)输出这两个实根值。按照上述次序执行即可。按照上述次序执行即可。注意:程序用到开平方根!注意:程序用到开平方根!程序:#include#include void main()doub
7、le a,b,c,x1,x2,d;scanf(%lf%lf%lf,&a,&b,&c);d=b*b-4*a*c;x1=(-b+sqrt(d)/(2*a);x2=(-b+sqrt(d)/(2*a);printf(x1=%lf,x2=%lfn,x1,x2);3.2 选择结构程序设计选择结构程序设计1.选择结构概念选择结构概念 选择结构是指在程序执行到某处时,需要按照某个条件的真假或某表达式的值决定执行哪些操作。如,三角形面积计算以及一元二次方程求根中遇到的思考问题。选择结构体现了程序的判断能力选择结构体现了程序的判断能力。真(非0)假(0)条件表达式语句段1语句段21.关系运算符关系运算符 (1)关
8、系运算符:=!=(2)结合方向:自左向右 (3)优先级别:=!=优先级6(高)优先级7(低)2.2.关系表达式及值关系表达式及值:由关系运算符和运算对象连接起来的式子。其值是逻辑值“真”或“假”,用1和0表示3.2.1 条件表达式【例例3-23-2】设有语句“int a=12,b=17,c=25;”,试分析下列表达式的值。1)a+1 b-)!=c 3)a b c 4)(+a b)+c 5)a+1=b 6)(a=1)=(b=2)2.逻辑运算符和表达式(1)逻辑运算符:!(逻辑非)、&(逻辑与)、|(逻辑或)(2)优先级:!&|(3)结合性:“!”是单目运算符,结合方向为自右至左,而&、|为双目运
9、算,左结合性。(4)逻辑表达式值:逻辑值,1(真)、0(假)(3)逻辑运算真值表:3.2.1 条件表达式ab!a!ba&ba|b1或非01或非000111或非01或非0010101或非01001001100任意表达式任意表达式“真真”、“假假”的判别方法的判别方法:在进行逻辑运算时,若表达式本身具有逻辑意义自然取其真假值,若遇到表达式本身并不具有逻辑意义时(如:运算量为常量、变量或数学表达式),而其所处的位置又必须确定其真假意义,这种情况C语言规定按“非0为真,0为假”原则确定其真假。3.2.1 条件表达式【例例3-3】设有语句“int x=10,y=15;”,求下列表达式的值。1)!(x 0
10、 3)x 10 4)c+2|x-y逻辑短路现象逻辑短路现象:在进行逻辑表达式的计算时,表达式中的所有运算并不一定都会被执行。当某个运算完成后,整个表达式已经能确定真假结果时,其后剩余的运算就不再计算。这种现象称为“逻辑短路”。【例例3-5】分析阅读下面程序,写出运行结果。程序如下:#include int main()int a=0,b=1,c=2,d=0;c=a&(b+);d=b|(-a);printf(%d,%d,%d,%d n ,a,b,c,d);return 0;3.2.1 条件表达式3.条件运算符及其表达式条件运算符及其表达式(1)条件运算符:条件运算符是C语言中唯一的一个三目运算符
11、,由“?”和“:”构成。是右结合性,优先级比赋值高。(2)条件表达式的一般形式:表达式表达式1?表达式表达式 2:表达式表达式3 其中,表达式1、表达式2、表达式3可以是任何符合C语法规定的表达式,但不能是语句。(3)条件表达式的运算规则:【例例3-6】从键盘输入任意两个实数,使用条件表达式找出其中较小的一个数并输出。程序如下:#include int main()float a,b,min;scanf(%f%f,&a,&b);min=(a b)?a:b;printf(The min number is%f n,min);return 0;【例例3-7】从键盘输入一个字符,若为小写字母,则将其
12、转换成大写字母输出,若为大写则转为小写,若为其它字符则直接输出。程序如下:#include int main()char ch;scanf(%c,&ch);ch=(ch=A&ch=a&ch y时要将x,y互换,两个变量值互换要借用另一个同类型的变量实现#include int main()int x,y,t;printf(n Enter x,y:);/输出提示信息 scanf(%d%d,&x,&y);/输入两个整数 if(x y)t=x;/若x y,互换 x,y 的值 x=y;y=t;printf(%d,%d n,y,x);return 0;此处必须用复合语句!2.if语句嵌套(多分支选择结构
13、)语句嵌套(多分支选择结构)当问题中的选择分支多于两个时,就要用到if语句的嵌套,即上述if语句的两个分支中的语句又是一个单分支或双分支的if语句。如:数学上分段函数:3.2.2 if语句语句if(表达式表达式1)if(表达式表达式2)语句语句1 else 语句语句2else if(表达式表达式3)语句语句3 else 语句语句4内嵌内嵌if内嵌内嵌ifif(表达式表达式1)if(表达式表达式2)语句语句1 else 语句语句2内嵌内嵌ifif(表达式表达式1)if(表达式表达式2)语句语句1else 语句语句3 内嵌内嵌ifif(表达式表达式1)语句语句1else if(表达式表达式3)语句
14、语句3 else 语句语句4内嵌内嵌if if 语句嵌套的一般形式如下:语句嵌套的一般形式如下:3.2.2 if语句语句强调:(1)if语句嵌套层次必须层次分明,不能出现交叉。(2)单双if 语句嵌套时,else与if的匹配原则是:else总是与它前面离它最近的、目前尚未配对的if匹配。(3)为避免混淆,建议将嵌套在内层的if语句整体用一对括起来。【例例3-9】有下列数学分段函数,编程实现对于输入的任意实数x,计算对应函数值y。Y输入输入 xx 0y=-1x=10y=0y=1输出输出 x,yNYN3.2 选择结构程序设计选择结构程序设计if语句嵌套语句嵌套#include#include vo
15、id main()double x,y;printf(请输入自变量 x 的值:);scanf(%lf ,&x);if(x=15)y=sqrt(x*x*x 20);else y=x*x+x 1;printf(x=%.2f y=%.2f n ,x,y);说明:说明:if语句允许嵌套,但嵌套的层数不宜太多。在实际编语句允许嵌套,但嵌套的层数不宜太多。在实际编程时,应适当控制嵌套层数(程时,应适当控制嵌套层数(2-3层)。层)。3.2.2 选择构程序设计选择构程序设计if语句嵌套语句嵌套如下列程序段实现对于一个百分制输出对应的等级如下列程序段实现对于一个百分制输出对应的等级:int sc;char g
16、rade;scanf(%d,&sc);if(sc=90&sc=80&sc=70&sc=60&sc=0&sc60)grade=E;else grade=0;printf(sc=%d,grade=%c n,sc,grade);分析:分析:该程序该程序段嵌套层次过段嵌套层次过多,程序的清多,程序的清晰度较差!晰度较差!若再不注意若再不注意缩进格式。则缩进格式。则程序阅读起来程序阅读起来更加困难!更加困难!3.2.3 switch语句语句switch语句的一般语句的一般形式及流程图:形式及流程图:switch(exp)case 常量表达式1:语句组1;case 常量表达式2:语句组2;case 常量表
17、达式n:语句组n;default:语句组n+1;switch语句执行语句执行过程:过程:exp与与常量表达式常量表达式n的值相符吗?的值相符吗?YN语句组语句组n计算计算exp的的值值Yexp与与常量表达式常量表达式1的的值相符吗?值相符吗?语句组语句组1Nexp与与常量表达式常量表达式2的值相符吗?的值相符吗?YN语句组语句组2语句语句组n+1Switch后后的的下一条语句下一条语句3.2 选择结构程序设计选择结构程序设计switch语句语句 强调:强调:(1)exp必须是整型或字符型表达式。(2)exp按顺序与某个case后常量表达式值相等时,执行其后的语句组,若在该语句组中遇到break
18、语句,则立即跳出switch。若无break语句,则不再做任何判断直接执行下一个 case后的语句组,直到遇到某个分支后有break语句(或者遇到switch结束标志)跳出switch。(3)多个case分支可共用一个语句组,语句组只写在最后一个分支上。(4)要求各case后常量表达式值各不相同。(4)各分支与次序无关。(5)switch可嵌套。()default分支为可选项,有default时,没有匹配分支时直接执行它。根据问题需求决定是否需要default分支。3.2.3 switch语句语句【例例3-10】有5个人在一个部门上班,每天上班时都要履行签到手续,即报上自己的工号后,大屏幕上显
19、示“*已经报到!”,其中“*”是他们的姓名,而他们的号码分别从1到5号。编程完成某一个人的签到过程。分析:分析:因为有5个人,故就有5种可能,可以使用switch来实现程序如下:#include void main()int num;printf(Input your number(1 5):);scanf(%d,&num);switch(num)case 1:printf(王 林已经签到!n );break;case 2:printf(李小波已经签到!n );break;case 3:printf(赵天意已经签到!n );break;case 4:printf(杜成刚已经签到!n );bre
20、ak;case 5:printf(胡国栋已经签到!n );break;default:printf(工号输入错误!n );【例例3-11】已知某超市为了奖励员工的销售积极性,实行按当月销售总额进行提成奖励制度,其提成比例计算方法如下:sales 10000 没有提成 10000=sales 20000 按10%提成20000=sales 30000 按15%提成30000=sales=50000 按20%提成 已知某个员工在某月的销售总额,试编程计算其提成比例(注意,只按总额一次性计算,在哪个范围就按哪个比例提成,且以*%形式显示结果)。分析:分析:销售总额的取值有太多种可能,几乎不可能一一列
21、出。分析可知,上述提成都是以10000为倍数进行分段,故对销售总额除以10000取整(小数可忽略不记),则可以将无法列出的可能性化归为有限的几种情况,从而可用switch语句实现提成的计算。销售额与提成比例的对应关系,如表3-2所示。销售总额销售总额(sales)(int)(销售总额销售总额/10000)提成比例提成比例0 10000(不含(不含10000)0d=0%10000 20000(不含(不含20000)1d=10%20000 30000(不含(不含30000)2d=15%30000 50000(不含(不含50000)3,4d=18%50000及以上及以上5以及以上整数以及以上整数d=
展开阅读全文