1、循环结构程序设计 当型循环和直到型循环,当型循环(while),while 布尔表达式 do begin语句1;语句2;end;,格式:,循环体,当布尔表达式为真执行循环体,为假则退出循环体。,例: while a4 dobegina:=a+1;end;,注意:布尔表达式中的变量在循 环体中一定要有所改变,要不然循环就要进入死循环中。,当型循环(while),例1:求s=2+6+10+14+18+94+98的值,program li1; vars,x:integer; begin x:=2;s:=0;while x=98 dobegins:=s+x;x:=x+4;end; writeln(s=
2、,s); readln; end.,实例1:输出1到100之间的奇数。,实例2:输入若干个字符,它的终止符号是#,计算输入的字符中字母a及其大写字母的出现次数。,练习一:看程序,写结果,program lianxi1; vara,b,c:integer; begin a:=8; b:=3; c:=2; while a-b2 dobegina:=a-b;end; write(a=,a); readln; end.,例3:看程序,写结果,program li2; vari,k:integer; begini:=10;k:=0;while (i=10) and (i=30) dobegink:=k+
3、i;i:=i+2;end; writeln(k=,k); readln; end.,实例4:求输入一个整数的各位数字之和。,实例5:求两个自然数m,n的最小公倍数。,varx,t,s:integer; beginreadln(x); s:=0; while x0 dobegint:=x mod 10; s:=s+t;x:=x div 10;end;writeln(s); end.,var m,n,i,s:longint; beginwriteln( input two number:);readln(m,n); i:=1; s:=m*i;while s mod n0 dobegini:=i+1
4、;s:=m*i;end;writeln(m and n zui xiao gong bei shu shi:,s); end.,直到型循环(repeat),格式:,repeat 语句1; 语句2; 语句n; until 布尔表达式;,当布尔表达式是假,执行循环体,直到布尔表达式 是真时,退出循环。,循环体,例: vara,b:integer; begin a:=0;b:=0; repeata:=a+3;b:=b+2; until a+b20;writeln(a,b);readln; end.,直到型循环(repeat),看程序,写结果,program lianxi2; var n,k:inte
5、ger; beginread(n);k:=n;repeatk:=k-1;until n mod k=0;write(k);readln; end.,从n个数中挑选出最大的数(用repeat until 循环来做),varn,x,m,y:integer; beginwriteln(input total number n:);readln(n);readln(x);m:=1;repeatreadln(y);if yx thenx:=y;m:=m+1;until m=n;writeln(n,ge shu zhong zui da shu shi:,x); end.,求300以内能被17整除的最大的
6、数。,找到满足条件的最大数,结束循环,vari:integer; beginfor i:=300 downto 1 dobeginif (i mod 17) thenbeginwriteln(i);break;end;end; end.,实例练习:输入若干个字符,它的终止符号是#,计算输入的字符中字母a及其大写字母的出现次数。(用repeat until 语句实现),编写程序提示用户输入一系列整数,用0作结束标志,统计其中有多少个正数。 program e; varcount,x:integer; beginwriteln(input integer number(0-end):); coun
7、t:=0;repeatread(x);if x0 then inc(count);until(x=0);writeln(count=,count); end.,转向语句(goto),Goto语句使用的标号必须在程序说明部分的最前面进行说明。,说明的格式:label 标号1,标号2,; 转向的格式:goto 标号,转向语句(goto),练习2: program lx3;label 1; var i,t:integer; begini:=1;1:if i=10 thenbegint:=t+I;i:=i+1;goto 1end;write(t=,t);readln; end.,编写程序:输入n个整数,计算它们之和。,program lx3;var i,n,x,s:integer; beginreadln(n);s:=0;for i:=1 to n dobeginread(x);s:=s+x;end; writeln(s); readln; end.,4、求e11/2!1/3!1/n! 直到最后一项的值小于0.000001,program exe_4(input, output);var e,n,i:real;begine:0;i:0;n:1;repeati:i1;n:n*i;e:e1/nuntil 1/n 0.000001;writeln(e);end.,