第6讲程序结构设计(下)讲述_第1页
第6讲程序结构设计(下)讲述_第2页
第6讲程序结构设计(下)讲述_第3页
第6讲程序结构设计(下)讲述_第4页
第6讲程序结构设计(下)讲述_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、1 第第6 讲讲: 程序结构设计程序结构设计(下下)(参考教材的第参考教材的第3章章)2015-10-262 主要内容u循环程序设计:3种循环控制语句u综合程序设计举例3 3 3. .4 4循环程序设计循环程序设计-基本概念基本概念n用顺序结构和分支结构能解决所有问题吗?用顺序结构和分支结构能解决所有问题吗?n计算机是一个计算机是一个“伟大傻瓜伟大傻瓜”,特征是不厌其烦地做,特征是不厌其烦地做同样的操作,这是通过同样的操作,这是通过循环语句循环语句实现的实现的n 对某些问题,在寻找它的解时需要检查对某些问题,在寻找它的解时需要检查所有的可所有的可能的方案能的方案,从中找出可行解。这种解决问题的

2、方法,从中找出可行解。这种解决问题的方法称为称为枚举法或穷举法枚举法或穷举法. .该方法就是采用循环来实现。该方法就是采用循环来实现。4 3.4 3.4 循环程序设计循环程序设计-基本概念基本概念当条件满足当条件满足 循环体循环体 当型循环当型循环 循环体循环体 直到条件满足直到条件满足直到型循环直到型循环5 3.4 3.4 循环程序设计循环程序设计 l C+C+语言提供了语言提供了3 3种循环控制语句种循环控制语句: : (1) (1)whilewhile语句语句 (2) (2)do-whiledo-while语句语句 (3)for (3)for 语句语句l 循环条件设计:循环次数有限(循环

3、条件设计:循环次数有限(计数控制计数控制)和循环次数未知和循环次数未知(事件控制(事件控制)l 循环体设计:循环体如果包含一条以上语句时循环体设计:循环体如果包含一条以上语句时, 则应该用花则应该用花括号括起括号括起, 构成复合语句构成复合语句l 在循环体语句中在循环体语句中, 一定要一定要有改变循环条件的语句有改变循环条件的语句, 使循环能使循环能够终止。否则,将成为死循环。够终止。否则,将成为死循环。6 3.5.13.5.1 while while 语句语句 while语句的一般格式为语句的一般格式为: : while ( 表达式表达式 ) 循环体语句循环体语句while语句的执行流程如图

4、所示语句的执行流程如图所示: :循环体循环体while语句的下一语句语句的下一语句表达式表达式0图图 while语句执行流程示意图语句执行流程示意图非非07 starti=1;sum=0;in sum=sum+k; i+;stop读入n读入k输出sumNYn例:从键盘输入n(n0)个数,求其和?n算法重点循环条件(计数控制循环)循环体构造计数器(i)和累加器(sum)的概念8 循环条件循环体9 n例:从键盘连续输入字符,直例:从键盘连续输入字符,直到输入到输入“回车回车”符为止,符为止, 统计输统计输入的字符个数入的字符个数n算法重点算法重点未知循环次数的循环条件(事件控制循环)getchar

5、()/getch()函数使用和区别char c;c=getchar();或 c=getch();c=getch();头文件是conio.h。而不是stdio.h windows平台下ENTER键会产生两个转义字符rn,getchar()返回10(即n),getch返回13(r) 10 11 求PI的近似值,见P80-81提问:为什么错?12 求PI的近似值,见P80-8113 3.5.3.5.2 2 do-while do-while 语句语句 n do-while语句格式语句格式: : do 循环体循环体 while ( );n do-while语句的执行流程如图所示语句的执行流程如图所示:

6、 :循环语句体do-while语句的下一语句表达式0 do-while语句执行流程示意图非014 3.5.3.5.2 2 do-while do-while 语句语句 l do-while语句与语句与while语句的区别语句的区别: :do-while语句是在判断条件是否成立之前语句是在判断条件是否成立之前, , 先先执行循环体语句一次;执行循环体语句一次;while语句则是先判断条件是否成立语句则是先判断条件是否成立, , 如果条如果条件成立才执行循环体件成立才执行循环体; ; l while语句的循环体可能一次都不执行;而语句的循环体可能一次都不执行;而do-while语句的循环体至少被执

7、行一次语句的循环体至少被执行一次, , 这是这是while语句和语句和do-while语句的根本区别语句的根本区别15 starti=1;sum=0; sum=sum+k; i+;stop读入n读入k输出sumNYinstarti=1;sum=0;in sum=sum+k; i+;stop读入n读入k输出sumNY例:从键盘输入例:从键盘输入n n(n0n0)个数,求其和?)个数,求其和?循环条件循环体循环条件循环体16 3.4.2 do-while 语句语句17 3.5.3.5.3 3 for for 语句语句 n for 循环格式循环格式: : for ( ;) 循环体语句循环体语句 n

8、for循环的执行流程如图所示循环的执行流程如图所示: :计算表达式1循环语句体计算表达式3for语句的下一语句表达式2018 用用for循环语句编写计算循环语句编写计算100100个个6 6相加的程序相加的程序19 3.5.3.5.3 3 for for 语句语句lfor语句的功能可用while语句描述如下:表达式1; 例如: i=1;while (表达式2) while(i=50) 语句; sum=sum+i; 表达式3; i+; lfor语句最简单的应用形式: for (循环变量赋初值;循环条件;循环变量增值)语句 例如, for (i=1; i=50; i+) sum=sum+i; 20

9、 3.5.3.5.3 3 for for 语句语句1.1.缺省缺省 1的情况的情况; ; int i=1, sum = 0 int i=1, sum = 0 ; for ( for ( ;i = 100 i = 100 ;i +)i +) sum = sum + 6 sum = sum + 6 ;2.2.缺省缺省 2的情况的情况; ; for(i=1,sum=0; ;i+) for(i=1,sum=0; ;i+) sum=sum+6; sum=sum+6;此时循环条件为真,相当此时循环条件为真,相当while(1)while(1)3.3.缺省缺省 3的情况的情况; ; int i=1, sum

10、 = 0 int i=1, sum = 0 ; for ( for ( ;i = 100 i 22的整数的整数n n,如果除,如果除1 1和和n n外不能被外不能被任何数整除,则是素数;并规定任何数整除,则是素数;并规定2 2是最小素数。为了确定是最小素数。为了确定n n是否含有因子,只需用是否含有因子,只需用2 2到到n(n(也可用也可用2 2至至sqrt(n)sqrt(n)作除数,作除数,如均不能整除如均不能整除n,n,则则n n是素数,否则,是素数,否则,n n不是素数不是素数l算法算法(1)(1)输入输入n n(2)(2)如果如果n n等于等于2 2,则输出,则输出“2 2是一个素数是

11、一个素数”;否则,如果;否则,如果n2n2则找则找n n是否有因子是否有因子 i i从从2 2开始,用开始,用i i除除n n,若余数非,若余数非0 0且且in,in,则用下一个则用下一个i i重复重复该过程。当该过程。当余数为余数为0 0或或i i大于等于大于等于n n时,结束找因子的过程时,结束找因子的过程(3)(3)如果结束循环时余数为如果结束循环时余数为0 0,则输出,则输出n n“不是一个素数不是一个素数“,否则,输出否则,输出n n“是一个素数是一个素数”l算法重点:循环条件和程序效率算法重点:循环条件和程序效率22 /妙!妙!妙!妙!23 n输入一批整数,以输入一批整数,以0 0

12、为结束,输出其中最大的一个为结束,输出其中最大的一个n分析:从若干数中找出最大的一个数,最基本算法是分析:从若干数中找出最大的一个数,最基本算法是“打打擂台擂台”。即两两相比,大者留下,小者下台。当所有数比。即两两相比,大者留下,小者下台。当所有数比完时,台上留下的数为最大。程序中用一个变量完时,台上留下的数为最大。程序中用一个变量maxmax作为擂作为擂台,保存每两个数相比中大的一个数台,保存每两个数相比中大的一个数n算法:算法: (1) (1)输入一个数输入一个数x x (2) (2)置最大数置最大数maxmax初值为初值为x x。 (3) (3)检查检查x x是否等于是否等于0 0,如果

13、,如果x x不等于不等于0 0,则,则 (3)-1 (3)-1 输入下一个数输入下一个数x x (3)-2 (3)-2 如果如果maxxmax=1,n为整数为整数), S(n)=k(1)+k(2)+k(n) (n=1,n为整数为整数),输入输入n(1=n=10),输出相应的,输出相应的S(n)。输入数据不需要考虑判错。输入数据不需要考虑判错。测试数据:测试数据:n=1答案答案:1n=4答案答案: 33n=10 答案答案: 4037913(3)找出)找出11000中仅仅包含中仅仅包含5个因子(包括个因子(包括1和自身)的所和自身)的所有自然数,输出这些自然数的所有因子。有自然数,输出这些自然数的

14、所有因子。要求:输出要有提示要求:输出要有提示44 (4) 有有A, B, C, D, E, F 六个小朋友,现将三顶相同的白帽六个小朋友,现将三顶相同的白帽子,三顶相同的黑帽子分给他们,每人一顶。请编写程序计子,三顶相同的黑帽子分给他们,每人一顶。请编写程序计算不同分配方案的个数,并打印所有的分配方案。算不同分配方案的个数,并打印所有的分配方案。(5)从键盘输入一个五位正整数,首先分离出该正整数)从键盘输入一个五位正整数,首先分离出该正整数中的每一位数字,然后用分离出的每位数字组成一个最接中的每一位数字,然后用分离出的每位数字组成一个最接近近40000的数和一个最接近的数和一个最接近60000的数。要求检查输入数据的数。要求检查输入数据的合法性。的合法性。参考答案:参考答案:输入:输入:1;输出:错误提示。输出:错误提示。输入:输入:100000;输出:错误提示。输出:错误提示。输入:输入:34567;输入:输入:37654 5764345 中止死循环中止死循环n儿子:儿子:“爸爸,你小时候,你爸爸打过你吗?爸爸,你小时候,你爸爸打过你吗?”n爸爸:爸爸:“打过。打过。”n儿子:儿子:“那你爸爸小时候,他爸爸也打过他吗?那你爸爸小时候,他爸爸也打过他吗?”n爸爸:爸爸:“当然,也打过。这是死循环当然,也打过。这是死循环.”n儿子:儿子:“爸

温馨提示

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

评论

0/150

提交评论