Testen Sie das Screening erneut

//Test-Screening
//
//Kategorie
//Umfassend
//Zeitlimit
//1S
//
//Speicherlimit
//256Kb
//
//Problembeschreibung
//Nach Bekanntgabe der Ergebnisse der vorläufigen Aufnahmeprüfung für Postgraduierte werden die Ergebnisse bekannt gegeben Von m Studenten müssen sortiert werden. Wählen Sie die besten n Studenten aus, die an der Wiederholungsprüfung teilnehmen können.
//Die Sortierregel besteht darin, zuerst nach der Gesamtpunktzahl zu sortieren. Wenn die Gesamtpunktzahl gleich ist, sortieren Sie nach der Einzelpunktzahl für Englisch. Wenn die Gesamtpunktzahl und die Englischpunktzahl gleich sind, wird derjenige mit der kleineren Testnummer gewertet Erste.
// Filtern Sie nun anhand der vorläufigen Testergebnisse dieser m Schüler die n Schüler heraus, die am Wiederholungstest teilnehmen können, und geben Sie sie in der Reihenfolge von hoch nach niedrig aus.
//
//Eingabeanweisungen
//Die Eingabe besteht aus m+1 Zeilen. Die erste Zeile besteht aus zwei ganzen Zahlen m und n, die die Gesamtzahl der Personen bzw. die Anzahl der Personen darstellen, die am erneuten Test teilnehmen können. m und n sind getrennt durch Leerzeichen, 0<n<m< 200.
//Die nächsten sind m Datenzeilen. Jede Zeile enthält drei Informationen, die jeweils die Testnummer eines Schülers (eine Zeichenfolge von nicht mehr als 20), die Gesamtpunktzahl (eine Ganzzahl unter 500) und die Englisch-Einzelfachpunktzahl darstellen ( kleiner als 100). Ganzzahl), diese drei Elemente werden durch Leerzeichen getrennt.
//
//Ausgabebeschreibung
// Die Informationen der n Schüler, die am Wiederholungstest teilgenommen haben, in der Reihenfolge von hoch nach niedrig ausgeben.
//
//Eingabebeispiel
//5 3
//XD20160001 330 65
//XD20160002 330 70
//XD20160003 340 60
//XD20160004 310 80
//XD20160005 360 75
//
//Ausgabebeispiel
//XD20160005 360 75
//XD20160003 340 60
//XD20160002 330 70

#include<stdio.h>
#include<string.h>
struct test
{
    
    char hao[200][200];
 int  score[200];
 int  eng[200];
}k;
int main()
{
    
    struct test k={
    
    {
    
    '\0'},{
    
    0},{
    
    0}};
 int i,j,m,n;
  scanf("%d %d",&n,&m);
 for(i=0;i<n;i++)
  scanf("%s %d %d",&k.hao[i],&k.score[i],&k.eng[i]);
  int temp;
  char te[200];
  for(i=0;i<n-1;i++)
    for(j=0;j<n-i-1;j++)
  {
    
    if((k.score[j]<k.score[j+1])||(k.score[j]==k.score[j+1]&&(k.eng[j]<k.eng[j+1]))
  ||(k.score[j]==k.score[j+1]&&(k.eng[j]==k.eng[j+1])&&strcmp(k.hao[j],k.hao[j+1])>0))
  {
    
    temp=k.score[j];
  k.score[j]=k.score[j+1];
  k.score[j+1]=temp;
  temp=k.eng[j];
  k.eng[j]=k.eng[j+1];
  k.eng[j+1]=temp;
  strcpy(te,k.hao[j]);
  strcpy(k.hao[j],k.hao[j+1]);
  strcpy(k.hao[j+1],te);
  }
  }
  for(i=0;i<m;i++)
  {
    
    printf("%s %d %d\n",k.hao[i],k.score[i],k.eng[i]);
  }
}

おすすめ

転載: blog.csdn.net/weixin_50925658/article/details/111939964