pascal小学菜鸟题目

来源:百度知道 编辑:UC知道 时间:2024/06/02 06:59:52
谁可以帮我看一下,怎样才不错(这是奖学金):
type jxj=record
name:string[20];
chengji:integer;
banping:integer;
ganbu:string;
xibu:string;
zuowen:integer;
end;
var a:array [1..100] of jxj;
p:array [1..100] of longint;
b,c,d,e,f,g:integer;
begin
read(b);
for c:=1 to b do
begin
read(a[c].name,a[c].chengji,a[c].banping,a[c].ganbu,a[c].xibu,a[c].zuowen);
readln;
end;
for c:=1 to b do
begin
if (a[c].chengji>80) and (a[c].zuowen>=1) then p[c]:=p[c]+8000;
if (a[c].chengji>85) and (a[c].banping>80) then p[c]:=p[c]+4000;
if a[c].chengji>90 then p[c]:=p[c]+2000;
if (a[c].chengji>85) and (a[c].xibu='Y') then p[c]:=p[c]+1000;
if (a[c].banping>80) and (a[c].ganbu='Y') then p[c]:=p[c]+800;
end;
for c:=1 to b-1 do
for d:=c+1 to

这个程序的问题是在读入上,你在读入name的时候,把这一行后面的所有数据全部读在name这个字符串中了,所以,不能这样读,计算机可不会知道name在哪该停下
你的读入还有个问题就是在读'Y'和'N'的时候,如果用char类型的话,'Y'和'N'中间的空格会被读入为字符,这个也是这道题容易出错的地方,这道题里面的内容不难,不过读入很难~~~~~~~~~~~
另外一个难点就是有判重的要求~~~~~~~~~~~~~~
我把你的读入改成这样应该能过:
for i:=1 to n do
begin
name:='';
repeat
read(ch);
if ord(ch)<>32 then name:=name+ch
else break;
until ord(ch)=32;
readln(ensc,clsc,ch,xsgb,ch,xbxs,ch,art);

看的眼花的
我奉上我的程序

program scholar;
const inf='scholar1.in';
ouf='scholar.out';
var lunwen:1..10;
name,maxname:string;
ch:char;
ganbu,xibu:char;
i,j,m,n,qimo,banji,sum:longint;
begin
assign(input,inf);
assign(output,ouf);
reset(input);
rewrite(output);
sum:=0;
m:=0;
j:=0;
readln(n);
for i:=1 to n do
begin