例3.计算S=1+1/2+1/3+1/4+1/5+……+1/n (n=1000) program xu41; var n:integer; s:real; begin n:=1; s:=0;
while n<=1000 do begin
s:=s+1/n; n:=n+1; end;
writeln('s=',s :5:2); readln; end.
例3.百鸡问题:“百钱买百鸡”,内容是3文钱可以买一只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡,用100文钱买了一百只鸡,问有多少只公鸡、多少只母鸡,多少只小鸡? program bjwt;
var x,y,z:integer; begin
for x:=1 to 33 do for y:=1 to 50 do for z:=1 to 99 do
if 3*x+2*y+z/3=100 then writeln('gj=',x, 'mj=',y, 'xj=',z); end.
例4:计算1+2+4+8+??+128+256; program p14; var s,n:integer; begin
s:=0; n:=1;
while n<=256 do begin
s:=s+n; n:=n*2 ; end;
writeln('s=',s); end.
例5:计算两个自然数m和n的最小公倍数。 Var
m,n,s,i:integer; begin
read(m ,n ); 3 4 i:=1; s:=m*i;
while s mod n <> 0 do begin
i:=i+1; s:=m*i; end; writeln(s); end.
while语句练习
习1。求下面算式的值 S = 1+4+7+??+298 Program ex1;
Var s,n:integer; Begin
Repeat S:=0; n:=1;
While n<=298 do s:=s+n; Begin s:=s+n;
n:=n+3; n:=n+3;
until n>298; end;
writeln('s=',s); end.
习2.判断某数是否质数(质数即只能被1和本身整除的自然数)。
program ex2; var
x,i:integer; pd:boolean; begin
readln(x); pd:=true; (标记初始化)
for i:=2 to x-1 do
if x mod i =0 then pd:=false;(注意:这是一个标记) if (x>1) and (pd=true) then writeln('Yes')
else writeln('No');
end.
习3。用while语句更改水仙花数的程序(所谓水仙花数,是指一个三位数abc,如果满足a3+b3+c3=abc,则abc是水仙花数。) program ex3;
var a,b,c,s:integer; begin
s:=100;
while s<=999 do begin
a:=s div 100;
b:=s div 10 mod 10; c:=s mod 10;
if a*a*a+b*b*b+c*c*c=s then write(s:5); s:=s+1; end; writeln; end.
习4。找出1~999中能被3整除,并且至少有一位数字是5的所有整数(使用while语句)。 Program shxe5; Var n:integer; Begin n:=1;
While (n>=1) and (n<=999) do Begin
If (n mod 3=0) and ((n div 100 =5) or (n div 10 mod 10 =5) or (n mod 10 =5)) do Write(n); n:=n+1; end; end.
◆直到型循环(repeat)语句
repeat 语句用于“重复执行循环体,一直到指定的条件为真时为止”。
语法格式为:
repeat 语句1; ?? 语句n;
until 布尔表达式;
repeat重复基本上有和while重复一样的描述循环计算的能力,但有一些不同:在repeat语句的结构中,布尔表达式求值在计算操作之后,而while语句中,布尔表达式求值在计算操作之前,也就是说repeat至少执行一次循环体。while语句的成分语句只能是一个语句。因此,当重复动作包含多个语句时,要用begin和end ,使它变成一个复合语句。而repeat语句的保留字repeat和until已经起语句括号作用,可以包含多个语句而无须begin和end。repeat语句中,当布尔表达式为true时结束循环,而while语句中,是当表达式为false时才结束循环。当描述由计算操作后的情况确定重复是否继续进行的计算时,通常用repeat语句描述。 While语句和repeat语句流程图比较: