1015. 德才论 (25)

来源:互联网 发布:网络诈骗 运营商 编辑:程序博客网 时间:2024/05/16 07:18

题目:http://www.patest.cn/contests/pat-b-practise/1015

代码:

#include <stdio.h>int main(){  int n,l,h,k,q,m;  long a[100][5],b[100][4],temp;  int i,j,total_num=0;  scanf("%d %d %d",&n,&l,&h);  //输入,并且计算类此和各个总分  for (i=0;i<n;i++)  {    for (j=0;j<3;j++)      scanf("%d",&a[i][j]);    if (a[i][1]>=l&&a[i][2]>=l)    {      if (a[i][1]>=h&&a[i][2]>=h)        a[i][3] = 1;      else if (a[i][1]>=h&&a[i][2]<h)        a[i][3] = 2;      else if(a[i][1]<h&&a[i][2]<h&&(a[i][1]>=a[i][2]))        a[i][3] = 3;      else        a[i][3] = 4;    }    else      a[i][3] = 0;    a[i][4] = a[i][1] + a[i][2];  }  //输出几个合格  for (i=0;i<n;i++)  {    if (a[i][3]!=0)      total_num++;  }  printf("%d\n",total_num);  //按照1234四挡依次输出  for (m=1;m<=4;m++)  {    j = 0;    for (i=0;i<n;i++)    {      if(a[i][3]==m)      {        b[j][0] = a[i][0];        b[j][1] = a[i][1];        b[j][2] = a[i][2];        b[j][3] = a[i][4];        j++;      }    }    for (i=0;i<j;i++)    {      for (k=i+1;k<j;k++)      {        if (b[i][3]<b[k][3])        {          for (q=0;q<4;q++)          {            temp = b[i][q];            b[i][q] = b[k][q];            b[k][q] = temp;          }        }        else if (b[i][3]==b[k][3])        {          if (b[i][1]<b[k][1])          {            for (q=0;q<4;q++)            {              temp = b[i][q];              b[i][q] = b[k][q];              b[k][q] = temp;            }          }          else if (b[i][1]==b[k][1])          {            if (b[i][0]>b[k][0])            {              for (q=0;q<4;q++)              {                temp = b[i][q];                b[i][q] = b[k][q];                b[k][q] = temp;              }            }          }        }      }    }    for (i=0;i<j;i++)      printf("%ld %d %d\n",b[i][0],b[i][1],b[i][2]);  }  return 0;}

本题还有些问题,vs上结果都对的,pat跑出来有几个段错误,暂时查不出问题,过段时间再做做看

0 0
原创粉丝点击