《C++程序设计及项目实践》 课件 第5章 循环结构_第1页
《C++程序设计及项目实践》 课件 第5章 循环结构_第2页
《C++程序设计及项目实践》 课件 第5章 循环结构_第3页
《C++程序设计及项目实践》 课件 第5章 循环结构_第4页
《C++程序设计及项目实践》 课件 第5章 循环结构_第5页
已阅读5页,还剩27页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C++程序设计及项目实践第5章 循环结构

15.1while5.2do-while5.3for5.4嵌套5.5break5.6continue5.7应用5.8本章小结C++程序设计及项目实践2第5章 循环结构

顺序结构和选择结构的程序执行时候的特点是从从前向后执行,可以选择不执行某些语句,或者从多个可执行路径中选择一个执行,但它们均不会回头执行之前已经执行过的语句。在某些情况下,程序可能会需要重复执行以前执行过的语句,这就需要循环结构的程序了。C++程序设计及项目实践35.1whilewhile语句的语法如下:while(表达式){

语句序列;}

程序执行while语句时,首先判断while(布尔表达式)中布尔表达式值的真假,若为假(false),则跳过while语句,执行while语句的下一条语句;布尔表达式若为真(true),则进入while语句内部,执行其中的语句序列,执行完后,再回到while(布尔表达式)的布尔表达式的判断,然后重复该流程。

一般来说,循环结构的程序都蕴涵内在的重复执行的操作,因此,再设计循环结构程序时,首先需要回答两个问题:(1)重复的操作是什么?(2)控制重复的因素是什么?

通过这两个要点可以提炼出循环的三个要素:(1)循环重复执行的动作;(2)循环的起止条件;(3)循环条件的改变规则。当找到了这三个要素之后,就比较容易编写循环结构的程序了。表达式假真语句块C++程序设计及项目实践4例

输出5遍“HelloC++”(只用while循环书写)思路:通过分析这个问题,可以发现:(1)重复的操作是输出”HelloC++”;(2)控制重复的因素是输出次数,只要次数不超过5次就重复执行输出,否则就不再操作。因此,可以提炼出循环的三个要素:(1)循环重复执行的操作为输出”HelloC++”;(2)循环次数从第1次开始,到第5次完成结束;(3)循环计次每完成1次输出增加1次。由此,可以顺利地写出正确的程序。C++程序设计及项目实践5例

输出5遍“HelloC++”(只用while循环书写)01#include<iostream>02usingnamespacestd;03intmain()04{05introw=1;06while(row<=5)07{08cout<<"HelloC++"<<endl;09row++;10}11cout<<"row="<<row<<endl;12return0;13}C++程序设计及项目实践6例5.3从1到100求和思路:通过分析这个问题,可以发现:(1)重复的操作是求和,求和必须是将值要保存到唯一的变量空间。(2)控制重复的因素是求和数值范围:从1到100,若该数不在该范围内,则不能再重复操作。处理的一些求和技术的小技巧:sum=0;//开始时初始化sumsum=sum+1;sum=sum+2;…sum=sum+n;也就是求和可以用sum=sum+i来表示,然后改变(求和数值)i依次为1,2,..,n加入到sum中,实现了汇总,也就是控制i的范围,就控制了可以求和的范围。可以提炼出该循环的三个要素:(1)循环重复执行的操作为sum=sum+i;(2)循环从求和数值i=1开始,到i=100完成求和结束;(3)求和数值每完成1次求和增加1。C++程序设计及项目实践7例5.3从1到100求和01#include<iostream>02usingnamespacestd;03intmain()04{05intn=1,sum=0;06while(n<=100)07{08sum=sum+n;09n++;10}11cout<<sum<<endl;12return0;13}C++程序设计及项目实践85.2do-whiledo-while语句如下:do{语句序列;}while(表达式);表达式假真语句块语句执行到do-while语句时,先进入大括号内部执行语句序列,执行完以后再进行while(布尔表达式)的执行,判断布尔表达式是否为真,若为真(true),则返回重复执行之前已经执行过的语句序列,若布尔表达式为假(false),则结束do-while语句,进入到下一条语句。C++程序设计及项目实践9例

