Turbo Pascal(二) ◆循环结构程序设计
循环结构撕程序中的另一种基本结构,它在许多问题中是很有用的。生活中许多复杂的问题中,常常要做大量同类的处理。如:期末考试后要统计学生的总成绩,要用同样的方法计算每一位同学的总分。
在pascal显示循环程序设计的主要语句有for语句、while语句和repeat语句。 我们先来看下面的问题:
例:统计下面成绩表中每一位同学的总分。 学号 1001 1002 1003 1004 语文 80 85 92 87 数学 95 93 89 91 英语 97 96 98 95 总分 使用顺序结构程序如下: program cj (input,output); var
a,b,c,z:integer; begin
readln(a,b,c); z:=a+b+c;
writeln('1001',z); readln(a,b,c); z:=a+b+c;
writeln('1002',z); readln(a,b,c); z:=a+b+c;
writeln('1003',z); readln(a,b,c);
z:=a+b+c;
writeln('1004',z); end.
以上程序我们只对4位同学的成绩作了统计,有4次数据输入,4次计算总分,4次计算结果,而这4次都是重复操作。我们却使用了这么长的程序。如果有几百个同学的成绩,那就很麻烦了。怎么样才能是编程方便计算机运行也方便呢?我们就可以用循环结构程序设计,简化程序,循环结构的特点是应用循环语句来编写程序,在程序执行过程中实现一部分程序的重复运行。
◇计数循环(for)语句 ☆递增型for循环
递增型for循环语句格式:
for 控制变量:=初值 to 终值 do 循环体语句; ☆递减型for循环
递减型for循环语句格式:
for 控制变量:=初值 downto 终值 do 循环体语句;
递增for语句的功能是先把初值赋值给循环控制变量,然后将初值与循环终值进行比较,当初值小于终值是执行循环语句。然后把控制变量在原值的基础上加1,继续与终值比较,如果仍然小于终值,则再次执行循环体,否则结束循环,执行for循环语句的下一个语句。 例:for i:=5 to 10 do write(i); 输出的结果是5 6 7 8 9 10 循环语句次数的算法: 终值-初值?1
将上面计算总分的程序改进一下:
program cj (input,output);
var
i,a,b,c,z,k:integer;
begin
for i:=1 to 4 do
begin
readln(k,a,b,c); z:=a+b+c;
writeln(k,z:4);
end;
end.
例1. 读入5个数,计算它们的积和平均值。 Program p1; Var
X,acc,sum,i:integer; ave:real; begin
acc:=1;
sum:=0; for i:=1 to 5 do begin read(x); acc:=acc*x; sum:=sum+x; end;
ave:=sum/5;
writeln(acc,ave:12:2); end.
例2.找出100以内所有被2,3,5除余数均为一的数。
例3.寻找100~999之间的水仙花数,所谓水仙花数就是本
333
身是它各位数三次方的和,如153=1+5+3。
例4:编程计算从1到20每个数的平方值。 program xumin17; var m:integer; pf:longint; begin
for m:=1 to 20 do begin
pf:=m*m;
writeln(m,'*',m,'=',pf); end; readln; end.
例5,按正序和反序输出26个小写英文字母。 a b c ?? x y z z y x ?? c b a var
ch:char; begin
for ch:= ‘z’ downto ‘a’ do write(ch:2); end.
例6.计算n的阶乘n!,其中n!=1×2×3×4×??×n。 var
m:longint; n,i:integer; begin
readln(n); m:=1;
for i:=1 to n do