《[其它考试]while repeat 循环结构.ppt》由会员分享,可在线阅读,更多相关《[其它考试]while repeat 循环结构.ppt(41页珍藏版)》请在三一办公上搜索。
1、BEA Confidential.|1,2、While语句,For语句用来描述已经确定重复次数的循环结构,但有时候我们会遇到循环次数未知的情况,这种循环称为条件循环。,While语句用于“当满足一定条件时进行循环”的情况,因此也称为“当型循环”。语法格式:While do;,注:如果循环体是若干条语句需在循环体前面加begin,后面加end。,BEA Confidential.|2,while语句的形式为:while do;其意义为:当布尔表达式的值为true时,执行do后面的语句。while语句的执行过程为:判断布尔表达式的值,如果其值为真,执行步骤2,否则执行步骤4;执行循环体语句(do后
2、面的语句);返回步骤1;结束循环,执行while的下一个语句。说明:这里while和do为保留字,while语句的特点是先判断,BEA Confidential.|3,例:输出1100之间的奇数,Program ex;var x,y:integer;Begin for x:=1 to 50 do begin y:=x*2-1;write(y:4);end;writeln;End.,Program ex;var x:integer;Begin x:=1;while x100 do begin write(x:4);x:=x+2;end;writeln;End.,for语句,while语句,BEA
3、 Confidential.|4,S=2+4+6+8+100;S=1+1/2+1/3+1/4+1/100;S=12+22+32+42+1002;,练习:用while 语句编程算出以下算式:,BEA Confidential.|5,样程:,program ex(input,output);var i,s,x:integer;begin s:=0;i:=2;while i=100 do begin s:=s+i;i:=i+2;end;writeln(s);end.,S=2+4+6+8+100;,BEA Confidential.|6,样程:,program ex(input,output);var
4、 i:integer;s,x:real;begin s:=0;i:=1;while i=100 do begin x:=1/i;s:=s+x;i:=i+1;end;writeln(s:0:3);end.,S=1+1/2+1/3+1/4+1/100;,BEA Confidential.|7,样程:,program ex(input,output);var i:integer;s,x:longint;begin s:=0;i:=12;while i=1002 do begin s:=s+i;i:=i+10;end;writeln(s);end.,S=12+22+32+42+1002;,BEA Co
5、nfidential.|8,例:计算S=1+3+5+n(n为大于1的奇数),Program sums;VAR odds,n,sum:integer;BEGIN write(input a odd data:);readln(n);输入一个奇数 sum:=0;odds:=1;while odds=n do BEGIN sum:=sum+odds;odds:=odds+2;END;writeln(sum);END.,书本例题P38-N3-22,BEA Confidential.|9,分析:求两个正整数的最大公约数采用的辗转相除法求解。以下是辗转的算法:分别用m,n,r表示被除数、除数、余数。求m/
6、n的余数r.若r=0,则n为最大公约数.若r0,执行第步.将n的值放在m中,将r的值放在n中.返回重新执行第步。,例:用尼考曼彻斯法求两个自然数a和b的最大公约数,BEA Confidential.|10,程序如下:program ex4_4;var m,n,t,a,b,r:integer;beginwrite(Input m,n:);readln(m,n);a:=m;b:=n;r:=a mod b;while r0 dobegin a:=b;b:=r;r:=a mod b;end;writeln(The greatest common divide is:,b:8);end.,BEA Con
7、fidential.|11,例:输入一个整数,求其各位数字之和。,BEA Confidential.|12,练习:输入一串字符,以回车符结束,输出其中字母个数与数字个数。,分析:确定使用while循环.循环条件是:输入的字符不是回车符(即ord(ch)13)定义数据:ch:char;num1,num2:integer;,BEA Confidential.|13,样程:,Program ex;Var ch:char;num1,num2:integer;Begin num1:=0;num2:=0;read(ch);while ord(ch)13 do begin if(ch=a)and(ch=A)
8、and(ch=0)and(ch=9)then num2:=num2+1;end;writeln(number of letters:,num1);writeln(number of digit:,num2)End.,read(ch);,BEA Confidential.|14,例:利用格里高利公式求,直到最后一项的绝对值小于10的负6次方为止,BEA Confidential.|15,var i,sign:integer;pi:real;begin pi:=0;sign:=1;i:=1;while 1/(i*2-1)=1e-6 do begin pi:=pi+1/(i*2-1)*sign;si
9、gn:=sign*(-1);i:=i+1;end;pi:=pi*4;writeln(pi);end.,BEA Confidential.|16,3、repeat语句,repeat语句于“重复执行循环体。一直到指定的条件为真时为止”的循环结构,它又被称为“直到型循环”。,语法格式:,Repeat;until;,不需要begin end,BEA Confidential.|17,看下列程序的功能:Program Exam12;Var a:byte;Begin a:=1;repeat Writeln(a);a:=a+1;Until a200;Readln;End.,看下列程序的功能:Program
10、Exam12;Var a:byte;Begin a:=1;while a=200 do begin Writeln(a);a:=a+1;end;Readln;End.,BEA Confidential.|18,例:计算S=1+3+5+n(n为大于1 的奇数,用repeat语句)Program ch321;VAR odds,n,sum:integer;BEGIN write(input a odd data:);readln(n);sum:=0;odds:=1;repeat sum:=sum+odds;odds:=odds+2;until odds n;writeln(sum);END.,BEA
11、 Confidential.|19,repeat语句使用说明见书本P40,BEA Confidential.|20,S=2+4+6+8+100;S=1+1/2+1/3+1/4+1/100;S=12+22+32+42+1002;,练习:用repeat 语句编程算出以下算式:,BEA Confidential.|21,样程:,program ex(input,output);var i,s,x:integer;begin s:=0;i:=2;repeat s:=s+i;i:=i+2;until I100;writeln(s);end.,S=2+4+6+8+100;,BEA Confidential
12、.|22,样程:,program ex(input,output);var i:integer;s,x:real;begin s:=0;i:=1;repeat x:=1/i;s:=s+x;i:=i+1;until i100;writeln(s:0:3);end.,S=1+1/2+1/3+1/4+1/100;,BEA Confidential.|23,样程:,program ex(input,output);var i:integer;s,x:longint;begin s:=0;i:=12;repeat s:=s+i;i:=i+10;until I1002;writeln(s);end.,S=
13、12+22+32+42+1002;,BEA Confidential.|24,练习:输入一串字符,以回车符结束,输出其中字母个数与数字个数。,分析:确定使用循环.循环条件是:输入的字符不是回车符(即ord(ch)13)定义数据:ch:char;num1,num2:integer;,BEA Confidential.|25,样程:,Program ex(input,output);var num1,num2:integer;ch:char;begin num1:=0;num2:=0;repeat read(ch);if(ch=a)and(ch=A)and(ch=0)and(ch=9)then i
14、nc(num2);until ord(ch)=13;writeln(num1);writeln(num2);End.,BEA Confidential.|26,例:用尼考曼彻斯法求两个自然数a和b的最大公约数,程序如下:var m,n,a,b,r:integer;beginwrite(Input m,n=);readln(m,n);a:=m;b:=n;repeatr:=a mod b;a:=b;b:=r;until r=0;writeln(The greatest common divide is,_);end.,?,BEA Confidential.|27,循环结构练习题,1、求1!+2!+
15、10!的值。(自己先思考如何处理),program ex1;var t,s:longint;i,j,n:integer;beginS:=0;for n:=1 to 10 dobegint:=1;for j:=1 to n dot:=t*j;S:=S+t;end;writeln(s=,s:0:0);end.,方法一,BEA Confidential.|28,方法二,program ex4_5;var t,s:real;i,j,n:integer;beginS:=0;t:=1;for n:=1 to 10 dobegint:=t*n;S:=S+t;end;writeln(s=,s:0:0);end
16、.,BEA Confidential.|29,2、一个炊事员上街采购,用500元钱买了90只鸡,其中母鸡一只15元,公鸡一只10元,小鸡一只5元,正好把钱买完。问母鸡、公鸡、小鸡各买多少只?,programr ex4_6;var i,j,k:integer;beginfor i:=0 to 33 dofor j:=0 to 50 dobegink:=90-i-j;if 15*i+10*j+5*k=500 then writeln(i:5,j:5,k:5);end;end.,BEA Confidential.|30,3、求100200之间的所有素数,分析:我们可对100200之间的每一整数进行判
17、断,判断它是否为素数,是则输出。而对于任意整数i,根据素数定义,我们从2开始,到,找i的第一个约数。若找到第一个约数,则i必然不是素数。否则i为素数。,BEA Confidential.|31,3、求100200之间的所有素数,vari:integer;x:integer;beginfor i:=100 to 200 dobeginx:=2;while(x0)dobeginx:=x+1;end;if xtrunc(sqrt(i)then write(i:8);end;end.,BEA Confidential.|32,4、宰相的麦子:相传古印度宰相达依尔,是国际象棋的发明者。有一次,国王因为他
18、的贡献要奖励他,问他想要什么。达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。”国王一想,这还不容易,刚想答应,如果你这时在国王旁边站着,你会不会劝国王别答应,为什么?,试着写计算总麦子数的程序,BEA Confidential.|33,总计需要麦粒4626174068165504246粒。一公斤麦子大约有4000粒左右,那么一吨麦子就是4000000粒,这样一除,4626174068165504246粒麦子大致上是1406543517041吨,也就是说需要一万四千零六十五亿吨麦子才能
19、满足国际象棋大师的要求。这个大师好不贪婪。不要说在五千年前,就是生产力高度发达的现代社会,要生产出这么多麦子也要一万零好几千年吧。,BEA Confidential.|34,5、编写一程序,验证角谷猜想。所谓的角谷猜想是:“对于任意大于1的自然数n,若n为奇数,则将n变为3*n+1,否则将n变为n的一半。经过若干次这样的变换,一定会使n变为1。”,Var n:integer;begin read(n);repeat if(n1)and(n mod 2)=0 then n:=n div 2 else n:=n*3+1;until n=1;if n=1 then writeln(true);end
20、.,BEA Confidential.|35,BEA Confidential.|36,练习,书本P44 N15、N16、N17,BEA Confidential.|37,综合练习:素因数分解,例如:输入2200。输出:2200=2*2*2*5*5*11,算法,2200,1100,550,275,55,11,2,2,2,5,5,11,1,BEA Confidential.|38,Program ex(input,output);Var x,I,j:integer;flag:boolean;Begin readln(x);write(x,=);I:=2;while x i do begin if
21、 x mod I=0 then begin x:=x div I;write(I,*);end;else I:=I+1;end;writeln(x);End.,验证哥德巴赫猜想.,哥德巴赫猜想是:对任一充分大的偶数n,可以找到两个素数p,q,使得n=p+q,BEA Confidential.|40,算法:,读入任一大于3的偶数nP:=1;Repeat 1)p:=p+1;q:=n p;2)p是素数吗?3)q 是素数吗?until p,q均是素数打印n=p+q,BEA Confidential.|41,样程:,Program godbah(input,output);Var n,p,q,j:integer;flagp,flagq:boolean;Begin read(n);p:=1;repeat p:=p+1;q:=n-p;flagp:=true;for j:=2 to round(sqrt(p)do if p mod j=0 then flagp:=false;flagq:=true;for j:=2 to round(sqrt(q)do if q mod j=0 then flagq:=false;until flagp and flagq;writeln(n,=,p,+,q);End.,
链接地址:https://www.31ppt.com/p-6034173.html