控制程序流程

上传人:工**** 文档编号:570130989 上传时间:2024-08-02 格式:PPT 页数:40 大小:881KB
返回 下载 相关 举报
控制程序流程_第1页
第1页 / 共40页
控制程序流程_第2页
第2页 / 共40页
控制程序流程_第3页
第3页 / 共40页
控制程序流程_第4页
第4页 / 共40页
控制程序流程_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《控制程序流程》由会员分享,可在线阅读,更多相关《控制程序流程(40页珍藏版)》请在金锄头文库上搜索。

1、控制程序流程Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望-2-本章内容安排本章内容安排&whilewhile循环循环&dowhiledowhile循环循环&forfor循环循环&高级循环高级循环&switchswitch-3-循循环的概念的概念&计算机擅长的工作之一是重复做相同的事情。计算机擅长的工作之一是重复做相同的事情。&许多编程任务可以通过重复相同的操作来完成,许多编程任务可以通过重复相同的操作来完成,通过指定次数或设定条件来控制执行过程。多次重通过指定次数或设定条件来控制

2、执行过程。多次重复执行的结构称为复执行的结构称为循环循环,每一次循环称为,每一次循环称为迭代迭代。&whilewhile、dowhiledowhile、forfor-4-while循循环&在指定条件为在指定条件为truetrue的情况下,程序重复执行,直的情况下,程序重复执行,直到指定条件变为到指定条件变为falsefalse。&条件放在条件放在whilewhile之后的()内,循环执行的语句放之后的()内,循环执行的语句放在一对内。在一对内。表达式表达式表达式表达式F F F F循环体语句循环体语句循环体语句循环体语句T T T Twhile(表达式)循环体语句;-5-显示示099#incl

3、ude int main()int x=0;while( x100 )std:cout x “ ”;x+;return 0;p假如循环语句中没有假如循环语句中没有x+x+,则,则whilewhile循环循环 的条件永远为真,导致循环一直执行,的条件永远为真,导致循环一直执行, 称为无限循环或死循环。称为无限循环或死循环。-6-显示示500以内以内13的倍数的倍数#include int main()int counter=0;while( counter500 )counter+;if(counter%13=0) std:coutcounter ;return 0;-7-显示前示前20个整除个

4、整除14的正整数的正整数#include int main()int counter=0, multiples=0;while( true )counter+;if(counter%14=0) std:coutcounter19) break;return 0;p循环中让循环中让whilewhile的条件为的条件为truetrue,构,构 造造1 1个无限循环。个无限循环。p在循环体内,调用在循环体内,调用breakbreak语句,可语句,可 立即停止循环的执行。立即停止循环的执行。p使用使用while( true )while( true )结构时,要确结构时,要确 保循环能够停止。保循环能

5、够停止。-9-本章内容安排本章内容安排&whilewhile循环循环&dowhiledowhile循环循环&forfor循环循环&高级循环高级循环&switchswitch-10-dowhile循循环&whilewhile在执行循环前检查条件,如果此时条件为在执行循环前检查条件,如果此时条件为falsefalse,则一次循环也不执行。,则一次循环也不执行。&dowhiledowhile在循环之后检查条件,条件为在循环之后检查条件,条件为truetrue,继,继续循环,条件为续循环,条件为falsefalse结束循环。结束循环。do循环体语句;while(表达式);表达式表达式F循环体语句循环体

6、语句T-11-重复重复显示示单词指定次数指定次数#include int main() int badger;std:coutbadger;do std:cout0);std:coutn;return 0;p不要遗漏语句最后的;号。不要遗漏语句最后的;号。p无论条件如何设置,无论条件如何设置,dodowhilewhile循循 至少执行至少执行1 1次。次。pbreakbreak和和continuecontinue仍然有效。仍然有效。-12-本章内容安排本章内容安排&whilewhile循环循环&dowhiledowhile循环循环&forfor循环循环&高级循环高级循环&switchswitc

7、h-13-for循循环&forfor循环将设置计数变量初值、检查条件、修改计循环将设置计数变量初值、检查条件、修改计数变量合并到数变量合并到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 int main()int i,sum=0; for(i=1;i=100;i+)sum+=i;std:cout“Sum: “sum“n”;return 0;p表达式表

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

9、d:cout“Sum: “sum“n”; return 0;p初始化多个变量时,用逗号进行初始化多个变量时,用逗号进行 分割。分割。for的的变化形式化形式2#include int main() int i=1,sum=0; for( ; i=100; i+ ) sum=sum+i; std:cout“Sum: “sum“n”; return 0;p3 3个表达式中的任意个表达式中的任意1 1个可以为空,个可以为空, 但对应的分号不能省略。但对应的分号不能省略。for的的变化形式化形式3#include int main() int i=1,sum=0; for( ; i=100; ) su

