收藏 分享(赏)

while 循环语句.ppt

上传人:gnk289057 文档编号:6573868 上传时间:2019-04-18 格式:PPT 页数:22 大小:152.50KB
下载 相关 举报
while 循环语句.ppt_第1页
第1页 / 共22页
while 循环语句.ppt_第2页
第2页 / 共22页
while 循环语句.ppt_第3页
第3页 / 共22页
while 循环语句.ppt_第4页
第4页 / 共22页
while 循环语句.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、循环结构程序设计,安庆四中 丁贤友,while 循环语句,格式:while 布尔表达式do循环体; 功能: ()计算布尔表达式的值; ()若布尔表达式的值为true ,则转() ,否则,转() ; ()执行循环体; ()转() ; ()循环结束,执行循环体后面的语句。,while 循环语句的执行过程,说明:,()在进入循环体之前测试布尔表达式的值,若最初的值为false ,则根本不进入循环体。 ()为了使循环能终止,循环体中一定要有影响布尔表达式的操作,否则该循环将陷入死循环。 ()循环体只能是一条简单的语句或一条复合语句。 例如:s:= 0 ;i:= 1 ;while (i= 4) dobe

2、gins:=si;i:=i1 ;end ; begin 和end 括起来的就是while 循环语句的循环体。,while 循环语句的应用,【例48】 输入一串以“ ?”为结束标志的字符,统计其中字母和数字的个数。 问题分析: 很明显,本题是一个计数问题:重复读入字符,根据字符的类别,进行统计。但是,输入多少个字符呢? 题目中没有明确说明,只说明了结束输入的标记。由于这个重复操作的次数未知,不适于应用for 循环语句了。而解决未知次数的循环是while 循环语句所擅长的,因此本题应用while 循环语句来解决。,算法描述:,()计数器初始化:字母个数zm ,数字个数sz ; ()读入一个字符给c

3、h ; ()当该字符ch 不是“ ?”时,重复操作: 若ch 是字母,则字母个数加 zm zm , 若ch 是数字,则数字个数加 sz sz , 读入一个新字符给ch ; ()输出统计结果zm 和sz ; ()结束。,program exam48 ; var ch char ;zm ,sz integer ; beginzm 0 ;sz 0 ;read(ch) ; 在循环外读入第一个字符,使while的条件能正常判断while ch ? dobeginif (ch a) and (ch z) or (ch A) and (ch Z) thenzm zm 1 输入的是字母else if (ch

4、0) and (ch 9) thensz sz 1 ; 输入的是数字read(ch) ; 继续读入字符end ;writeln(The numberof letters is :,zm) ;writeln(The numberof figures is :,sz) ; end ,【例49】 求两个正整数m 和n 的最大公约数。,问题分析: 最大公约数(greatest common divisor ,简写为gcd)是指几个数共有的因数之中最大的一个,例如 和 的最大公约数是 ,记作gcd( ,) 。 辗转相除法的算法思想是:对于给定的两个正整数,用较大的数除以较小的数,若余数不为零,则将余数和

5、较小的数构成一对新数,继续进行上面的除法,直到大数被小数除尽,这时较小的数就是原来两个数的最大公约数。,算法描述:,()计算被除数m 除以除数n 的余数r ; ()当r 时,重复下面操作: m n ; n r ; r m mod n ; ()输出最大公约数n ; ()结束。,程序设计:,program exam49 ; varm ,n ,r integer ; beginwrite(Please input m ,n :) ;readln(m ,n) ;r m mod n ; r取m 和n的余数while r 0 do 辗转相除beginm n ;n r ;r m mod n ;end ;wr

6、iteln(The greatestcommon divisor is :,n) ; end ,【例410】 设计问题 的程序。,program exam410 ; varn integer ;score ,tot ,min ,max real; beginwriteln(Please input the scores ,and end the inputby print 1 !) ;n 0 ; 初始化人数tot 0 ;初始化分数,先存放总分,最后除以人数,即得平均分min maxint ;初始化最低分max 1 ; 初始化最高分read(score) ;,while score 1 do 当

7、输入非 1 时,重复统计beginn n 1 ; 人数加1tot tot score ; 分数累加ifm in score thenm in score ;更新最低分ifmax score thenmax score ;更新最高分read(score) ;end ; If n 0 then writeln(Not inputatall !) elsebeginwriteln(The numberof studentswho take the exam is ,n) ;writeln(The average score is,totn 0 2) ;由总分生成平均分writeln(Among th

8、em ,) ;writeln( themin score is ,m in 0 2) ;writeln( themax score is,max 0 2) ;end ; end ,while 循环语句与for 循环语句应用的互换,【例411】 将下面用for 循环语句编写的程序改写成等效的应用while 循环语句的程序。 var i integer ; beginfor i 1 to 10 dowriteln(i) ; end ,算法描述: ()初始化i ; ()当i 时,重复操作; 输出i , i i ; ()结束。 程序设计: program exam411 ; var i integer

9、 ; begini 1 ; 对应for循环的初值while (i 10) do 对应于for循环的终值beginwriteln(i) ; 对应于for循环的循环体i i 1 ; while语句中所必须的改变布尔表达式值的操作end ; end ,【例412】用while 循环语句判断一个整数n(n1)是否为质数。,问题分析: 在例 中已经用for 循环语句解决了判断n 是否质数的问题。当时我们用 至n -作为因数,重复了n- 次操作。 但是这个循环次数只对质数是必须的,对于非质数,发现第一个因数,就应该结束循环,因为只要有一个 和n 之外的因数,就足以证明n 不是质数,不必再做判断了。于是,判

10、断i 是否是n 的因数的操作只在下面两个条件同时成立时进行就足够了: ()没出现整除; ()i 小于等于sqrt(n) 。 一旦不满足条件() ,退出循环,n 不是质数;而不满足条件( )时,n 一定是一个质数。,算法描述: ()读入n ; ()如果n ,直接输出Yes ,否则 设定因数的初始值i , 当i sqrt(n)且n mod i 时,重复操作:i i , 若n mod i ,则输出No ,否则输出Yes ; ()结束。,program exam412 ; Var n ,i integer ; beginreadln(n) ;if n 2 then 单独处理2writeln(Yes)e

11、lse begin 下面判断大于2 的数是否质数i 2 ;while (n mod i 0) and (i sqrt(n) doi i 1 ;if n mod i 0 then writeln(No) 由于整除而退出,说明n不是质数else writeln(Yes) ; 一直没有整除,说明n是质数end ; end ,例:输入若干个字符,它的终止符是“#”,计算输入的字符中字母a出现的次数(包括大小写)。,例:求输入的一个整数的各位数字之和,例:求两个自然数m,n的最小公倍数。,()超市收银是一个很有趣的流程:扫描顾客购买的每一种商品的条形码,屏幕会显示该商品的价格,全部扫描结束,按确认键,屏幕上将显示顾客应付的总金额。现在,请你编写一个程序模拟这个收银过程。我们假定输入0,表示扫描结束。 假定商品条形码与价格的对应关系如表所示: 输入: 以空格分隔的条形码编号,以 结束。 输出: 结账金额(保留 位小数) 。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报