|| 返回 || 本站首页 ||奥赛信息||计算机基础||pascal基础||数据结构||经典算法||试题汇编||校本教程||自主练习||

|| pascal基础>> 循环语句

双击自动滚屏 

   

各种循环语句的运用

〖语法分析〗

     在PASCAL语言中,有3种循环语句,所谓循环,就是不断地重复某一段程序段。这三种语句分别是FOR,REPEAT-UNTIL,WHILE。

     一,首先介绍FOR语句,FOR语句构成的循环有递增和递减循环两种形式:
     1,递增型FOR循环。 FOR 循环控制变量:=循环初值 TO 循环终值 DO 循环的语句(或语段)
     例: FOR I:=5 TO 10 DO WRITELN (I);
     输出的结果为: 5 6 7 8 9 10 即循环一共执行了6次
     如果要重复多个语句,一定要用BEGIN-END形式:
例:
       FOR I:=1 TO 10 DO
       BEGIN
          WRITELN (I);
          WRITELN (10-I);
       END;
     2,递减型FOR循环 FOR 循环控制变量:=循环初值 DOWNTO 循环终值 DO 循环语句
     递减型FOR循环与递增型FOR循环基本相同,只是循环控制变量每次递减。
     3,FOR循环的几点注意内容:
     (1)循环控制变量必须是顺序类型的变量。所谓顺序类型的变量,就是指整型,字符型,枚举型,子界型,不允许是实型。
     (2)不允许在循环体内再对循环控制变量赋值。
     例如:
     A:=10;B:=50;
     FOR K:=A TO B DO
     BEGIN
          K:=K+1;{这一句是错误的!!!!!!!!}
          WRITELN (K);
     END;
     (3)当循环初值或循环终值中包含变量时,允许在循环体内改变这些变量的值,但并不改变原定的循环次数。
     例:
    A:=1;B:=10;
     FOR I:=A TO B DO
     BEGIN
          A:=5;B:=4;
     END;
     在上面例子中,A,B的值在循环的内部发生了变化,但并不影响循环的次数,依然是10次。
     4,多重循环 循环体由PASCAL语句构成,当然也可以包含FOR语句,这就构成了循环的嵌套,形成多重循环。
     例如,以下FOR循环输出5行,每行输出10个星号(*)
     FOR i:=1 to 5 DO
     BEGIN
          FOR j:=1 TO 10 DO
             Write('*');
     END;
初学者应当特别注意,内层的循环变量不能和外层的循环变量相同。也就是说,嵌套的各层循环应当使用不同的变量作为循环变量。

     二、WHILE类型的循环
     1,WHILE循环的执行形式 WHILE 布尔表达式 DO 语句
     例如:
     k:=10;
     WHILE k>0 DO
     BEGIN
          Writeln (k);
          k:=k-1
     END;
     其中
     (1)WHIlE 和DO是PASCAL保留关键字,是WHILE循环语句的组成部分。
     (2)保留关键字DO后面的“语法”只能是一条语句,称为“循环体”;如果循环体中需要包含多个语句则应该如上例所示,采用一条复合语句。 2,WHILE循环的执行功能      当执行到WHILE语句时
     (1)求出布尔表达式的值
     (2)若布尔表达式的值为真,则执行循环体内的语句;若为“假”,执行步骤4
     (3)重复步骤1和2
     (4)循环结束,执行循环后面的语句。

    三、REPEAT-UNTIL和WHILE类型的循环
     1,REPEAT-UNTIL类型的循环的执行形式
     REPEAT
       语句1
       语句2
        ……
       语句n
     UNTIL 布尔表达式
     例如:以下循环求n=1+2+3+……+100
     n:=0;t:=i;
     REPEAT
       n:=n+t; t:=t+1;
     UNTIL t>100;
     其中
     (1)REPEAT和UNTIL是PASCAL保留关键字。
     (2)在REPEAT和UNTIL之间的语句构成循环。在它们之间可以有任意多个语句,这一点和FOR,WHILE循环不同,FOR,WHILE循环体在语法上只允许一条语句。
     2,REPEAT-UNTIL循环的执行功能
     (1)遇到REPEAT语句后,即进入循环体,顺序执行循环体内的语句。
     (2)遇到UNTIL语句后,求布尔表达式的值。若值为假,则返回步骤1;若为“真”,执行步骤3
     (3)循环结束,执行UNTIL后面的下一条语句。

FOR循环练习题

    1、计算下列式子的值:
    (1)1+2+……+100
    (2)1+3+5+……+97+99

    2、输入一个四位数,求它各位上数字的和。

     3、求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。

    4、宰相的麦子:相传古印度宰相达依尔,是国际象棋的发明者。有一次,国王因为他的贡献要奖励他,问他想要什么。达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,……,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。”国王一想,这还不容易,刚想答应,如果你这时在国王旁边站着,你会不会劝国王别答应,为什么?

    5、打印下列图案:(输入N值来控制图案的规模,下列图案均以N=3为例)

&
&
&
&
&
&

&
&
&
&
&
&
&
&
&

*
*
*
*
*
*
*
*
*

#         @     *
# #     @ @   * *
# # # @ @ @ * * *

 

WHILE循环练习题

    1、计算下列式子的值:
     (1)1+3+……+99
     (2)1+2+4+8+……+128+256

     2、输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)

3、输入一整数A,判断它是否质数。(提示:若从2到A的平方根的范围内,没有一个数能整除A,则A是质数。)

    4、求两个数的最小公倍数和最大公约数。(提示:公约数一定小于等于两数中的小数,且能整除两数中的大数。公倍数一定大于等于两数中的大数,且是大数的倍数,又能给两数中的小数整除。)

    5、编写一个译码程序,把一个英语句子译成数字代码。译码规则是以数字1代替字母A,数字2代替字母B,……,26代替字母Z,如遇空格则打印一个星号‘*’,英文句子以‘.‘结束。

     6、求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。

    7、“百钱买百鸡”是我国古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?与之相似,有"鸡兔同笼"问题。

REPEAT循环练习题

    1、输入一个正整数N,把它分解成质因子相乘的形式。
    如:36=1 X 2 X 2 X 3 X 3; 19=1 X 19
    (提示:设因子为I,从2开始到N,让N重复被I除,如果能整除,则用商取代N,I为一个因子;如果不能整除,再将I增大,继续以上操作,直到I等于N。)

 

 
 

 

 
 
 

制作与维护:重庆市忠县中学 谭海