第1个回答 2010-05-25
#include<stdio.h>
#include<string.h>
#include<math.h>
typedef struct student
{
int score;
char name[20];
}student;
void swap(student * s1,student * s2)
{
char nametemp[20];
strcpy(nametemp,s1->name);
strcpy(s1->name,s2->name);
strcpy(s2->name,nametemp);
int temp;
temp=s1->score;
s1->score=s2->score;
s2->score=temp;
}
void sort(student stu[],int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n-1;j++)
{
if(stu[j].score<stu[j+1].score)
{
swap(&stu[j],&stu[j+1]);
}
else if(stu[j].score==stu[j+1].score)
{
if(strcmp(stu[j].name,stu[j+1].name)>0)
{
swap(&stu[j],&stu[j+1]);
}
}
}
}
void input(student * s)
{
char string[30];
gets(string);
int n,i,j;
n=strlen(string);
for(i=0;i<n;i++)
{
if(string[i]==','){s->name[i]='\0';break;}
s->name[i]=string[i];
}
s->score=0;
int temp;
j=n-(i+1)-1;
for(i++;i<n;i++,j--)
{
temp=(int)string[i]-48;
s->score= s->score+ temp *(int)pow(10.0,j);
}
}
void main()
{
int n,i;
student stu[20];
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
input(&stu[i]);
}
sort(stu,n);
for(i=0;i<n;i++)
{
printf("%s,%d\n",stu[i].name,stu[i].score);
}
}