嵌套循环和循环综合_第1页
嵌套循环和循环综合_第2页
嵌套循环和循环综合_第3页
嵌套循环和循环综合_第4页
嵌套循环和循环综合_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、嵌套循环和循环综合2022/9/71回顾循环的分类当型循环直到型循环循环的3种基本表示while(表达式) 循环体do 循环体while(表达式);2022/9/7循环结构控制语句3for格式: for(表达式1;表达式2;表达式3) 循环体 表达式1一般为循环变量赋初值,可以为任何表达式类型表达式2用于判断循环是否结束表达式3实现循环变量的累加。3个表达式都可以省略,但分号不能省。表达式2省略,代表循环条件永远为真2022/9/7主要算法思想穷举法特点:列举指定范围类所有可能的情况进行计算应用:高斯问题递推法特点:根据前面n-1项的值,计算第n项的值应用:累加、累乘迭代法(辗转法)特点:不断

2、用变量的旧值递推新值的过程 应用:辗转相除法求最大公约数、更相减损术求最大公约数2022/9/7主要内容嵌套循环注意循环变量初值的设置设计结构良好的程序减少使用break、continue、goto学会使用标志变量flag循环综合应用2022/9/7图案一 图案二* * * * *打印下列图案2022/9/7嵌套循环2022/9/72022/9/7打印图案一void main() int i, j; char star = *; for(i=1;i=4;i+) for(j=1;j=4;j+) printf(%c, star); printf(n); *2022/9/7void main() i

3、nt i,j; /*内外层循环变量保持不同名*/ char space = ,star=*; for(i=1;i=4;i+) if(i4) printf(%*c,4-i,space); for(j=1;j=2*i-1;j+) printf(%c,star); printf(n); 打印图案二 * * *2022/9/7使用嵌套的循环体时,应注意以下问题 在嵌套的各层循环体中,使用复合语句(即用一对大花括号将循环体语句括起来)保证逻辑上的正确性 内层和外层循环控制变量不应同名,以免造成混乱 嵌套的循环最好采用右缩进格式书写,以保证层次的清晰性 循环嵌套不能交叉,即在一个循环体内必须完整的包含着另

4、一个循环 2022/9/7有30个人,其中有男人、女人和小孩,在一家饭馆吃饭共花了50先令,每个男人各花3先令、每个女人各花2先令,每个小孩各花1先令,问共有几个男人、女人、小孩马克思手稿中的数学问题2022/9/7void main() int x,y,z; for(x=0;x=16;x+) for(y=0;y=25;y+) z=30-x-y; if (3*x+2*y+z)=50 ) printf(“men=%d,women=%d,childs=%dn”, x,y,z); 2022/9/7编写结构良好的程序采用“自顶向下、逐步求精” 的思想结构化程序的特点:只有一个入口;只有一个出口;无死语

5、句,即不存在永远都执行不到的语句;无死循环,即不存在永远都执行不完的循环。示例:判断某数是否是素数2022/9/7素数问题从键盘上输入一个数,编程判断该数是否是素数。如果是,输出“Yes!”,否则,输出“No!”分析从键盘上键入一个数m判断该数的正负,如果是负数,则退出程序计算k=sqrt(m)循环变量i从2变化到k,依次检查m%i是否为0若m%i为0,则判定m不是素数,中止循环,否则遍历所有i值后退出循环,这时判定m是素数2022/9/7解法一#include #include #include void main()int m, i, k;printf(Please enter a num

6、ber:);scanf(“ %d ”, &m); /*从键盘输入一个正整数*/ if(m0) printf(“ m不能为负数!n”); exit(0); k = sqrt(m); /*计算m的平方根*/2022/9/7 for (i=2; i k) printf(Yes!n); else printf(No!n); printf(Program is over!n);两个出口A真假假条 件P2022/9/7break和continue对for、while、do-while循环进行内部手术break,退出循环break不能单独和if语句搭配使用continue,中断此次循环体的执行,开始下一次b

7、reak和continue少用为妙goto不做介绍2022/9/7找出200-300之间能被3整除的数#include void main() int i; for(i = 200;i = 300;i+) if( !(i % 3) printf(“%dn”,i); 2022/9/7int m, i, k, flag = 1; /*标志变量flag初值置为1*/ /*i=k和flag中只要有一个为假就结束循环*/for (i=2; i=k & flag; i+)if (m % i = 0) flag = 0; if (flag) printf(Yes!n); else printf(No!n);

8、 解法二核心代码一个出口A真假假条 件P2022/9/7综合应用1编程输出如下格式的九九乘法表2022/9/7分析遇到循环嵌套情况时,要仔细分析每个循环变量用于控制什么,循环变量的初值和循环终止的条件观察该乘法表发现:每行有9列,总共9行这道题中关键问题:每一个打印出来的数是按照什么规律得到的这个规律中,循环变量起什么作用循环变量的初值和循环终止的条件2022/9/7实现#include void main() int m, n;for (m=1; m10; m+) printf(%4d, m); /*打印表头*/printf(n);for (m=1; m10; m+) printf( -);

9、printf(n);2022/9/7for (m=1; m10; m+) /*被乘数m从1变化到9*/for (n=1; n10; n+) /*乘数n从1变化到9*/ printf(%4d, m*n); /*输出第m行n列中的m*n的值*/printf(n); /*输出换行符,准备打印下一行*/2022/9/7综合应用2编程输出如下格式的九九乘法表2022/9/7分析关键是控制每行打印的列数规律是:第1行打印1列第2行打印2列第m行打印m列2022/9/7实现#include void main() int m, n;for (m=1; m10; m+) printf(%4d, m); /*打印表头*/printf(n);for (m=1; m10; m+) printf( -);printf(n);2022/9/7for (m=1; m10; m+) /*被乘数m从1变化到9*/for (n=1; n=m; n+) /*乘数n从1变化到m*/ printf(%4d,m*n); /*输出第m行n列中的m*n的值*/printf(n); /*输出换行符,准备打印下一行*/2022/9/7作业预习第三章剩下的内容和第五章 打印如下九九乘法表2022/9/7大作业在10000以内验证哥德巴赫猜想之“1+1”命题:任意

温馨提示

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

评论

0/150

提交评论