PASCAL问题,看我程序哪错了?

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:43:09
题目:http://www.vijos.cn/Problem_Show.asp?id=1001

我的程序:
var
zg,i,q,zq,f1,f2,n,lw:integer;
bg,xb,xm:char;
st,bt:string;
begin
readln(n);
zg:=0;
for i:=1 to n do
begin
q:=0; st:='';
repeat
read(xm);
st:=st+xm;
until xm=' ';
read(f1,f2);
read(bg,bg,xb,xb);
read(lw);
if (f1>80)and(lw>0) then q:=q+8000;
if (f1>85)and(f2>80) then q:=q+4000;
if f1>90 then q:=q+2000;
if (f1>85)and(xb='Y') then q:=q+1000;
if (f2>80)and(bg='Y') then q:=q+850;
zq:=zq+q;
if q>zg then begin
zg:=q;
bt:=st;
end;
end;
writeln(bt);<

‘read(bg,bg,xb,xb)’中,bg和xb各读入了两次;
‘if q>zg then begin’
这一句中,你的要求是这个学生的奖学金要大于前面所有人的奖学金+他自己的奖学金。这显然是不可能的。可以设置一个变量max。
程序清单如下:
var
zg,i,q,zq,f1,f2,n,lw,max:integer;
bg,xb,xm:char;
st,bt:string;
begin
readln(n); max:=0;
zg:=0;
for i:=1 to n do
begin
q:=0; st:='';
repeat
read(xm);
st:=st+xm;
until xm=' ';
read(f1,f2);
read(bg,xb);
read(lw);
if (f1>80)and(lw>0) then q:=q+8000;
if (f1>85)and(f2>80) then q:=q+4000;
if f1>90 then q:=q+2000;
if (f1>85)and(xb='Y') then q:=q+1000;
if (f2>80)and(bg='Y') then q:=q+850;
zq:=zq+q;
if q>max then begin
max:=q;
bt:=st;
end;
end;
writeln(bt);
writeln(max);
writeln(zq);
end.