控制程序流程课件.pptx

上传人:修**** 文档编号:85110100 上传时间:2023-04-09 格式:PPTX 页数:42 大小:289.74KB
返回 下载 相关 举报
控制程序流程课件.pptx_第1页
第1页 / 共42页
控制程序流程课件.pptx_第2页
第2页 / 共42页
点击查看更多>>
资源描述

《控制程序流程课件.pptx》由会员分享,可在线阅读,更多相关《控制程序流程课件.pptx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第0404章控制程序流程章控制程序流程-2-本章内容安排本章内容安排&whilewhile循环循环&dowhiledowhile循环循环&forfor循环循环&高级循环高级循环&switchswitch-3-循循环的概念的概念&计算机擅长的工作之一是重复做相同的事情。计算机擅长的工作之一是重复做相同的事情。&许多编程任务可以通过重复相同的操作来完成,许多编程任务可以通过重复相同的操作来完成,通过指定次数或设定条件来控制执行过程。多次重通过指定次数或设定条件来控制执行过程。多次重复执行的结构称为复执行的结构称为循环循环,每一次循环称为,每一次循环称为迭代迭代。&whilewhile、dowhi

2、ledowhile、forfor-4-while循循环&在指定条件为在指定条件为truetrue的情况下,程序重复执行,直的情况下,程序重复执行,直到指定条件变为到指定条件变为falsefalse。&条件放在条件放在whilewhile之后的()内,循环执行的语句放之后的()内,循环执行的语句放在一对内。在一对内。表达式表达式表达式表达式F F F F循环体语句循环体语句循环体语句循环体语句T T T Twhile(表达式)循环体语句;-5-显示示099#include#include using namespace std;using namespace std;int main()int

3、main()int x=0;int x=0;while(while(x100 x100)cout x ;cout x ;x+;x+;return 0;return 0;p假如循假如循环语句中没有句中没有x+,则while循循环 的条件永的条件永远为真,真,导致循致循环一直一直执行,行,称称为无限循无限循环或死循或死循环。-6-显示示099,每行,每行5个个#include#include using namespace std;using namespace std;int main()int main()int x=0;int x=0;while(x100)while(x100)cout x

4、 ;cout x ;x+;x+;if(x%5=0)coutendl;if(x%5=0)coutendl;return 0;return 0;p递增增x,每当,每当x是是5的倍数的倍数时,输出回出回车。-7-显示前示前20个整除个整除14的正整数的正整数#include#include using namespace std;using namespace std;int main()int main()int x=0,count=0;int x=0,count=0;while(while(truetrue)x+;x+;if(x%14=0)if(x%14=0)coutx;coutx19)if(c

5、ount19)break;break;return 0;return 0;p循循环中中让while的条件的条件为true,构,构 造造1个无限循个无限循环。p在循在循环体内,体内,调用用break语句,可句,可 立即停止循立即停止循环的的执行。行。p使用使用while(true)结构构时,要确,要确 保循保循环能能够停止。停止。-8-显示前示前20个整除个整除14的正整数的正整数#include#include using namespace std;using namespace std;int main()int main()int x=0,count=0;int x=0,count=0;

6、while(count19)while(count19)x+;x+;if(x%15!=0)if(x%15!=0)continue;continue;coutx;coutx;count+;count+;return 0;return 0;p在循在循环中遇到中遇到continue语句,将句,将 跳跳过余下的余下的语句,句,执行下一次行下一次 迭代。迭代。pbreak结束当前循束当前循环,而,而continue 结束本次迭代。束本次迭代。-9-显示前示前20个整除个整除14的正整数的正整数#include#include using namespace std;using namespace std

7、;int main()int main()int x=0,count=0;int x=0,count=0;while(count19)while(count19)x+=14;x+=14;coutx;coutx;count+;count+;return 0;return 0;p14倍数,从倍数,从14开始,依次开始,依次递增增14。-10-本章内容安排本章内容安排&whilewhile循环循环&dowhiledowhile循环循环&forfor循环循环&高级循环高级循环&switchswitch-11-dowhile循循环&whilewhile在执行循环前检查条件,如果此时条件为在执行循环前检查

