您的位置:首页 > 其它

1015. 德才论 (25)

2016-02-10 21:34 253 查看
题目: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);

//按照1,2,3,4四挡依次输出
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跑出来有几个段错误,暂时查不出问题,过段时间再做做看
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: