If statement Pascal else if语句

If statement Pascal else if语句,if-statement,pascal,freepascal,pascalscript,If Statement,Pascal,Freepascal,Pascalscript,下面是我的代码和错误信息,我一直在考虑如何更正它,但仍然不能,有人可以帮助我,谢谢 我试图制作一个程序,可以制作一个有数字的正方形 像这样 input:3 output: 1 2 3 8 4 7 6 5 input:4 output:1 2 3 4 12 5 11 6 10 9 8 7 input:1 output:1 变量i、n、e1、e2、n2:长期; 开始 readln(n); n2:=n;

下面是我的代码和错误信息,我一直在考虑如何更正它,但仍然不能,有人可以帮助我,谢谢 我试图制作一个程序,可以制作一个有数字的正方形 像这样

input:3
output: 1 2 3
        8   4
        7 6 5

input:4
output:1 2 3 4
       12    5
       11    6
       10 9 8 7

input:1
output:1

变量i、n、e1、e2、n2:长期;
开始
readln(n);
n2:=n;
如果是n21那么;
开始
对于i:=1到n do
开始
写作(i:4);
终止
e1:=(n*n-(n-2)*(n-2));
e2:=n+1;
如果n>2则;
开始
对于i:=1到n-2 do
开始
writeln();
写(e1:4,e2:(n-1)*4);
e1:=e1-1;
e2:=e2+1;
终止
终止
writeln();
开始
对于i:=1到n2 do
开始
如果n2>2,则;
开始
写(e1:4);
e1:=e1-1;
终止
终止
终止
终止
否则,如果n2=1,则;
写('1');
终止
适用于x86_64的免费Pascal编译器版本2.6.2-8[2014/01/22]
Florian Klaempfl等人1993-2012年版权所有
目标操作系统:Linux for x86-64
编译main.pas
main.pas(35,4)致命:语法错误,应为“;”,但找到“ELSE”
致命:编译中止
错误:/usr/bin/ppcx64返回错误exitcode(如果未指定要编译的源文件,则为正常)`

您使用的;以错误的方式。它用于分离由begin。。。终止例如,您编写begins1;s2;s3结束。想象一下括号的开始和结束,它们通过组合许多语句构成一个语句。If、for、while和repeat只能接受一个语句,所以如果需要放入更多语句,请将它们括在begin-end中,并用分隔符分隔


例如:如果x,你可以看看这个程序,它执行你想做的事情,并从中学习如何使用pascal将问题分解成更小的问题,然后逐个排序:

program box;
var n,len, t,i : integer;

  procedure firstrow;
  var i : integer;
  begin
    for i := 1 to n do write (i:len);
    writeln
  end;

  procedure midrow (r:integer);
  var i : integer;
  begin
    write (4*(n-1)+2-r:len);
    for i := 1 to n-2 do write (' ':len);
    writeln (n+r-1:len)
  end;

  procedure lastrow;
  var x, i : integer;
  begin
    x := 3 * (n-1) + 1;
    for i := x downto x-n+1 do write (i:len);
    writeln
  end;

begin
  write ('input: '); readln (n);

  { calculate number of digits in bigest nuber printed }
  t   := (n-1)*4;
  len := 1;
  while t>9 do
  begin
    len := len+1;
    t   := t div 10
  end;
  len := len+1; { plus one for space }

  writeln ('output:');
  for i := 1 to n do
    if i = 1
    then firstrow
    else if i = n
         then lastrow
         else midrow (i)

end.

您还可以看到如何使用局部变量(i作为全局变量,i作为过程中的局部变量)。因此,当您编写过程时,您可以为局部变量使用任何名称,只要它不隐藏您希望在过程内部访问的全局变量(来自全局范围的n)。将全局变量作为参数传递给过程也是一种很好的做法,因为这样就可以为局部变量使用任何名称。如果您这样编写它们,您可以将以前编写的过程和函数复制并粘贴到需要它们的任何程序中。

then后面的分号不正确。正确的语法是

if condition then statement;
if condition then statement else statement

对于两个if语句。在我的示例中,一个是if,另一个是if-else。请注意,分号分隔了这两条语句。如果分支中有多条语句,则可以使用begin end块对语句进行分组。用分号分隔语句。

所有的
然后
应该是
然后
。进行更改,然后继续调试。您认为在紧接在
开始之前
是否开始?另请参见我的
program box;
var n,len, t,i : integer;

  procedure firstrow;
  var i : integer;
  begin
    for i := 1 to n do write (i:len);
    writeln
  end;

  procedure midrow (r:integer);
  var i : integer;
  begin
    write (4*(n-1)+2-r:len);
    for i := 1 to n-2 do write (' ':len);
    writeln (n+r-1:len)
  end;

  procedure lastrow;
  var x, i : integer;
  begin
    x := 3 * (n-1) + 1;
    for i := x downto x-n+1 do write (i:len);
    writeln
  end;

begin
  write ('input: '); readln (n);

  { calculate number of digits in bigest nuber printed }
  t   := (n-1)*4;
  len := 1;
  while t>9 do
  begin
    len := len+1;
    t   := t div 10
  end;
  len := len+1; { plus one for space }

  writeln ('output:');
  for i := 1 to n do
    if i = 1
    then firstrow
    else if i = n
         then lastrow
         else midrow (i)

end.
if condition then statement;
if condition then statement else statement