• 奖学金pascal程序


    题意

    把总分排序


    分析

    先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学 排在前面


    var
    a,t,p:array[0..300]of longint;
    n,i,x,y,j:longint;
    procedure kp(l,r:longint);
    var
    i,j,mid:longint;
    begin
        if l>=r then exit;
        i:=l;j:=r;mid:=t[(l+r) div 2];
        repeat
             while t[i]>mid do inc(i);
             while t[j]<mid do dec(j);
             if (t[i]<t[j])or(t[i]=t[j])and(a[i]<a[j])or(t[i]=t[j])and(a[i]>a[j])and(p[i]>p[j]) then
             begin
                 a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];
                 t[0]:=t[i];t[i]:=t[j];t[j]:=t[0];
                 p[0]:=p[i];p[i]:=p[j];p[j]:=p[0];
                 inc(i);dec(j);
             end;
        until(i>j);
        kp(l,j);
        kp(i,r);
    end;
    begin
        readln(n);
        for i:=1 to n do
        begin
            readln(a[i],x,y);
            t[i]:=a[i]+x+y;
            p[i]:=i;
        end;
        //kp(1,n);
        for i:=1 to n-1 do
        begin
            for j:=i+1 to n do
            if (t[i]<t[j])or(t[i]=t[j])and(a[i]<a[j])or(t[i]=t[j])and(a[i]>a[j])and(p[i]>p[j]) then
             begin
                 a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];
                 t[0]:=t[i];t[i]:=t[j];t[j]:=t[0];
                 p[0]:=p[i];p[i]:=p[j];p[j]:=p[0];
             end;
        end;
        for i:=1 to 5 do
        writeln(p[i],' ',t[i]);
    end.

  • 相关阅读:
    Java应用程序的运行机制
    IO流——字符流
    IO流——字节流
    Java API --- File类
    SSM框架整合
    Mybatis核心组件
    AJAX 练习
    设计者模式
    软件七大设计原则
    并发编程
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/9500213.html
Copyright © 2020-2023  润新知