Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
WHY!!!! WA?????? 哪里错了????//题意:找出Li Ming的排名 注意:是总分排名,即每次都要累加分数 #include<stdio.h> #include<string.h> #include<stdlib.h> struct student { int score; char name[35]; //注意:这里的范围要比30大 因为后面还有一个\0也需要空间 }; int cmp(const void *a,const void *b) //对学生分数进行排序 { return ((*(student *)a).score-(*(student *)b).score); } int CmpName(const void *a,const void *b)//对姓名进行排序 { return strcmp((*(student *)a).name,(*(student *)b).name); } student stu1[10010],stu[10010]; //第一个是用来存放此人所有分数之和 第二个是用来存放每次录入的记录 int main() { int i=0,N,M; int M_score; int num; scanf("%d",&N); while(i<N){ getchar(); gets(stu[i].name); stu[i].score=0; i++; } qsort(stu,N,sizeof(stu[0]),CmpName);//对开始输入此班级所有人数进行排序 这样在后面容易处理数据 for(i=0;i<N;i++) stu1[i]=stu[i]; //此变量是用来存放每一个人的姓名以及此人的各科考试的分数之和 开始时必须初始化为0 scanf("%d",&M); //考试科目数 M 班级共有人数 N while(M--){ for(i=0;i<N;i++){ scanf("%d",&stu[i].score); //输入每个同学的第i门科目分数 gets(stu[i].name); } qsort(stu,N,sizeof(stu[0]),CmpName); //按学生姓名进行排序 这里是CmpName qsort(stu1,N,sizeof(stu1[0]),CmpName); for(i=0;i<N;i++){ stu1[i].score+=stu[i].score; if(strcmp("Li Ming",stu1[i].name)==0) M_score=stu1[i].score; //把Li Ming的总分单独拿出来 } qsort(stu1,N,sizeof(stu1[0]),cmp); //按学生总分进行排序 比较函数是cmp num=1; for(i=N-1;stu1[i].score>M_score;i--) if(stu1[i].score>M_score) num++; printf("%d\n",num); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator