目前做PAT的感触就是,考查的两点:1、阅读理解能力。2、C语言基础
这道题分为4类:
首先前提条件:德>=60 && 才>=60
1、德>=80 && 才>=80
2、德>=80 && 才<80
3、德<80 && 才<80 && 德>=才 (这里务必要清楚)
4、其他
#include<stdio.h>
#include<stdlib.h>
typedef struct {
int num;
int de;
int cai;
}Student;
int cmp(const void * a, const void *b){
Student p1 = *(Student *)a;
Student p2 = *(Student *)b;
if((p1.de+p1.cai) != (p2.de + p2.cai))
return (p1.de+p1.cai)<(p2.de+p2.cai);
else if (p1.de != p2.de)
return p1.de<p2.de;
else
return p1.num >p2.num;
}
int main(){
int N,M,H,i,j;
scanf("%d%d%d",&N,&M,&H);
Student order[4][N];
int num,de,cai;
int c[4]={0};
for(i=0;i<N;i++){
scanf("%d%d%d",&num,&de,&cai);
Student stu = {num,de,cai};
if(de>=M && cai >=M){
if(de>=H && cai >=H){
order[0][c[0]++] = stu;
}else if(de>=H && cai<H)
order[1][c[1]++] = stu;
else if(de<H && cai <H && de>=cai)
order[2][c[2]++] = stu;
else
order[3][c[3]++] = stu;
}
}
printf("%d\n", c[0] + c[1] + c[2] + c[3]);
for(i=0;i<4;i++){
qsort(order[i],c[i],sizeof(order[i][0]),cmp);
for(j=0;j<c[i];j++)
printf("%d %d %d\n",order[i][j].num,order[i][j].de,order[i][j].cai);
}
return 0;
}