在实际应用中,会经常遇到许多有规律性的重复运算,这就需要掌握本章所介绍的循环结构程序设计。在Pascal语言中,循环结构程序通常由三种的循环语句来实现,它们分别为FOR循环、当循环和直到循环;通常将一组重复执行的语句称为循环体,而控制重复执行或终止执行由重复终止条件决定;因此,重复语句是由循环体及重复终止条件两部分组成。
一、for语句的一般格式 for <控制变量>:=<表达式1> to <表达式2> do <语句>;
for <控制变量>:=<表达式1> downto <表达式2> do <语句>;
其中for、to、downto和do是Pascal保留字;表达式1 与 表达式2的值也称为初值和终值。
二、For语句执行过程 ①先将初值赋给左边的变量(称为循环控制变量);
②判断循环控制变量的值是否已“超过”终值,如已超过,则跳到步骤⑥;
③如果未超过终值,则执行do后面的那个语句(称为循环体);
④循环变量递增(对to)或递减(对downt o)1;
⑤返回步骤②;
⑥循环结束,执行for循环下面的一个语句。
三、说明 ①循环控制变量必须是顺序类型。例如,可以是整型、字符型等,但不能为实型。
②循环控制变量的值递增或递减的规律是:选用to则为递增;选用downto则递减。
③所谓循环控制变量的值"超过"终值,对递增型循环,"超过"指大于,对递减型循环,"超 过"指小于。
④循环体可以是一个基本语句,也可以是一个复合语句。
⑤循环控制变量的初值和终值一经确定,循环次数就确定了。但是在循环体内对循环变量的值进行修改,常常会使得循环提前结束或进入死环。建议不要在循环体中随意修改控制变量的值。
⑥for语句中的初值、终值都可以是顺序类型的常量、变量、表达式。
四、应用举例 例1.输出1-100之间的所有偶数。
var i:integer;
begin
for i:=1 to 100 do
if i mod 2=0 then write(i:5);
end.
例2.求N!=1*2*3*…*N ,这里N不大于10
分析:程序要先输入N,然后从1累乘到N
程序如下:
var
n,i : integer;{i为循环变量}
S : longint;{s作为累乘器}
begin
write("Enter n=");readln(n);{输入n}
s:=1;
for i:=2 to n do{从2到n累乘到s中}
s:=s*i;
writeln(n,"!=",s);{输出n!的值}
end.
练 习
1.求s=1+4+7+…+298的值。
2.输入正整数N,输出1至N之间的奇数之和(1和N也要考虑)。
3.编写一个评分程序,接受用户输入10个选手的得分(0-10分),然后去掉一个最高分和一个最低分,求出某选手的最后得分(平均分)。
4.输出如下8行8列的数字矩阵:
11 12 13 14 15 16 17 18
. .
. .
. .
81 82 83 84 85 86 87 88
5.用一张一元票换1分、2分和5分的硬币,每种至少一枚, 问有哪几种换法(各几枚)?
6.输入正整数N,显示如下N行的数字三角形:
1
1 2
1 2 3
1 2 3 4
...
1 2 3 4 ...N
7.编程输出“九九乘法表”,格式要求如下:
| |
1*1=1 |
| |
2*1=2 2*2=4 |
| |
3*1=3 3*2=6 3*3=9 |
| |
4*1=4 4*2=8 4*3=12 4*4=16 |
| |
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 |
| |
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 |
| |
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 |
| |
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 |
| |
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 |