free pascal初学者的程序
各位电子高手,这里有一个freepascal初学者编的程序,麻烦帮忙改一下。题目要求是:有10名学生,输入他们的语文、数学、英语、姓名,算出他们的总分并按总分从小到大排列...
各位电子高手,这里有一个free pascal初学者编的程序,麻烦帮忙改一下。题目要求是:有10名学生,输入他们的语文、数学、英语、姓名,算出他们的总分并按总分从小到大排列,如果分一样就按姓名开头字母ascii码排。谢谢!
展开
1个回答
展开全部
type aa=record
ch:integer;
en:integer;
ma:integer;
al:integer;
na:string;
fi:shortint;
end;
var a,o:array[1..10]of aa;
b,c,d,e,f,g:longint;
begin
for b:=1 to 10 do
begin
read(a[b].ch,a[b].ma,a[b].en);
a[b].al:=a[b].ch+a[b].ma+a[b].en;
read(a[b].na);
c:=length(a[b].na);
a[b].fi:=ord(a[b].na[1]);
end;
for b:=1 to 9 do
for c:=1 to 10-b do
if a[c].al>a[c+1].al then begin o[1]:=a[c];a[c]:=a[c+1];a[c+1]:=o[1];end else
if (a[c].al=a[c+1].al)and(a[c].fi<a[c+1].fi) then
begin o[1]:=a[c];a[c]:=a[c+1];a[c+1]:=o[1];end;
for b:=1 to 10 do
writeln('Name:',a[b].na,' Chinese:',a[b].ch,' Maths:',a[b].ma,' English:',a[b].en,' Score:',a[b].al);
end.
ch:integer;
en:integer;
ma:integer;
al:integer;
na:string;
fi:shortint;
end;
var a,o:array[1..10]of aa;
b,c,d,e,f,g:longint;
begin
for b:=1 to 10 do
begin
read(a[b].ch,a[b].ma,a[b].en);
a[b].al:=a[b].ch+a[b].ma+a[b].en;
read(a[b].na);
c:=length(a[b].na);
a[b].fi:=ord(a[b].na[1]);
end;
for b:=1 to 9 do
for c:=1 to 10-b do
if a[c].al>a[c+1].al then begin o[1]:=a[c];a[c]:=a[c+1];a[c+1]:=o[1];end else
if (a[c].al=a[c+1].al)and(a[c].fi<a[c+1].fi) then
begin o[1]:=a[c];a[c]:=a[c+1];a[c+1]:=o[1];end;
for b:=1 to 10 do
writeln('Name:',a[b].na,' Chinese:',a[b].ch,' Maths:',a[b].ma,' English:',a[b].en,' Score:',a[b].al);
end.
追问
谢谢!
名片
2024-10-28 广告
2024-10-28 广告
Altair HyperWorks是一套功能强大的集成化CAE(计算机辅助工程)软件平台,由Altair公司开发。它涵盖了结构分析、流体动力学、优化、多体动力学、电磁场仿真等多个领域,提供了丰富的仿真工具和优化算法。HyperWorks以其...
点击进入详情页
本回答由名片提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询