从1到100求和思路:通过分析这个问题,可以发现:(1)重复的操作是求和,求和必须是将值要保存到唯一的变量空间。(2)控制重复的因素是求和数值范围:从1到100,若该数不在该范围内,则不能再重复操作。处理的一些求和技术的小技巧:sum=0;//开始时初始化sumsum=sum+1;sum=sum+2;…sum=sum+n;也就是求和可以用sum=sum+i来表示,然后改变(求和数值)i依次为1,2,..,n加入到sum中,实现了汇总,也就是控制i的范围,就控制了可以求和的范围。可以提炼出该循环的三个要素:(1)循环重复执行的操作为sum=sum+i;(2)循环从求和数值i=1开始,到i=100完成求和结束;(3)求和数值每完成1次求和增加1。C++程序设计及项目实践10例

从1到100求和01#include<iostream>02usingnamespacestd;03intmain()04{05intn=1,sum=0;06do07{08sum+=n;09n++;10}while(n<=100);11cout<<sum<<endl;12return0;13}C++程序设计及项目实践115.3forfor语句的语句如下:for(表达式1;表达式2;表达式3){语句序列;}for语句小括号中包括3个表达式,并用分号隔开。程序执行的时候首先执行表达式1,然后判断表达式2是否为真(true,非0值),若为真,则执行大括号内部的语句序列,执行完后,执行for语句小括号中表达式3,然后再判断表达式2是否为真,若成立,则循环,若表达式2为假(false,0值),则for语句结束,进入for语句的下一条语句。表达式2语句块真假表达式1表达式3C++程序设计及项目实践12例

从1到100求和思路:通过分析这个问题,可以发现:(1)重复的操作是求和,求和必须是将值要保存到唯一的变量空间。(2)控制重复的因素是求和数值范围:从1到100,若该数不在该范围内,则不能再重复操作。处理的一些求和技术的小技巧:sum=0;//开始时初始化sumsum=sum+1;sum=sum+2;…sum=sum+n;也就是求和可以用sum=sum+i来表示,然后改变(求和数值)i依次为1,2,..,n加入到sum中,实现了汇总,也就是控制i的范围,就控制了可以求和的范围。可以提炼出该循环的三个要素:(1)循环重复执行的操作为sum=sum+i;(2)循环从求和数值i=1开始,到i=100完成求和结束;(3)求和数值每完成1次求和增加1。C++程序设计及项目实践13例

从1到100求和01#include<iostream>02usingnamespacestd;03intmain()04{05intsum=0;06for(intn=1;n<=100;n++)07{08sum+=n;09}10cout<<sum<<endl;11return0;12}C++程序设计及项目实践145.4嵌套选择结构中if-else,switch等可以相互嵌套,从而可以构造功能更强的程序,循环结构和选择结构之间,循环结构和循环结构之间也可以构成嵌套结构的程序,从而增强程序的功能。C++程序设计及项目实践155.4嵌套5.4.1嵌套选择5.4.2嵌套判断C++程序设计及项目实践16例

从1到100之间奇数求和思路:直接对从1到100之间的所有整数求和的问题之前已经求解过了,使用循环结构即可以容易求解。从1到100之间的数包含奇数,也包括偶数,所以可以在汇总的程序中,对每个数字进行检查,若为奇数则汇总,若为偶数忽略即可。5.4.1嵌套选择C++程序设计及项目实践175.4.1嵌套选择例

从1到100之间奇数求和01#include<iostream>02usingnamespacestd;03intmain()04{05intsum=0;06for(intn=1;n<=100;n++)07{08if(n%2==1)09{10sum+=n;11}12}13cout<<sum<<endl;14return0;15}C++程序设计及项目实践18例

