考试排名

来源:互联网 发布:js获取图片原始尺寸 编辑:程序博客网 时间:2024/05/02 02:14
#include<stdio.h>#include<stdlib.h>#include<string.h>struct student{char name[20];int num;int time;}stu[10010];int cmp( const void *a , const void *b){student *c = (struct student*)a; student *d = (struct student*)b;if(c->num!=d->num)       return c->num>d->num;else if(c->time!=d->time)       return c->time<d->time;else       return strcmp(c->name,d->name)<0;}int main(){int n,k,temp,i,j,fashi;//人数int m;//罚分数   char grade[110];//定义一个grade数组   scanf("%d%d",&n,&m);   memset(stu,0,sizeof(stu));//将stu数组的元素全部设为0   i=0;//i用来做标记!   while(scanf("%s",&stu[i].name)!=EOF)//当输入的数组的名字不是文件终止时   {   for(j=0;j<n;j++)   {   memset(grade,0,sizeof(grade));//每一次都要把grade清为0   scanf("%s",grade);//获取grade   if(grade[0]=='-'||grade[0]=='0')   {   continue;//如果输入的是负数或者0,继续!   }   stu[i].num++;//通过的题数加一!   k=0; temp=0;   while(grade[k]!='\0'&&grade[k]!='(')//当grade数组没有借宿且没有"("存在时!   {   temp=temp*10+grade[k]-'0';   k++;//计算temp的值!计算通过时用时时间   }   fashi=0;//罚时清为零   if(grade[k]=='(')   {               k++; while(grade[k]!=')') { fashi=fashi*10+grade[k]-'0';  k++;  //计算罚时! }   }   stu[i].time+=(fashi*m+temp);//计算用时数!   }   i++;   }   qsort(stu,10010,sizeof(stu[0]),cmp);   for(j=0;j<i;j++)      {   printf("%-10s %2d %4d\n",stu[j].name,stu[j].num,stu[j].time);   }   return 0;  }

0 0
原创粉丝点击