[其它考试]while repeat 循环结构.ppt

上传人:音乐台 文档编号:2002435 上传时间:2019-01-30 格式:PPT 页数:41 大小:428.50KB
返回 下载 相关 举报
[其它考试]while repeat 循环结构.ppt_第1页
第1页 / 共41页
[其它考试]while repeat 循环结构.ppt_第2页
第2页 / 共41页
[其它考试]while repeat 循环结构.ppt_第3页
第3页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[其它考试]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

2、; 执行循环体语句(do后面的语句); 返回步骤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;

3、writeln; End.,for语句,while语句,BEA 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 Con

4、fidential. | 6,样程:,program ex(input,output); var 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 beg

5、in s:=s+i; i:=i+10; end; writeln(s); end.,S=12+22+32+42+1002;,BEA Confidential. | 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-N

6、3-22,BEA Confidential. | 9,分析:求两个正整数的最大公约数采用的辗转相除法求解。以下是辗转的算法: 分别用m,n,r表示被除数、除数、余数。 求m/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; begin write(Input m,n:); readln(m,n); a:=m;b:=n; r:=a mod b

7、; while r0 do begin a:=b;b:=r; r:=a mod b; end; writeln(The greatest common divide is:,b:8); end.,BEA Confidential. | 11,例:输入一个整数,求其各位数字之和。,BEA Confidential. | 12,练习:输入一串字符,以回车符结束,输出其中字母个数与数字个数。,分析:确定使用while循环. 循环条件是:输入的字符不是回车符(即ord(ch)13) 定义数据: ch:char; num1,num2:integer;,BEA Confidential. | 13,样程:

8、,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 ) 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,例:利用格里高利公式求,直到最后一项的绝对

9、值小于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; sign:=sign*(-1); i:=i+1; end; pi:=pi*4; writeln(pi); end.,BEA Confidential. | 16,3、repeat语句,repeat语句于“重复执行循环体。一直到指定的条件为真时为止”的循环结构,它又被称为“直到型循环”。,语法格式:,Repea

10、t ; ; 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 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+

11、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 Confidential. | 19,repeat语句使用说明 见书本P40,BEA Confidential. | 20,S=2+4+6+8+100; S=1+1/2+1/3+1/4+1/100;

12、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. | 22,样程:,program ex(input,output); var i:integer; s,x:real; begin s:=0; i:=1; repe

13、at 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=12+22+32+42+1002;,BEA Confidential. | 24,练习:输入一串字符,以回车符结束,输出其

14、中字母个数与数字个数。,分析:确定使用循环. 循环条件是:输入的字符不是回车符(即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 inc(num2); until ord(ch)=13; writeln(num1); wr

15、iteln(num2); End.,BEA Confidential. | 26,例:用尼考曼彻斯法求两个自然数a和b的最大公约数,程序如下: var m,n,a,b,r : integer; begin write(Input m,n=); readln(m,n); a:=m;b:=n; repeat r:=a mod b; a:=b;b:=r; until r=0; writeln(The greatest common divide is,_); end.,?,BEA Confidential. | 27,循环结构练习题,1、 求1!+2!+10!的值。(自己先思考如何处理),progr

16、am ex1; var t,s:longint; i,j,n:integer; begin S:=0; for n:=1 to 10 do begin t:=1; for j:=1 to n do t:=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; begin S:=0;t:=1; for n:=1 to 10 do begin t:=t*n; S:=S+t; end; writeln(s=,s:0:0);

17、end.,BEA Confidential. | 29,2、 一个炊事员上街采购,用500元钱买了90只鸡, 其中母鸡一只15元,公鸡一只10元,小鸡一只5元,正好把钱买完。问母鸡、公鸡、小鸡各买多少只?,programr ex4_6; var i,j,k:integer; begin for i:=0 to 33 do for j:=0 to 50 do begin k:=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之间的所有素数,分析:我们

18、可对100200之间的每一整数进行判断,判断它是否为素数,是则输出。而对于任意整数i,根据素数定义,我们从2开始,到 ,找i的第一个约数。若找到第一个约数,则i必然不是素数。否则i为素数。,BEA Confidential. | 31,3、求100200之间的所有素数,var i : integer; x : integer; begin for i:=100 to 200 do begin x:=2; while (x0)do begin x:=x+1; end; if xtrunc(sqrt(i) then write(i:8); end; end.,BEA Confidential. |

19、 32,4、宰相的麦子:相传古印度宰相达依尔,是国际象棋的发明者。有一次,国王因为他的贡献要奖励他,问他想要什么。达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。”国王一想,这还不容易,刚想答应,如果你这时在国王旁边站着,你会不会劝国王别答应,为什么?,试着写计算总麦子数的程序,BEA Confidential. | 33,总计需要麦粒4626174068165504246粒。 一公斤麦子大约有4000粒左右,那么一吨麦子就是4000000粒,这样一除 ,462617406816550

20、4246粒麦子大致上是1406543517041吨,也就是说需要一万四千零六十五亿吨麦子才能满足国际象棋大师的要求。这个大师好不贪婪。不要说在五千年前,就是生产力高度发达的现代社会,要生产出这么多麦子也要一万零好几千年吧。,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

21、2 else n:=n*3+1; until n=1; if n=1 then writeln(true); end.,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:intege

22、r; flag:boolean; Begin readln(x); write(x,=); I:=2; while x i do begin if 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的偶数n P:= 1; Repeat 1) p:=p+1; q:= n p; 2) p是素数吗? 3) q 是素数吗?

23、 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.,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1