ImageVerifierCode 换一换
格式:PPT , 页数:33 ,大小:181KB ,
资源ID:373983      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-373983.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第三章 结构化程序设计.ppt)为本站会员(eventdump275)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

第三章 结构化程序设计.ppt

1、第三章 结构化程序设计,3.1 顺序结构 3.2 选择结构 3.3 循环结构 3.4 其它控制语句 3.5 应用举例,3.1 顺序结构,顺序结构:按照语句出现的先后顺序依次执行。 3.1.1 表达式语句形式: 表达式;例如:,i+;sum=a+b; coutabendl;,3.1.2 空语句,形式: ; 作用: 当程序中某个位置在语法上需要一条语句,而在语义上又不 要求执行任何动作时,可放上一条空语句。一般适用于在循环语句中做空循环体;如:,for (m = 0; m1000; m+) ;,3.1.3 复合语句,形式:变量定义 语句组 作用:当程序中某个位置在语法上只允许一条语句, 而在语义上

2、要执行多条语句才能完成某个操作时,需要使用复合语句。,例如:,if(x=0)couta; coutb;,3.2 选择结构,选择结构:根据条件的值来判断程序的流向。 C/C+中,提供两类选择控制语句:if语句,实现n分支,要求n个表达式;switch语句,实现多分支;只用1个表达式。,3.2.1 if 语句,if语句的三种形式:形式1: if (表达式) 语句作用:当表达式为真(非0)时,执行表达式后面的语句, 否则绕过该语句,而执行其后面的语句。 【例3.1】已知两个数x和y,比较它们的大小,使得x大于y。,if(xy) t=x; x=y; y=t; coutxy;,#include “ios

3、tream.h“ void main() int x,y,t;coutxy;if (x“yendl; ,程序:,形式2: if (表达式) 语句1else语句2作用:当表达式为真(非0)时,执行语句1,否则执行语句2。【例3.2】计算分段函数:,要使max存放x、y中大者, min存放小者,分析下面程序段正确否?,if (x) y=sin(x)+sqrt(x*x+1); elsey=cos(x)x*x+3*x;,if (xy)max = x; min = y; elsemax = y; min = x;,形式3:if (表达式1)语句1else if (表达式2)语句2else if (表达式

4、n)语句nelse语句n+1 作用:当表达式1的值为true时,执行语句1;否则判断当表达式2的值为true时执行语句2;依此类推,若表达式的值都为false,则执行语句n+1。,【例3.3】已知成绩mark,要求显示对应五级制的评定,评定条件:,if (mark = 90) cout “优“; else if (80 = mark ,if (mark = 60) cout= 70) cout= 80) cout=90) cout “优“; elsecout “不及格“;,分析下面两程序段:,注意: 不管有几个分支,程序执行一个分支后,其余分支不再执行。 else if不能写成elseif。

5、当多分支中有多个表达式同时满足,则只执行第一个与之匹配的语句。,if语句的嵌套形式,if语句的嵌套是指if或else后面的语句本身又是一个if语句。 如: if(表达式1)if(表达式11)语句11else 语句12else语句2,if (表达式1)if (表达式2) 语句1else 语句2,注意:为了增强程序的可读性,建议采用锯齿型的书写形式。else始终与它上面的最近的if语句配对,而这个if语句又没有其它的else与之匹配 。,如何使之与第一个if配对?,【例3.4】已知x,y,z三个数,使得xyz。可用一个IF语句和一个嵌套的IF语句实现。,if (xy) t=x ; x=y ; y=

6、t; if (yz) t=y ; y=z ; z=t ; if (xy) t=x ; x=y ; y=t ;,3.2.2 switch语句,形式: switch(表达式) case 常量表达式1:语句组1;break;case 常量表达式2:语句组2;break;case 常量表达式n:语句组n;break;default: 语句组n+1 ,执行顺序:当表达式的值与某个常量表达式的值相等时,则执行该常量表达式后面相应的语句,若使用了break, 则执行完该语句后便退出switch语句;否则,还要依次执行其后面的各条语句。若找不到相匹配的常量表达式,则执行default后面的语句。,必须为整型或

7、字符型,2a+1 (1=a2) 【例3.5】用switch结构求分段函数b= a2-3 (2=a4)a 其它,正确: switch(int)a) case 1: b=2*a+1;break;case 2: case 3: b=a*a-3;break;default: b=a; ,错误: switch(int)a) case a=1 ,共用同一个语句组,思考:若省去break语句,情况会怎样?,3.3 循环结构,C语言提供了三种循环语句:,流程图如下:while do-while for,while (表达式)语句,do 语句 while (表达式);,for(表达式1;表达式2;表达式3) 语

8、句,【例3.6】用上述三种循环语句求,while语句:,n = 1;s = 0; while (n=100)s=s+n;n=n+1; ,n = 1; s = 0;do s = s+n;n = n+1; while(n=100);,do-while语句:,for (n = 1,s = 0;n=100;n+)s=s+n;,for语句:,【例3.7】求下列级数的前m项和,要求其误差小于0.00001 。,分析: 级数的通项为 xm/m!,第i项ti与第i-1项 ti-1之间存在如下关系: ti=t i-1*x/i,int i(1);float t(1),e(0); while(t1e-5)e+=t;

9、 t/=i; i+;,int i(1);float t(1),e(0); for( ;t1e-5; ) e+=t; t/=i; i+;,for(i=1,t=1,e=0;t1e-5; e+=t, t/=i,i+);,分号不能省略,空语句,3.3.3 循环的嵌套,循环的嵌套:循环体内包含另一个完整的循环结构。 三种循环语句皆可以相互嵌套 。 【例3.8】打印九九乘法表,#include “iostream.h” void main() cout“t 九九乘法表“endl;cout“t -“endl;for(int i=1;i=9;i+)for(int j=1;j=9;j+)couti“j“=“i*

