C++032循环控制结构.ppt

上传人:san****019 文档编号:19954970 上传时间:2021-01-18 格式:PPT 页数:18 大小:442.10KB
收藏 版权申诉 举报 下载
C++032循环控制结构.ppt_第1页
第1页 / 共18页
C++032循环控制结构.ppt_第2页
第2页 / 共18页
C++032循环控制结构.ppt_第3页
第3页 / 共18页
资源描述:

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

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

2、sn Read n 0sn,i sn+i sn Write sn +i=1n,直到 in终止 3 解 2、 while循环控制结构 ( 当型循环 ) 解 3、 do while循环控制结构 ( 直到循环 ) sn=0; i=1; for ( i=0; in终止 Write sn 解 1、 for循环控制 结构 sn=0; i=1; while ( i=n ) sn=sn+i; i+; sn=0; i=1; do sn=sn+i; i+ ; while (i=n); 4 1、 for循环结构 for ( 初始化表达式;终限条件表达式;步长表达式 ) s1 ; s2 ; continue; ; b

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

4、 条件表达式被多次执行; 循环体执行次数 1 ; 循环体中至少含有修正条件表达式的语句; 适合循环次数未知的非精确迭代算法 。 7 Fact(n) n n! main( ) 结构设计 方案一: 一个 main函数 方案二: 多个函数 例 1:求 1!+2!+3!+ +n! 程序编码 ? 如何求 item ! 逐步扩展 : 设累积变量: fn=1; 设记数变量: i=1; 循环 (当 i=1item): fn*i fn ; i+; 算法设计 (自顶而下 ) 输入 n; 循环 (item=1n): sum=sum+item ! ; 输出 sum; 算法优化 : 输入 n; 初始准备 fn=1, s

5、um=0; 循环 (item=1n): fn=fn*item; sum=sum+fn ; 输出 sum; 8 Fact(n) n n! main( ) /方案一: 一个 main函数 #include void main(void) long sum=0,fn=1; int n,item; cinn; for (item=1; item=n; item+) fn=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

6、+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; for ( i=1; i ? x1 x0 非精确迭代 直到型循环? 当型循环: 10 例 :求 2x3-4x2+3x-6=0 在 1.5附近的根 。 结构设计 方案一: main() 方案二: main(), fx(x), fxd(x

7、) x0 f(x0) main( ) fx(x0) fxd(x0) f(x0) x0 x0 x main( ) x0 f(x0) ndsolve(x0) fx(x0) fxd(x0) f(x0) x0 方案三: main(), ndsolve(x), fx(x), fxd(x) ( 在函数与指针中讨论 ) 11 程序编码 ( 求 2x3-4x2+3x-6=0 在 1.5附近的根 ) #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

8、*x0-6)/(6*x0*x0-8*x0+3); cout“x=“x1 ? f(x) y X* x1 0 x2 x 如何判断 f(x)与 f(x1)同号: f(x)*f(x1)0则同号,否则异号。 结构设计 :main()或 main() 、 fx(x) 13 #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 (

9、2*x*x*x-4*x*x+3x-6 ) ; double f(double x);/函数声明 例 :求 2x3-4x2+3x-6=0 在 (-10,10)之间的根 。 14 例 4:求第 n项 Fibonacci数列 买 1对兔 , 第 3个月开始每月都生 1对 , 1年几何 ? 结构设计: 一个主函数实现 令: fib1=fib2=1 循环执行 (按月计数 i: 312): fib1+fib2 fib ; fib2 fib 1; fib fib 2; fib即为所求 。 算法设计 月份: 1月 2月 3月 4月 5月 兔对: 1 1 2(1+1) 3(2+1) 5(3+2) 15 #inc

10、lude 或 #include using namespace std; void main(void) int fib1=1, fib2=1, fib; int 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 fib 1; fib fib 2; fib即为所求 。 如何输出 112的 fib数呢? coutf1tf2; co

11、uttfibendl; 程序编码如下: 16 例 5: 找出 100200以内的全部素数 。 如果 m是素数 , 则 m不能被任何数 n整除 (n=2m/2)。 prime(n) n 1/0 main( ) 算法设计 循环执行 (m=100200) 循环执行 (n=2n/2) m%n=0 ? 程序编码 ? 结构设计 方案一:仅 main()实现 方案二: main()、 prime(n) /方案一:仅 main()实现 #Include void main(void) int m, n; for( m=100; m=200; m+ ) for( n=2; nm/2) coutmt; 17 pr

12、ime(n) n 1/0 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)

13、 ) coutm; 18 例 6: 搬砖问题 36人搬 36块砖 。 男搬 4,女搬 3,两个小孩抬 1砖 。 男女小孩组合方案多少种 ? 结构设计 仅 main( ) 函数完成 , 程序如何编码 ? 算法设计 m+w+c=36 . 4*m+3*w+c/2=36 . 穷举法: m=18循环: w=111循环: 由 求 c, 使 成立的 mwc为一方案 19 例 7: 百钱买百鸡问题 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。 百钱买百鸡,翁、母、雏各几何? 结构设计 仅 main( ) 函数完成 , 程序如何编码 ? 算法设计: cocks+hens+chicks=100 . 5cocks+3hens+chicks/3=100. 穷举法: cocks =119循环: hens =133循环: 由 求 chicks, 使 成立即为一方案

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