永发信息网

pascal求助你啊

答案:1  悬赏:20  手机版
解决时间 2021-02-23 06:38
  • 提问者网友:ミ烙印ゝ
  • 2021-02-22 17:31
pascal求助你啊
最佳答案
  • 五星知识达人网友:酒安江南
  • 2021-02-22 18:46
type stu=record
name,scho:string;
// math数学成绩
// phic物理成绩
// lang外语成绩
// total总成绩
math,phic,lang,total:longint;
end;
var
    ch:char;
    i,k,n:integer;
// a[i]第i个学生的信息
a:array[0..100] of stu;

function com(x,y:integer):boolean;
begin
if a[x].total>a[y].total then exit(true);
if a[x].total if a[x].scho exit(false);
end;

procedure qsort(l,r:integer);
var temp:stu;
i,j,m:longint;
begin
i:=l;j:=r;
m:=(l+r) div 2;
repeat
while com(i,m) do inc(i);
while com(m,j) do dec(j);
if i<=j then
begin
temp:=a[i];a[i]:=a[j];a[j]:=temp;
if m=i then m:=j
else
if m=j then m:=i;
inc(i);dec(j);
end;
until i>j;
if j>l then qsort(l,j);
if iend;

begin
readln(n);
for i:=1 to n do
begin
// 初始化name
a[i].name:='';

read(ch);
while ch<>' ' do
begin
a[i].name:=a[i].name+ch;
read(ch);
end;
// 读入成绩
read(a[i].math,a[i].phic,a[i].lang);
// 计算总成绩
with a[i] do total:=math+phic+lang;
readln(a[i].scho);
// 去掉a[i].scho多余的0
while true do
begin
k:=pos(' ',a[i].scho);
if k=0 then break;
delete(a[i].scho,k,1);
end;
end;

// 排序
qsort(1,n);

for i:=1 to n do
writeln(a[i].name,' ',a[i].total,' ',a[i].scho);

end.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