Pascal的问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 20:00:07
看下这段程序哪里有问题,谢了
program jiangxuejin;
type
inf=record
qimo:integer;
banji:integer;
ganbu:(Y,N);
xibu:(Y,N);
lunwen:integer;
end;
stu=array [1..100] of inf;
var i:integer;
sum:array [0..100] of longint;
n:integer;
begin
read (n);
for i:=1 to n do
read (stu[n].qimo,stu[n].banji,stu[n].ganbu,stu[n].xibu,stu[n].lunwen);
sum=0;
for 1:=1 to n do
begin
if stu[n].qimo>80 and stu[n].lunwen>=1 then
sum[n] =8000;
if stu[n].qimo>85 and stu[n].banji>80 then
sum[n]:=sum[n]+4000;
if stu[n].qimo>90 then
sum[n]:=sum[n]+2000;
if stu[n].xibu=Y and stu[n].qimo>85 then
sum[n]:=sum[n]+1000;
stu[n].ganbu=Y and stu[n].banji>80 then
sum[n]:=sum[n]+850;
end;
for i:=1 to n do
wrilteln (sum[n]);
end.

这貌似是某年NOIP的题目
题目具体如何我不太记得了,但是你这句很有问题
read (stu[n].qimo,stu[n].banji,stu[n].ganbu,stu[n].xibu,stu[n].lunwen);
你这里的stu[n].ganbu和stu[n].xibu是枚举类型,不能直接通过read进行读取
两种解决方法
一种你直接把stu[n].ganbu和stu[n].xibu弄成字符型的,这样就能够read了
另一种,你先额外设置一个字符变量ch,然后read(ch),然后判断是'Y'还是'N'并且相应的给那两个东西赋值