8、条件,如果此时条件为falsefalse,则一次循环也不执行。,则一次循环也不执行。&dowhiledowhile在循环之后检查条件,条件为在循环之后检查条件,条件为truetrue,继,继续循环,条件为续循环,条件为falsefalse结束循环。结束循环。do 循环体语句;while(表达式);表达式表达式F循环体语句循环体语句T-12-重复重复显示示单词指定次数指定次数#include#include using namespace std;using namespace std;int main()int main()int badger;int badger;coutHow many

9、badgers?;coutbadger;cinbadger;do do coutBadger;cout0)while(badger0);coutn;coutn;return 0;return 0;p不要不要遗漏漏语句最后的;号。句最后的;号。p无无论条件如何条件如何设置,置,dowhile循循 至少至少执行行1次。次。pbreak和和continue仍然有效。仍然有效。-13-本章内容安排本章内容安排&whilewhile循环循环&dowhiledowhile循环循环&forfor循环循环&高级循环高级循环&switchswitch-14-for循循环&forfor循环将设置计数变量初值、检查

10、条件、修改计循环将设置计数变量初值、检查条件、修改计数变量合并到数变量合并到1 1条语句中。条语句中。for(表达式1;表达式2;表达式3)循环体;表达式表达式表达式表达式2 2 2 2F F F F表达式表达式表达式表达式3 3 3 3表达式表达式表达式表达式1 1 1 1循环体语句循环体语句循环体语句循环体语句T T T T计算算1100的和的和#include#include using namespace std;using namespace std;int main()int main()int i,sum=0;int i,sum=0;for(i=1;i=100;i+)for(i=

11、1;i=100;i+)sum+=i;sum+=i;cout“Sum:“sum“n”;cout“Sum:“sum“n”;return 0;return 0;p表达式表达式1:完成:完成计数数变量初始化。量初始化。p表达式表达式2:检查条件,确定是否条件,确定是否 继续执行循行循环。p表达式表达式3:修改:修改计数数变量的量的值。p3个表达式之个表达式之间用分号分割。用分号分割。-15-16-本章内容安排本章内容安排&whilewhile循环循环&dowhiledowhile循环循环&forfor循环循环&高级循环高级循环&switchswitch1、for的的变化形式化形式1#include#i

12、nclude using namespace std;using namespace std;int main()int main()int i,sum;int i,sum;for(for(i=1,sum=0;i=1,sum=0;i=100;i+)i=100;i+)sum=sum+i;sum=sum+i;cout“Sum:“sum“n”;cout“Sum:“sum“n”;return 0;return 0;p初始化多个初始化多个变量量时,用逗号,用逗号进行行 分割。分割。p仍然是仍然是3大部分,用;分割大部分,用;分割-17-for的的变化形式化形式2#include#include usin

13、g namespace std;using namespace std;int main()int main()int int i=1,sum=0i=1,sum=0;for(for(;i=100;i+)i=100;i+)sum=sum+i;sum=sum+i;cout“Sum:“sum“n”;cout“Sum:“sum“n”;return 0;return 0;p3个表达式中的任意个表达式中的任意1个可以个可以为空,空,但但对应的分号不能省略。的分号不能省略。-18-for的的变化形式化形式3#include#include using namespace std;using namespac

