typedef struct Big_number{
char Id[20];
short int num[100];
int len;
};
int bijiao(Big_number a,Big_number b)这块好像有些问题吧!
for(int i=0;i<a.len;i++)这块我的编译器好像不支持这种定义方式!
该学习了。。。
这是上面斑竹的程序!
#include<stdio.h>
#include<string.h>
typedef struct Big_number{
char Id[20];
short int num[100];
int len;
}xyz;/*改了一下*/
int bijiao(xyz a,xyz b)/*先比较长度,长度相同比较发帖数,发帖数相同比较id*/
{
int i;
if(a.len>b.len)
{
return 1;
}
if(a.len<b.len)
{
return -1;
}
for(i=0;i<a.len;i++)/*改了一下*/
{
if(a.num[i]>b.num[i])
{
return 1;
}
if(a.num[i]<b.num[i])
{
return -1;
}
}
return strcmp(b.Id,a.Id);
}
void sort(xyz a[],int n)/*排序*/
{
int i,j;
xyz temp;
for(i=0;i<n;i++)
{
for(j=0;j<n-1;j++)
{
if(bijiao(a[j],a[j+1])==-1)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main()/*主函数*/
{
#ifdef ONLINE_JUDGE/*这三行是什么意思?我也不知道!是条件编译吧!为什么要加上这个啊?*/
freopen("water.txt","r",stdin);/*?*/
#endif/*结束条件编译*/
xyz data[1000];/*n个人的数据*/
int n , i, j;
char id[20],number[100];/*number[100]这个是法帖数*/
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s%s",id,number);
strcpy(data[i].Id,id);
data[i].len=strlen(number);
for(j=0;j<data[i].len;j++)
{
data[i].num[j]=number[j]-'0';/*将字符转换成数字*/
}
}
sort(data,n);
for(i=0;i<n;i++)
{
printf("%s\n",data[i].Id);
}
return 0;
}