《当型循环和直到型循环--1.ppt》由会员分享,可在线阅读,更多相关《当型循环和直到型循环--1.ppt(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 循 环 结 构 当 型 循 环ftp:/10.66.5.100当当 型型 循循 环环FOR循环的特点循环的特点-计数型循环,知道循环的次数。FOR循环举例一:求循环举例一:求S=1+3+5+7+99;FOR循环举例二:循环举例二:任意一个正整数任意一个正整数N的立方,的立方,总可以表示成总可以表示成N个连续奇数的和。个连续奇数的和。输入输入N,输出这,输出这N个奇数。个奇数。另一种问题:求恰好使s=1+1/2+1/3+1/n的值大于5时n的值 不知道循环次数,无法用 FOR 语句!当型循环当型循环While do ;其意义为:其意义为:当布尔表达式的值为当布尔表达式的值为true时,时,反复
2、执行反复执行do后面的语句。后面的语句。While语句的执行过程为:语句的执行过程为:判断布尔表达式的值判断布尔表达式的值,如果其值为真如果其值为真,执行步骤执行步骤2,否则执行步骤否则执行步骤;执行循环体语句执行循环体语句(do后面的语句后面的语句);返回步骤返回步骤;结束循环结束循环,执行执行While后面的下一个语句。后面的下一个语句。语句语句流程图流程图NY 表达式表达式当型循环当型循环if选择选择请注意区别请注意区别FOR循环是一种特殊的当型循环循环是一种特殊的当型循环当 型 循 环 生活中的例子有一个爱哭的小娃娃,有一天他要求父母给买一个玩具,有一个爱哭的小娃娃,有一天他要求父母给
3、买一个玩具,可是父母不同意,于是他就开始一个循环:可是父母不同意,于是他就开始一个循环:While(父母不给买玩具父母不给买玩具)doBegin我哭我哭;End;进一步细化如果父母铁了心就是不给买怎么办?这时小娃娃不可能如果父母铁了心就是不给买怎么办?这时小娃娃不可能无限制哭下去无限制哭下去(死循环死循环),还需有一个能结束的条件:,还需有一个能结束的条件:While(父母不给买玩具父母不给买玩具)and(我还没有哭累我还没有哭累)doBegin我哭我哭;End;问题:如何表示哭累的程度?问题:如何表示哭累的程度?完整程序为表示是否哭累,我们假设小娃娃有一个疲劳度,每哭为表示是否哭累,我们假设
4、小娃娃有一个疲劳度,每哭一次疲劳度加一次疲劳度加1,当疲劳度到达某个数值,比如,当疲劳度到达某个数值,比如100时,时,可怜的小娃娃累了可怜的小娃娃累了程序如下:程序如下:疲劳度初始化为疲劳度初始化为0;While(父母不给买玩具父母不给买玩具)and(疲劳度疲劳度100)doBegin我哭我哭;看爸妈是否同意买看爸妈是否同意买;疲劳度疲劳度:=疲劳度疲劳度+1;Ends:=0.0;n:=0;while s=5 do 停止计数的条件停止计数的条件 当s的值还未超过5时Beginn:=n+1;项数加1s:=s+1/n;将下一项值累加到SEnd;Writlen(n);输出结果当 型 循 环 例题一
5、从键盘上连续输入字符,当遇到“?”时结束输入,并打印出字符的个数。当 型 循 环 例题二当 型 循 环停止计数的条件是字符为停止计数的条件是字符为“?”,无法用无法用FOR循环循环。CH-字符字符(char)类型类型num-整数整数(integer)类型类型Read(ch);读入第一个字符读入第一个字符Whilech?doBeginnum:=num+1;统计字符的个数统计字符的个数read(ch);继续读入下一个字符继续读入下一个字符End;Writeln(num);输出字符个数输出字符个数当 型 循 环 例题三 所有的For循环都可以转化为While循环求S=1+3+5+99S:=0;总和S
6、初始化i:=1;计数器i初始化While i=50 dobegin S:=S+2*i1;i:=i+1;计数器累加,步长为1end;Write(s);退出循环后,退出循环后,i是多少呢?是多少呢?当 型 循 环 例题三 初始化值变动时,循环语句可能要变动。求S=1+3+5+99S:=0;总和S初始化i:=0;计数器i初始化While i=50 dobegin S:=S+2*i+1;i:=i+1;计数器累加,步长为1end;Write(s);这个程序有个小错误这个程序有个小错误 当 型 循 环 例题三 步长变动时,循环语句可能也要变动。求S=1+3+5+99S:=0;总和S初始化i:=1;计数器i
7、初始化While i=?do i=50是错的 begin S:=S+i;i:=i+2;计数器累加,步长为2end;这里i如果初始化为0是错的Write(s);例四 求正整数N的所有因子之和 Var n,i,s:Longint;Begin Readln(N);输入N S:=0;S初始化 i:=1;计数器初始化 While i=N do begin 复合语句 if N mod i=0 then S:=S+i;i:=i+1;计数器累加 end;Writeln(S);End.OK:=true;Readln(N);i:=2;While i=Round(sqrt(N)doBegin if N mod i=0 then begin ok:=false;break 强行退出循环 end;i:=i+1;End;If ok=true then writeln(YES)else writeln(NO);例五 判断正整数N是否为质数作业:求两个正整数m和n的最大公约数
限制150内