14、e std;int main()int main()int int i=1,sum=0i=1,sum=0;for(for(;i=100i=100;)sum=sum+i;sum=sum+i;i+;i+;cout“Sum:“sum“n”;cout“Sum:“sum“n”;return 0;return 0;p将表达式将表达式3转移到循移到循环体内部,已体内部,已 经退化退化为while循循环。-19-for的的变化形式化形式4#include#include using namespace std;using namespace std;int main()int main()int int i=

15、1,sum=0i=1,sum=0;for(for(;)sum=sum+i;sum=sum+i;if(i=100)if(i=100)break;break;i+;i+;cout“Sum:“sum“n”;cout“Sum:“sum“n”;return 0;return 0;p将将3个表达式全部移出,退化个表达式全部移出,退化为 while(true)结构。构。-20-for的的变化形式化形式5#include#include using namespace std;using namespace std;int main()int main()int int i=1,sum=0i=1,sum=0;

16、for(i=1;i=100;for(i=1;i=100;sum=sum+i,i+sum=sum+i,i+);cout“Sum:“sum“n”;cout“Sum:“sum“n”;return 0;return 0;p将循将循环体内的体内的语句句转移到某个表达式移到某个表达式 中,不提倡中,不提倡这种用法。种用法。p第第3部分部分为逗号表达式,逗号表达式,顺序序执行行-21-2、循、循环的典型的典型问题#include#include using namespace std;using namespace std;int main()int main()int i,sum=0;int i,sum=

17、0;for(i=1;i=100;i+)for(i=1;i=100;i+);sum+=i;sum+=i;cout“Sum:“sum“n”;cout“Sum:“sum“n”;return 0;return 0;p此此时的的for循循环,执行了行了100次空次空 语句(;)。句(;)。p真正的循真正的循环体体sum+=i没有没有执行。行。-22-循循环的典型的典型错误#include#include using namespace std;using namespace std;int main()int main()int int i=1,sum=0i=1,sum=0;for(;i=100;)fo

18、r(;i=100;)sum=sum+i;sum=sum+i;i+;i+;cout“Sum:“sum“n”;cout“Sum:“sum“n”;return 0;return 0;p循循环执行行sum=sum+i,而不会,而不会执行行 i+,导致死循致死循环。p养成将循养成将循环语句放在句放在 内作内作为复复 语句的良好句的良好习惯,不管是否只有,不管是否只有 1条条语句。句。-23-循循环的典型的典型错误#include#include using namespace std;using namespace std;int main()int main()int i=1,sum=0;int i=

19、1,sum=0;while(i=100)while(i=100);sum+=i;sum+=i;i+;i+;cout“Sum:“sum“n”;cout“Sum:“sum“n”;return 0;return 0;pwhile循循环后面不能加分号,否后面不能加分号,否则 while一直一直执行空行空语句,句,导致致i无无 法法递增,死循增,死循环。-24-循循环的典型的典型错误#include#include using namespace std;using namespace std;int main()int main()int i=1,sum=0;int i=1,sum=0;do do s

20、um+=i;sum+=i;i+;i+;while(i=100)while(i=100)cout“Sum:“sum“n”;cout“Sum:“sum“n”;return 0;return 0;pdowhile循循环的的结束必束必须有;有;否否则无法通无法通过编译。-25-26-3、循、循环的嵌套的嵌套&在循环体内,可以包含另一个循环,从而构成循在循环体内,可以包含另一个循环,从而构成循环的嵌套。环的嵌套。&外部循环每次迭代时,内部循环都将完整循环外部循环每次迭代时,内部循环都将完整循环1 1次次输出字符矩形出字符矩形#include#include using namespace std;usi

21、ng namespace std;int main()int main()int rows,columns;int rows,columns;char character;char character;coutHow many rows?;coutrows;cinrows;coutHow many columns?;coutcolumns;cincolumns;coutWhat character to display?;coutcharacter;cincharacter;coutn;coutn;-27-输出字符矩形出字符矩形#include#include using namespace

22、std;using namespace std;int main()int main()for(int i=0;irows;i+)for(int i=0;irows;i+)for(int j=0;jcolumns;j+)for(int j=0;jcolumns;j+)coutcharacter;coutcharacter;coutn;coutn;return 0;return 0;-28-马克思手稿中的数学克思手稿中的数学问题&共有共有3030个人,其中有男人、女人和小孩,他们在个人,其中有男人、女人和小孩,他们在一家饭馆吃饭共花费了一家饭馆吃饭共花费了5050先令,其中每个男人花费先令,其中

23、每个男人花费3 3先令,每个女人花费先令,每个女人花费2 2先令,每个小孩各花先令,每个小孩各花1 1先令,先令,问问3030个人中男人、女人和小孩各几人?个人中男人、女人和小孩各几人?&设男人、女人和小孩的人数各为设男人、女人和小孩的人数各为x x、y y、z z,则通过,则通过题意可以列出下面的方程。题意可以列出下面的方程。x+y+z=30 x+y+z=303x+2y+z=503x+2y+z=50-29-穷举法法&通过两个方程解通过两个方程解3 3个未知数,这是一个不定方程,个未知数,这是一个不定方程,应该有多组解,用代数方法很难求解。应该有多组解,用代数方法很难求解。&利用计算机编写程序

24、,通过利用计算机编写程序,通过“穷举法穷举法”可以可以列举列举出所有可能的解出所有可能的解。所谓。所谓“穷举法穷举法”,就是让计算机,就是让计算机根据所有可能的情况,逐一去验证,从而找出所有根据所有可能的情况,逐一去验证,从而找出所有满足要求的满足要求的“解解”。&由于总人数为由于总人数为3030人,所以人,所以x x、y y和和z z的取值范围一定的取值范围一定为为030030并且为整数并且为整数,在编程时,我们可以让,在编程时,我们可以让x x、y y和和z z都从都从0 0循环到循环到3030,然后验证看哪个组合能满足方,然后验证看哪个组合能满足方程式。程式。-30-三重循三重循环求解求

25、解int main()int main()int x,y,z;int x,y,z;coutMan t Women t Childrenn“;coutMan t Women t Childrenn“;for(x=0;x=30;x+)for(x=0;x=30;x+)for(y=0;y=30;y+)for(y=0;y=30;y+)for(z=0;z=30;z+)for(z=0;z=30;z+)if(x+y+z=30&3*x+2*y+z=50)if(x+y+z=30&3*x+2*y+z=50)coutx“t”y“t”z“n”;coutx“t”y“t”z“n”;return 0;return 0;p“t

26、”表示制表符。表示制表符。p分析:循分析:循环体体执行行313131,循,循环时x、y 确定后,确定后,z就会确定,不需要再循就会确定,不需要再循环。此外,。此外,每种人的循每种人的循环范范围不一定都是不一定都是30。-31-缩小小穷举范范围int main()int main()int x,y,z;int x,y,z;coutMan t Women t Childrenn“;coutMan t Women t Childrenn“;for(x=0;x=16;x+)for(x=0;x=16;x+)for(y=0;y=25;y+)for(y=0;y=25;y+)for(z=0;z=30;z+)f

27、or(z=0;z=30;z+)if(x+y+z=30&3*x+2*y+z=50)if(x+y+z=30&3*x+2*y+z=50)coutx“t”y“t”z“n”;coutx“t”y“t”z“n”;return 0;return 0;-32-2重循重循环int main()int main()int x,y,z;int x,y,z;coutMan t Women t Childrenn“;coutMan t Women t Childrenn“;for(x=0;x=16;x+)for(x=0;x=16;x+)for(y=0;y=25;y+)for(y=0;y=25;y+)z=30 x y;z=

28、30 x y;if(3*x+2*y+z=50)if(3*x+2*y+z=50)coutx“t”y“t”z“n”;coutx“t”y“t”z“n”;return 0;return 0;p某一次循某一次循环迭代中,迭代中,x和和y确定后,确定后,z便可以便可以 计算得出,减少了循算得出,减少了循环的次数。的次数。-33-1重循重循环的的尝试&采用消元法,消去变量采用消元法,消去变量z z,得到新的方程式,得到新的方程式2x+y=202x+y=20&对于这一方程式,我们可以采用一重循环来穷举对于这一方程式,我们可以采用一重循环来穷举x x的所有可能,即的所有可能,即x x从从0 0变到变到1616,

29、但只要,但只要x x确定下来,确定下来,y y便可以通过方程式来确定,便可以通过方程式来确定,x x和和y y确定下来,则确定下来,则z z可以由可以由x+y+z=30 x+y+z=30确定。确定。-34-1重循重循环(小(小Bug)int main()int main()int x,y,z;int x,y,z;coutMan t Women t Childrenn“;coutMan t Women t Childrenn“;for(x=0;x=16;x+)for(x=0;x=16;x+)y y=20-20-2*x;2*x;z=30-x-y;z=30-x-y;if(3*x+2*y+z=50)i

30、f(3*x+2*y+z=50)coutx“t”y“t”z“n”;coutx“t”y“t”z“n”;return 0;return 0;-35-1重循重循环int main()int main()int x,y,z;int x,y,z;coutMan t Women t Childrenn“;coutMan t Women t Childrenn“;for(x=0;x=16;x+)for(x=0;x=16;x+)y=y=20-20-2*x;2*x;z=30-x-y;z=30-x-y;if(y0|z0)continue;if(y0|z0)continue;if(3*x+2*y+z=50)if(3*

31、x+2*y+z=50)coutx“t”y“t”z“n”;coutx“t”y“t”z“n”;return 0;return 0;-36-37-本章内容安排本章内容安排&whilewhile循环循环&dowhiledowhile循环循环&forfor循环循环&高级循环高级循环&switchswitchswitch的的动机机&对同一个变量,若存在多个分支判断情况,使用对同一个变量,若存在多个分支判断情况,使用嵌套的嵌套的if if语句,将导致代码非常烦琐混乱,不易理语句,将导致代码非常烦琐混乱,不易理解且难以维护。解且难以维护。&switchswitch语句,检查表达式,根据结果匹配执行多语句,检查

32、表达式,根据结果匹配执行多个代码块中的个代码块中的1 1个。个。-38-switch的基本的基本结构构switch(switch(表达式表达式)case case 常量常量1:1:语句语句1;break;1;break;case case 常量常量2:2:语句语句2;break;2;break;case case 常量常量n:n:语句语句n;break;n;break;default:default:语句语句n+1;n+1;pswitch的表达式必的表达式必须是一个整数是一个整数值。pcase分支后必分支后必须为常量,不能是常量,不能是变 量或者表达式,分支量或者表达式,分支间不允不允许重复。

33、重复。pswitch语句句执行行时,若匹配到某个,若匹配到某个 case,执行后面的行后面的语句;若没有匹句;若没有匹 配的配的case,执行行default部分。部分。p通常每个通常每个case分支,都分支,都应该有有break 语句,用于退出句,用于退出switch。若某个。若某个 case没有没有break,当前分支,当前分支执行完行完 后,后,继续下一个下一个case分支。分支。p良好良好编程程习惯:保留:保留default,处理理 特殊情况。特殊情况。-39-等等级分分转百分制百分制#include#include int main()int main()char grade;cha

34、r grade;int score;int score;cout“Enter your letter grade:“;coutgrade;cingrade;return 0;return 0;-40-等等级分分转百分制百分制switch(grade)switch(grade)case A:case A:score=95;score=95;breakbreak;case B:case B:score=85;score=85;breakbreak;case C:case C:score=75;score=75;breakbreak;case D:case D:score=65;score=65;b

35、reakbreak;default:default:cout“Its not even a grade!n”;cout“Its not even a grade!n”;cout“Your score is:“score“n”;cout“Your score is:“score“n”;pcase之后必之后必须为整数或字符常量。整数或字符常量。-41-等等级分分转百分制:考百分制:考虑小写字母小写字母switch(grade)switch(grade)case A:case A:case a:case a:score=95;break;score=95;break;case B:case B:case b:case b:score=85;break;score=85;break;case C:case C:case c:case c:score=75;break;score=75;break;case D:case D:case d:case d:score=65;break;score=65;break;default:default:cout“Its not even a grade!n”;cout“Its not even a grade!n”;-42-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 企业管理

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