一开始没看懂题目,被恶心到了。。。
主要是排序。
代码如下:
#include <stdio.h>
#include <string.h>
typedef struct Man
{
char ID[20];
char num[1005];
}man;
int main()
{
man t[1000];
man temp;
int n;
scanf("%d", &n);
int i = 0;
while (n--)
{
scanf("%s %s", t[i].ID, t[i].num);
i++;
}
for (int j = 0; j < i; j++)
{
for (int k = j + 1; k < i; k++)
{
if (strlen(t[j].num) < strlen(t[k].num)) //长度不同直接换
{
temp = t[j];
t[j] = t[k];
t[k] = temp;
}
else if ((strlen(t[j].num) == strlen(t[k].num)) && (strcmp(t[j].num, t[k].num) < 0)) //长度相同strcmp比
{
temp = t[j];
t[j] = t[k];
t[k] = temp;
}
else if ((strlen(t[j].num) == strlen(t[k].num)) && (strcmp(t[j].num, t[k].num) == 0)) //长度相同 发帖数相同
{
if (strcmp(t[j].ID, t[k].ID) > 0) //比名字
{
temp = t[j];
t[j] = t[k];
t[k] = temp;
}
}
}
}
for (int j = 0; j < i; j++) //输出
{
printf("%s\n", t[j].ID);
}
return 0;
}