◆转向(goto)语句
goto语句是一种无条件转向语句,它可以控制直接从程序的一条语句转向另一条语句。goto语句的语法形式为: goto 标号;
其中标号必须是不超过4位整数的正整数或标识符组成,但标号必须在说明语句中先予以说明。
goto语句会使程序出现一种称为“乱面条”的结构,因此你最好还是不要去用。
计算下列函数
y??x?3x?2??x?1x?2
Program e3_1;
Label one,two; {标号说明} Var x,y:integer; Begin
Readln(x) If x<=2
Then goto two Else y:=x-1; Write(y); Goto one; Two:y:=x+3; One: End.
Program ex3_1;
Var i,j:integer; Begin
For i:=1 to 5 do begin
For j:=1 to 5 do Write('*'); Writeln; End; End. ◆多重循环
在实际应用中单重循环还不能解决问题,需要在循环语句中再引入循环语句,称为循环嵌套。根据嵌套的层数,有二重循环、三重循环等。
例1.编写能够打印如下图形的程序。
********** 5 i j 2*i ******** 4 ****** 3 **** 2 ** 1 program dcxh1;
var i,j:integer; begin
for i:=5 downto 1 do begin
write(' ':6-i); for j:=1 to 2*i do write('*'); writeln; end; end.
例2编程输出以下形状的字符组合:
*
*********
**
******* ***
***** **** *****
***
program dcxh2; * var i,j:integer;
program dcxh3;
begin var i,j:integer;
for i:=1 to 5 do
begin begin
for i:=5 downto 1 do
write(‘ ‘:6-i);
begin for j:=1 to i do
write(‘ ‘:6-i);
write('*');
for j:=1 to 2*i-1 do writeln;
write('*');
end; end. writeln;
end;
end. * program dcxh4; *** var i,j:integer;
***** begin ******* for i:=1 to 5do ********* begin
write(' ':6-i) ;
for j:=1 to 2*i-1 do write('*'); writeln; end; end.
Begin For i:=1 to 5 do Begin For j:=1 to 5 do Write(‘*’); Writeln; End; End. 例3.学校组织学生去某餐厅调查,发现一些国家保护动物上了餐桌,大家受到了深刻的环保教育和爱护动物教育,在该餐厅的工作室中发现了82条动物腿,27个羚羊和山鸡的头,算一下共有多少只羚羊和山鸡被屠杀?
假设有m只羚羊,n只山鸡,每只羚羊4条腿,每只山鸡2条腿,则有
4m+2n=82 m+n=27 可以得出m<21,n<27。 Program dcxh5;
Var m,n:integer; Begin
For m:=1 to 20 do For n:=1 to 27 do
If (m+n=27) and (4*m+2*n=82) then Writeln('lingyang',m,'shanji',n); End.
例4.输出九九乘法表。 program jjb; var
m,n:integer;
begin
for m:=1 to 9 do begin
for n:=1 to m do
write(m,'x',n,'=',m*n:2,' ');(注意:这里为什么用write) writeln; (注意:这里为什么用writeln) end; readln; end.
5、1!+2!+?+10!的值。
分析:这个问题是求1到10自然数的阶乘之和。 Program dcxh5;
var s,t: longint; i,j:integer; begin s:=0;
for i:=1 to 10 do begin t:=1;
for j:=1 to i do s:=s+t; { end;
writeln('s=',s); end.
t:=t*j; { 求N!的值t } 累加N!的值t }