10、jt;coutendl; ,程序:,思考:打印上三角或下三角程序如何改动?,3.4 其它控制语句,break语句和 continue语句 break语句有两个作用:用于switch语句中,保证多分支情况的正确执行;用于循环语句中,强制终止本层循环(跳出本层循环)。 Continue语句的作用:绕过本次循环,强行进入下一次循环。 即它只能跳过循环体中continue后面的语句。 注意: continue只能用于循环语句,【例3.9】 break 和 continue 语句的区别,for(m=20;m0;m-) if(m % 6=0) break;coutm“ “;,for(m=20;m0;m-)

11、 if(m % 6=0) continue;coutm“ “;,3.5 应用举例,1. 求最大值(或最小值) 【例3.10】从键盘输入一组数,求这组数中的最大值。,cinm; max=m; /第一个数假设为最大数 while (cinm,m!=0)if (mmax) max=m;,max=0; /设一个较小的数为最大值的初值 for(int i=0;im;if (mmax) max=m; ,以输入0作为结束,输入数的个数未知,输入数的个数已知,2.最大公约数 【例3.11】用辗转相除法求两自然数的最大公约数。 算法思想: (1) 对于已知两数m,n,使得mn (2) m除以n得余数r (3)

12、若r=0,则n为最大公约数,结束;否则执行(4) (4) mn,nr,再重复执行(2),辗转相除法 while (r=m % n)!=0) m=n;n=r; coutn;,辗转相减法m=m-n mnn=n-m nmm、n为公约数 m=n while (m!=n)if(mn)m-=n;else n-=m;,#include “iostream.h“ void main( ) int m, n, t, r;coutmn;if(mn) t=m; m=n; n=t; while (r=m % n)!=0)m=n; n=r;cout“最大公约数为 “mendl; ,程序:,3.质数【例3.12】求210

13、0之间的素数,并以每行显示8个质数。质数:除1和它本身外,不能被其他任何一个整数整除的自然数。 分析: (1) 判别某数m是否为素数最简单的方法是:用i=2,3,m-1逐个判别m能否被j整除,只要有一个能整除,m不是素数,退出循环;若都不能整除,则m是素数。可进一步证明:若m不能被 中任一整数整除,则m为质数。 (2) 每行显示8个,只要对求得的质数计数,满8个换行。, for(i=2;m%i!=0;i+); if(i=m), k= sqrt(m); for(i=2;ik),程序:#include “iostream.h” void main() int m,i,countm(0);bool

14、tag;for(m = 2;m=100;m+) tag=false; /tag初值为falsefor(i = 2;i=m-1;i+)if (m % i = 0) tag=true; if (tag=false) /等价于 if (!tag) coutmt;countm+; if (countm % 8 =0) coutendl;,4. 求部分级数和 【例3.13】计算sin(x)的值,公式为:当第n项的绝对值小于10-5时结束。 分析:关键是找部分级数和的通项,如下表示:ti+2= -1*ti*x*x/(i+1)*(i+2) i=1,3,5,7,t=x; while(fabs(t)=1e-5)

15、sinx+=t;t=-t*x*x/(i+1)*(i+2);i=i+2;,5. 穷举法 【例3.14】百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现有100元钱要买100只鸡,列出所有可能的购鸡方案。 分析:(1) 设母鸡、公鸡、小鸡各为x、y、z只,列出方程为:x+y+y = 1003x+2y+0.5z = 100 三个未知数,两个方程,此题有若干个整数解。(2) 采用试凑法(也称为穷举法或枚举法)来实现,即将可能出现的各种情况一一罗列测试,判断是否满足条件,采用循环结构来实现。,用三重循环来实现: for(x=0;x100;x+)for(y=0;y100;y+)for(z=

16、0;z100;z+)if(3*x+2*y+0.5*z)=100),用二重循环来实现: for(x=0;x=33;x+) for(y=0;y=50;y+) z=100-x-y;if(3*x+2*y+0.5*z)=100)coutsetw(9)xsetw(9)ysetw(9)zendl;,5.递推法 “递推法”也称为 “迭代法”,其基本思想是把一个复杂的计算过程转化为简单过程的多次重复,每次重复都从旧值的基础上递推出新值,并由新值代替旧值。,【例3.15】利用牛顿迭代法求方程在x0附近的根的近似值。牛顿迭代公式为:输入x0值,由公式求出x1,再由x1从公式求出x2,直到 时可视x n+1为方程f(

17、x)=0在X0附近的一个近似根 ,设为10-5 。,x1=1; do x0=x1;x1=x0 - (3*x0*x0*x0-4*x0*x0-5*x0+13)/(9*x0*x0-8*x0-5) while(fabs(x1-x0)1e-5);,思考: 若迭代最高次数M后,即使达不到精度也要输出结果, 程序该如何修改?,6.分类统计 【例3.16】对输入一串字符,统计其中单词的个数、字母个数、数字个数。规定单词之间用一个空白符分开(空白符包括空格符、水平制表符、换行符)。以z表示输入结束。 分析: (1)统计单词的个数,可通过统计空白符的个数得到。 (2)由于标准输入流cin输入时会把空白符作为输入结束符,所以应使用getchar()函数逐一读取字符,该函数必须用”stdio.h”。,int alpha(0), num(0),ch(0),word(0);while(c=getchar( )!=EOF) / EOF代表文本结束符,对应输入CTRL+Z if(c= |c=t|c=n) word+;if(c=a ,

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1