10、m=sum+i; i+; std:cout“Sum: “sum“n”; return 0;p将表达式将表达式3 3转移到循环体内部,已转移到循环体内部,已 经退化为经退化为whilewhile循环。循环。for的的变化形式化形式4#include int main() int i=1,sum=0; for( ; ; ) sum = sum+i; if( i=100 )break; i+; std:cout“Sum: “sum“n”; return 0;p将将3 3个表达式全部移出,退化为个表达式全部移出,退化为 while(true) while(true)结构。结构。for的的变化形式化形式

11、5#include int main() int i=1, sum=0; for( i=1; i=100; sum=sum+i, i+ ) ; std:cout“Sum: “sum“n”; return 0;p将循环体内的语句转移到某个表达式中,将循环体内的语句转移到某个表达式中, 不提倡这种用法。不提倡这种用法。2、循、循环的典型的典型问题#include int main()int i,sum=0; for( i=1; i=100; i+ ) ;sum+=i;std:cout“Sum: “sum“n”;return 0;p此时的此时的forfor循环,执行了循环,执行了100100次空次空

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

13、(i=100) ; sum+=i;i+; std:cout“Sum: “sum“n”; return 0;pwhilewhile循环后面不能加分号,否则循环后面不能加分号,否则 while while一直执行空语句,导致一直执行空语句,导致i i无无 法递增,死循环。法递增,死循环。-24-3、循、循环的嵌套的嵌套&在循环体内,可以包含另一个循环,从而构成循在循环体内,可以包含另一个循环,从而构成循环的嵌套。环的嵌套。&外部循环每次迭代时,内部循环都将完整循环外部循环每次迭代时,内部循环都将完整循环1 1次次输出字符矩形出字符矩形#include int main() int rows,col

14、umns;char character;std:coutrows;std:coutcolumns;std:coutcharacter;std:coutn;输出字符矩形出字符矩形#include int main()for( int i=0; irows; i+ )for( int j=0; jcolumns; j+) std:coutcharacter;std:coutn;return 0;马克思手稿中的数学克思手稿中的数学问题&共有共有3030个人,其中有男人、女人和小孩,他们在个人,其中有男人、女人和小孩,他们在一家饭馆吃饭共花费了一家饭馆吃饭共花费了5050先令,其中每个男人花先令,其中

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

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

17、n()int x,y,z;std:coutMan t Women t Childrenn“;for(x=0;x=30;x+) for(y=0;y=30;y+) for(z=0;z=30;z+) if(x+y+z=30 & 3*x+2*y+z=50) std:coutx“t”y“t”z“n”; return 0;p“t”“t”表示制表符。表示制表符。p分析:循环体执行分析:循环体执行313131313131,循环时,循环时x x、y y 确定后,确定后,z z就会确定,不需要再循环。此外,就会确定,不需要再循环。此外, 每种人的循环范围不一定都是每种人的循环范围不一定都是3030。缩小小穷举范范

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

19、“t”z“n”; return 0;p某一次循环迭代中,某一次循环迭代中,x x和和y y确定后,确定后,z z便可以便可以 计算得出,渐少了循环的次数。计算得出,渐少了循环的次数。1重循重循环的的尝试&采用消元法,消去变量采用消元法,消去变量z z,得到新的方程式,得到新的方程式2x+y=202x+y=20&对于这一方程式,我们可以采用一重循环来穷举对于这一方程式,我们可以采用一重循环来穷举x x的所有可能,即的所有可能,即x x从从0 0变到变到1616,但只要,但只要x x确定下来,确定下来,y y便可以通过方程式来确定,便可以通过方程式来确定,x x和和y y确定下来,则确定下来,则z

20、 z可以由可以由x+y+z=30x+y+z=30确定。确定。1重循重循环(小(小Bug)int main()int x,y,z;std:coutMan t Women t Childrenn“;for(x=0; x=16; x+) y = 20 - 2*x; z = 30 - x - y; if( 3*x+2*y+z=50) std:coutx“t”y“t”z“n”;return 0;1重循重循环int main()int x,y,z;std:coutMan t Women t Childrenn“;for(x=0; x=0 & z=0) std:coutx“t”y“t”z“n”;return 0;-35-本章内容安排本章内容安排&whilewhile循环循环&dowhiledowhile循环循环&forfor循环循环&高级循环高级循环&switchswitch

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号