回 帖 发 新 帖 刷新版面

主题:循环的错误?

Program Lx417;
Var
  n, i: Integer;
  Ch: Char;
Begin
  Read(ch);
  n := 0;
  While ch<>';' Do Begin
    If ch='(' Then n:=n+1;
    If ch=')' Then n:=n-1;
    If n<0 Then Writeln('Wrong');
    Read(ch);
  End;
  If n=0 Then Writeln('Right');
  If n>0 Then
    For i:=1 To n Do Write('(':5);
End.

这是一个判断括号是否配对的程序,不过如果第一次就输入一个右括号的话,那么会出现三个WRONG,请问这是怎么回事?哪里出错了?望能明示,谢谢。

回复列表 (共2个回复)

沙发

不会吧,你确定你的程序是这样写的吗?还有,你是只输入一个右括吗?不是的话应该不会出现这样的错误的呀!要是真的是这样,我也不明白.

板凳

是不是这样?

Program Lx417;
Var
  n, i: Integer;
  Ch: Char;
  q:boolean;
Begin
  Read(ch);
  n := 0;q:=true;
  While ch<>';' Do Begin
    If ch='(' Then n:=n+1;
    If ch=')' Then n:=n-1;
    If n<0 Then q:=false;
    Read(ch);
  End;
  if not(q) then writeln('Wrong') else
  If n=0 Then Writeln('Right')else
  If n>0 Then
    For i:=1 To n Do Write('(':5);
End.

我来回复

您尚未登录,请登录后再回复。点此登录或注册