一、repeat语句格式
repeat语句用于“重复执行循环体,直到指定的条件为真时为止”

repeat语句格式:
repeat
  语句1;
  语句2;
  ……
  语句n;
until 布尔表达式;

repeat重复基本上有与while重复一样的描述循环计算的能力,但有三点不同:
1、在repeat语句中,布尔表达式求值在循环体执行之后,而在while语句中,布尔表达式求值在循环体执行之前。
2、while语句的循环体部分只能是一个语句,因此当重复动作包含几个语句时,需用begin和end使它们变成一个复合语句。而repeat语句的保留字repeat和until已起到语句括号作用,可以包含多个语句而无需begin和end。
3、repeat语句中,仅当布尔表达式值为true时结束循环,而while语句是当布尔表达式值为false时才结束循环。

一般,“repeat 语句; until 布尔表达式;”能用while语句表示为:“while not (布尔表达式) do 语句;”

例1:有一大堆核桃,两个两个拿,余下一个;三个三个拿,余下两个;四个四个拿,余下三个;以此类推,直至九个九个拿,余下八个。输出这一大堆核桃最少是几个?
var
  i:integer;
begin
  i:=10;
  repeat
    i:=i+1;
  until (i mod 2=1) and (i mod 3=2) and (i mod 4=3) and (i mod 5=4) and (i mod 6=5) and (i mod 7=6) and (i mod 8=7) and (i mod 9=8);
  writeln(i);
end.

例2:利用格里高利公式:π/4=1-1/3+1/5-1/7+1/9-1/11……输出π的值,要求精确到小数点后第六位。
var
  n,s:longint;
  t,pi:real;
begin
  pi:=0;
  t:=1;
  n:=1;
  s:=1;
  repeat
    pi:=pi+t;
    n:=n+2;
    s:=-s;
    t:=s/n;
  until abs(t)<0.000001;
  pi:=pi*4;
  writeln(pi:0:6);
end.

例3:有一个自然数,它的各位数字之和能被17整除。这个数的后继数(即这个数加1)的各位数字之和也能被17整除。编程输出具有这种特性的最小的那个自然数。
var
  f:boolean;
  i,s,m,t:integer;
begin
  f:=false;
  i:=1;
  repeat
    i:=i+1;
    s:=0;
    m:=i;
    while m>0 do begin
      s:=s+m mod 10;
      m:=m div 10;
    end;
    if s mod 17=0 then begin
      s:=0;
      m:=i+1;
      while m>0 do begin
        s:=s+m mod 10;
        m:=m div 10;
      end;
      if s mod 17=0 then f:=true; 
    end;
  until f;
  writeln(i);
end.

思考:优化一下,i可以从几开始?

例4:哥德巴赫猜想指出:任何一个大偶数都可以表示成两个素数的和。例如:8=3+5,44=13+31等,请编程在6至100范围内验证哥德巴赫猜想。
var
  i,j,k,m,n:integer;
  f,b:boolean;
begin
  i:=6;
  repeat
    j:=3;
    f:=true;
    while (j<=i div 2) and f do begin
      b:=true;
      k:=i-j;
      m:=2;
      n:=trunc(sqrt(k));
      while b and (m<=n) do begin
        if (j mod m=0) or (k mod m=0) then b:=false;
        m:=m+1;
      end;
      if b then begin
        writeln(i,'=',j,'+',k);
        f:=false;
      end;
      j:=j+2;
    end;
    i:=i+2;
  until i>100;
end.

二、作业
1、zerojudge:a518
2、输出1至100之间所有的素数。
3、输出2至1000之间所有的完数,完数是指此数的所有因子之和等于此数,如:28=1+2+4+7+14。

最新文章

  1. css3动画之图片旋转
  2. java测试题总结
  3. 编译Libgdiplus遇到的问题
  4. 利用FFmpeg生成视频缩略图 2.1.6
  5. Excel 关于新建xls文件 新建sheet 合并sheet的VBA操作代码
  6. HDOJ-ACM1013(JAVA)
  7. 堆/栈的比较 以及 malloc/new动态内存的开辟
  8. JS给元素增加className
  9. Android - 缺少NDT选项和C/C++ Build选项 问题
  10. 深入理解HTTP协议—HTTP协议详解(真的很经典)
  11. 关于模拟登陆微博(PC)
  12. 新手最纠结的事。学什么语言最好?学什么语言有前途(or 钱途)?
  13. python学习之re (?P...)通过关键字获取组以及( P=name)
  14. linux定时备份mysql数据并同步到其他服务器
  15. nginx https配置记录
  16. Python virtualenvwrapper在Win下的安装和管理
  17. python 3 往Excel 中的写入内容但不覆盖原内容
  18. redis内部分享ppt
  19. MATLAB矩阵的LU分解及在解线性方程组中的应用
  20. getInitParameter方法

热门文章

  1. Java 设计模式泛谈&amp;装饰者模式和单例模式
  2. MVN使用随笔
  3. Node.js 全局对象
  4. Hadoop 2.2.0 4结点集群安装 非HA
  5. Linq一 基础知识
  6. js从后台无法取值问题
  7. RFID Hacking④:使用ProxMark3 破解门禁
  8. BFC学习笔记
  9. Libgdx 开发指南(1.2) 应用框架——模块概览
  10. BZOJ 3670 &amp;&amp; BZOJ 3620 &amp;&amp; BZOJ 3942 KMP