求解阶乘和S(n)=1!+2!+3!+…+n!思路:分析该计算式,可以发现S(n)需要对从1到n之间的每一个整数i分别求阶乘,所以需要一个循环来控制整数i的范围,而对于该范围内的每个整数i而言,需要计算其阶乘i!,阶乘可以表示成从1累乘到i,所以这又可以用一个循环实现,后一个循环嵌入在前一个循环中。5.4.2嵌套循环C++程序设计及项目实践195.4.2嵌套循环例

求解阶乘和S(n)=1!+2!+3!+…+n!01#include<iostream>02usingnamespacestd;03intmain()04{05intn,sum=0;06cin>>n;07for(inti=1;i<=n;i++)08{09inttmp=1;10for(intj=1;j<=i;j++)11{12tmp*=j;13}14sum+=tmp;15}16cout<<sum<<endl;17return0;18}C++程序设计及项目实践205.5break在循环语句执行过程中,若需要提前结束循环,则可以使用break语句。无论在while,do-while,for循环结构的哪一种语句中,均可以使用break语句提前结束循环。(a)while中的break(b)do-while中的break(c)for中的break表达式…break;…真假表达式…break;…真假表达式2…break;…真假表达式1表达式3C++程序设计及项目实践21例

判断某数是否为素数思路:素数n只能被1和n自己整除。那这需要检测从2开始到n-1期间所有数能否被n整除,只要有一个能被整除,则n就不是素数,只有所有数都不能被整除,才能最终确定该数为素数。5.5breakC++程序设计及项目实践22例

判断某数是否为素数01#include<iostream>02usingnamespacestd;03intmain()04{05intn;06cin>>n;07boolis=true;08for(inti=2;i<=n/2;i++)09{10if(n%i==0)11{12is=false;13break;14}15}16if(is==true)17{18cout<<"Yes"<<endl;19}20else21{22cout<<"No"<<endl;23}24return0;25}C++程序设计及项目实践235.6continue在循环结构中,可以用continue语句提前结束本轮循环,直接进入到下一次的循环。(a)while中的continue(b)do-while中的continue(c)for中的continue表达式…continue;…真假表达式…continue;…真假表达式2…continue;…真假表达式1表达式3C++程序设计及项目实践24例

对输入5个正数求和,若输入为负数,则重新输入。01#include<iostream>02usingnamespacestd;03intmain()04{05intn,sum=0;06for(inti=1;i<=5;i++)07{08cin>>n;09if(n<0)10{11i--;12cout<<"Pleasereinput!"<<endl;13continue;14}15sum+=n;16}17cout<<sum<<endl;18return0;19}C++程序设计及项目实践255.7应用例1统计输入字符各类字符个数,分别统计小写字符,大写字符,数字字符,其他字符。01#include<iostream>02#include<cstdio>03usingnamespacestd;04intmain()05{06intln(0),un(0),dn(0),on(0);07charc;08while((c=getchar())!='\n')09{10if(c>='a'&&c<='z')11{12ln++;13continue;14}if(c>='A'&&c<='Z')16{17un++;18continue;19}20if(c>='0'&&c<='9')21{22dn++;23continue;24}25on++;26}27cout<<"thenumberoflowercaseletters:"<<ln<<endl;28cout<<"thenumberofuppercaseletters:"<<un<<endl;29cout<<"thenumberofdigits:"<<dn<<endl;30cout<<"thenumberofotherletters:"<<on<<endl;31return0;}C++程序设计及项目实践26例2

求解最大公约数。思路:这里使用穷举法求解最大公约数,方法比较直接,就是从两个数中较小的数开始向1的方向遍历,若该数能同时整除这两个整数,则找到了最大公约数。C++程序设计及项目实践27例2

求解最大公约数。01#include<iostream>02usingnamespacestd;03intmain()04{05inta,b;06cin>>a>>b;07inttmp=(a<b)?a:b;08for(;tmp>0;tmp--)09{10if(a%tmp!=0)11{12continue;13}14if(b%tm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论