九度1014 排名
2012-06-29 10:29
253 查看
/********************************* * 日期:2012-6-29 * 作者:SJF0115 * 题号: 九度1014 * 题目:排名 * 结果:AC * 题意: * 总结: **********************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct Student{ //考号 char ID[21]; //做出题目数量 int num; //做出的题目编号 int questionID[11]; //总分 int totalGrade; }Student; //排序 int cmp(const void *a,const void *b) { struct Student *c=(Student*)a; struct Student *d=(Student*)b; if(c->totalGrade!=d->totalGrade) return d->totalGrade - c->totalGrade; else return strcmp(c->ID,d->ID); } int main() { int N,M,G; int Grade[11]; //输入重定向,输入数据将从in.txt文件中读取 //freopen("C:\\Users\\SJF\\Desktop\\in.txt","r",stdin); Student student[1001]; while(scanf("%d",&N)!=EOF) { int i,j,count = 0; if(N == 0){ break; } scanf("%d %d",&M,&G); for(i = 0;i<M;i++){ scanf("%d",&Grade[i]); } for(i = 0;i<N;i++){ scanf("%s %d",&student[i].ID,&student[i].num); student[i].totalGrade = 0; for(j = 0;j<student[i].num;j++){ scanf("%d",&student[i].questionID[j]); student[i].totalGrade += Grade[student[i].questionID[j] - 1]; } //计算过线人数 if(student[i].totalGrade >= G){ count ++; } //printf("%s %d %d\n",student[i].ID,student[i].num,student[i].totalGrade); } //输出过线人数 printf("%d\n",count); //排序 qsort(student,N,sizeof(student[0]),cmp); for(i = 0;i<N;i++){ if(student[i].totalGrade >= G){ printf("%s %d\n",student[i].ID,student[i].totalGrade); } } } return 0; }
相关文章推荐
- 九度oj 题目1014:排名
- 九度1014排名(结构体)
- 九度题目1014:排名 && 2005年浙江大学计算机及软件工程研究生机试真题
- 九度考研真题 浙大 2005-2浙大1014:排名 多重排序
- 九度oj-1014-排名
- 九度OJ题目1014:排名
- 九度OJ 1014 排名
- 九度1014 排名 结构体排序
- 九度OJ题目1014:排名
- 九度题目1014:排名 (结构体多级排序)
- [JAVA][HDU 1236][九度 1014][排名]
- 九度1014 排名
- 九度 题目1014:排名
- 九度OJ 1014:排名 (排序)
- 九度oj 题目1014:排名 【ZJU2005机试题5】
- 九度OJ 1014 排名
- 九度1014:排名
- 九度oj-1014-排名
- 九度OJ 1014:排名 (排序)
- 1014.排名