C循环控制结构PPT课件

上传人:牛*** 文档编号:75732737 上传时间:2022-04-16 格式:PPTX 页数:19 大小:221.81KB
收藏 版权申诉 举报 下载
C循环控制结构PPT课件_第1页
第1页 / 共19页
C循环控制结构PPT课件_第2页
第2页 / 共19页
C循环控制结构PPT课件_第3页
第3页 / 共19页
资源描述:

《C循环控制结构PPT课件》由会员分享,可在线阅读,更多相关《C循环控制结构PPT课件(19页珍藏版)》请在装配图网上搜索。

1、3.5 3.5 循环控制结构循环控制结构循环思想:一组语句序列有限次的重复执行。例如:求1+2+3+nRead n0sn,isn+i snWrite sn当+i=1n时循环结构特点:当型循环结构,直到型循环结构;具有结构独立、单入口、单出口的性质;多个循环结构可以并列或嵌套,禁止交叉 。循环控制关键:循环执行什么?循环执行规律?终止循环执行条件?即循环执行次数有限!Read n0sn,i当当+i=1n循环循环sn+i snWrite snRead n0 sn,isn+i sn+i=1n,直到直到in终止终止Write snRead n0sn,isn+i snWrite sn+i=1n,直到in

2、终止第1页/共19页解1、ifgoto结构控制循环void main( void ) long sn=0; int i=1; scanf(“%d”,&n); / /当型循环结构: lp: if (i=n) sn=sn+i ; i+ ; goto lp ; printf(“sn=%ldn”,sn);/直到型循环结构:lp: sn=sn+i ; i+ ; if (in终止终止Write sn第2页/共19页解2、while循环控制结构(当型循环)(当型循环)解3、do while循环控制结构(直到循环)(直到循环)sn=0; i=1;for ( i=0; in终止Write sn解1、for循环控

3、制结构结构 sn=0; i=1; while ( i=n ) sn=sn+i; i+; sn=0; i=1; do sn=sn+i; i+ ; while (i=n);第3页/共19页1、for循环结构循环结构for (初始化表达式;终限条件表达式;步长表达式初始化表达式;终限条件表达式;步长表达式) s1 ; s2 ; continue; ; break; sn ; 特点:特点:初始化表达式只执行一次;初始化表达式只执行一次;循环体循环体执行次数执行次数0 ;适合循环次数已知的精确迭代算法。适合循环次数已知的精确迭代算法。C的循环结构第4页/共19页2、while循环结构循环结构while

4、(条件表达式)(条件表达式) s1;s2; continue; /短路语句短路语句 ; break; /开路语句开路语句 si; sn; 特点:特点:条件表达式被多次执行;条件表达式被多次执行;循环体执行次数循环体执行次数0;循环体中至少含有修正条件表达式的语句;循环体中至少含有修正条件表达式的语句;适合循环次数未知的非精确迭代算法。适合循环次数未知的非精确迭代算法。第5页/共19页3、do while循环结构循环结构do s1;s2;continue;/短路语句短路语句;break;/开路语句开路语句 si; sn; while(条件表达式)(条件表达式); 特点:特点:条件表达式被多次执行

5、;条件表达式被多次执行;循环体执行次数循环体执行次数1 ;循环体中至少含有修正条件表达式的语句;循环体中至少含有修正条件表达式的语句;适合循环次数未知的非精确迭代算法。适合循环次数未知的非精确迭代算法。第6页/共19页Fact(n)Fact(n)n nn!n!main( )main( )v结构设计结构设计 方案一:方案一:一个main函数 方案二:方案二:多个函数例例1:求:求1!+2!+3!+n!v程序编码?程序编码?如何求如何求item ! 逐步扩展逐步扩展: 设累积变量:设累积变量:fn=1; 设记数变量:设记数变量:i=1; 循环循环 (当当i=1item): fn*i fn; i+;

6、v算法设计算法设计(自顶而下自顶而下) 输入输入n; 循环循环(item=1n): sum=sum+item ! ; 输出输出sum;算法优化算法优化: 输入n; 初始准备初始准备fn=1, sum=0; 循环循环(item=1n): fn=fn*item; sum=sum+fn ; 输出sum;第7页/共19页Fact(n)Fact(n)n nn!n!main( )main( )/方案一:方案一:一个main函数#include void main(void) long sum=0,fn=1; int n,item; cinn; for (item=1; item=n; item+) fn=

7、fn*item; sum=sum+fn; cout“sum=”sumendl; 例例1:求求1!+2!+3!+n!初始准备初始准备fn=1, sum=0;输入;输入n;循环循环(item=1n): fn=fn*item;sum=sum+fn ;输出sum;/方案二:方案二:多个函数#include void main(void) long sum=0,fn=1; int n,item; cinn; for (item=1;item=n;item+) sum=sum+fact( item ); cout“sum=“sumendl; long fact( int n ) long fn, i; f

8、or ( i=1; i ?x1 x0非精确迭代非精确迭代直到型循环?当型循环:第9页/共19页v例例:求求2x3-4x2+3x-6=0 在附近的根。在附近的根。v结构设计结构设计方案一:方案一:main()方案二:方案二:main(), fx(x), fxd(x)x0 x0f(x0)f(x0)main( )main( )fx(x0)fxd(x0)f(x0)f(x0)x0 x0 x0 x0 x xmain( )main( )x0 x0f(x0)f(x0)ndsolve(ndsolve(x0) )fx(x0)fxd(x0)f(x0)f(x0)x0 x0方案三:方案三:main(), ndsolve

9、(x), fx(x), fxd(x) (在函数与指针中讨论)第10页/共19页v程序编码程序编码(求2x3-4x2+3x-6=0 在附近的根)#include void main(void) double x0=1.5, x1=0; while ( fabs(x0-x1)0.001 ) x0=x1; x1=x0-(2*x0*x0*x0-4*x0*x0+3*x0-6)/(6*x0*x0-8*x0+3); cout“x=“x1 ?f(x)yX*x10 x2x如何判断如何判断f(x)与与f(x1)同号:同号: f(x)*f(x1)0则同号,否则异号。则同号,否则异号。v结构设计结构设计:main()

10、或main() 、fx(x) 第12页/共19页#include void main(void) double x1=-10,x2=10; while ( fabs(x1-x2)0.001 ) x=(x1+x2)*0.5; if ( f(x) * f(x1)0 ) x1=x; else x2=x; cout“x=“xendl; double f(double x) return ( 2*x*x*x-4*x*x+3x-6 ) ; double f(double x);/函数声明v例例:求求2x3-4x2+3x-6=0 在在(-10,10)之间的根。之间的根。第13页/共19页例例4:求第:求第n

11、项项Fibonacci数列 买买1对兔,第对兔,第3个月开始每月都生个月开始每月都生1对,对,1年几何?年几何?v结构设计:结构设计:一个主函数实现一个主函数实现 令:令:fib1=fib2=1循环执行(按月计数 i:312): fib1+fib2 fib; fib2 fib1; fib fib2; fib即为所求。v算法设计算法设计月份:月份:1月2月3月4月5月兔对:兔对:112(1+1)3(2+1)5(3+2)第14页/共19页#include 或#include using namespace std;void main(void) int fib1=1, fib2=1, fib; i

12、nt i,n; coutn; for( i=3; i=n; i+ ) fib = fib1+fib2; fib1 = fib2; fib2 = fib; coutendl“fib=”fibn; coutendl; 令:令:fib1=fib2=1循环执行(按月计数 i:312): fib1+fib2 fib; fib2 fib1; fib fib2; fib即为所求。如何输出112的fib数呢? coutf1tf2; couttfibendl;v程序编码如下:程序编码如下:第15页/共19页例例5:找出找出100200以内的全部素数。以内的全部素数。如果如果m是素数,则是素数,则m不能被任何数不

13、能被任何数n整除整除(n=2m/2)。prime(n)(n)n n1/01/0main( )main( )v算法设计算法设计 循环执行循环执行(m=100200) 循环执行循环执行(n=2n/2) m%n=0 ?v程序编码?程序编码?v结构设计结构设计 方案一:仅方案一:仅main()实现 方案二:方案二:main()、prime(n)/方案一:仅方案一:仅main()实现#Include void main(void) int m, n; for( m=100; m=200; m+ ) for( n=2; nm/2) coutmt; 第16页/共19页prime(n)(n)n n1/01/0

14、main( )main( )/方案二:方案二:main()、prime(n)#Include void main(void) int m, n; for( m=100; m=200; m+ ) 函数声明:扩展函数作用域! int prime(int k);或 int prime(int);int prime( int k ) / bool prime( int k ) int n; for( n=2; n=k/2; n+ ) if ( k%n= =0 ) return 0; /return false return 1; / return true if ( prime(m) ) coutm; 第17页/共19页例例6:搬砖问题 36人搬人搬36块砖。男搬块砖。男搬4,女搬女搬3,两个小孩抬两个小孩抬1砖。砖。男女小孩组合方案多少种?男女小孩组合方案多少种?v结构设计结构设计仅仅main( ) 函数完成,函数完成,程序如何编码?程序如何编码?v算法设计算法设计m+w+c=36 . 4*m+3*w+c/2=36.穷举法:穷举法:m=18循环:循环: w=111循环:循环:由由求求c,使使成立的成立的mwc为一方案为一方案 第18页/共19页感谢您的观看!第19页/共19页

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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