#include
#include
int main()
{
char s1[100][100];
int a[1000];
int b[1000];
char s2[100][100];
int n;
int i;
char temp1[100][100];
char temp2[100][100];
char temp3[100][100];
char temp4[100][100];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
scanf("%s",&s1[i]);
scanf("%d",&b[i]);
scanf("%s",&s2[i]);
}
for(i=0;i<n;i++)
{
int k=i+1;
while(k<n)
{
int j;
for(j=0;j<strlen(s1[k])||j<strlen(s1[i]);j++)
{
if((s1[i][j]-s1[k][j])>0)
{
strcpy(temp3[k],s1[i]);
strcpy(temp4[i],s1[k]);
strcpy(s1[k],temp3[k]);
strcpy(s1[i],temp4[i]);
strcpy(temp1[k],s2[i]);
strcpy(temp2[i],s2[k]);
strcpy(s2[k],temp1[k]);
strcpy(s2[i],temp2[i]);
int t=b[i];
b[i]=b[k];
b[k]=t;
break;
}
else if((s1[i][j]-s1[k][j])<0)
break;
}
k++;
}
}
int k=1;
for(i=0;i<n;i++)
{
if(s1[i][0]=='C'&&s1[i][1]=='h'&&s1[i][2]=='i'&&s1[i][3]=='n'&&s1[i][4]=='a')
continue;
printf("%d %s %d %s\n",k,s1[i],b[i],s2[i]);
k++;
}
for(i=0;i<n;i++)
{
if(s1[i][0]=='C'&&s1[i][1]=='h'&&s1[i][2]=='i'&&s1[i][3]=='n'&&s1[i][4]=='a')
{
printf("%d %s %d %s\n",k,s1[i],b[i],s2[i]);
k++;
}
}
}
return 0;
}
按照国家名字的英文字母顺序来出场。请编写一个计算机程序实现国家名字的排序(升序),中国(China)在最后一个
输入描述:
多组输入,其中每组输入的第一行表示参加国家数 n(占一行),下面 n 行是国家的报名信息(序号、国家名称、参加人数、所属大洲)
输出描述:
按国家名字的字母序输出信息(东道主国家名字最后输出)。
样例输入:
5
1 France 123 Europe
2 Russia 254 Europe
3 Japan 235 Asia
4 Germany 185 Europe
5 China 560 Asia
样例输出:
1 France 123 Europe
4 Germany 185 Europe
3 Japan 235 Asia
2 Russia 254 Europe
5 China 560 Asia
你的程序写得太乱,重新帮你写了一个
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char s1[100][100];
int a[1000];
int b[1000];
char s2[100][100];
int order[100];
int cmp(const void *a, const void *b)
{
int i = *(int *)a;
int j = *(int *)b;
if (strcmp(s1[i], "China") == 0) return 1;
if (strcmp(s1[j], "China") == 0) return -1;
return strcmp(s1[i], s1[j]);
}
int main()
{
int i, n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
scanf("%s",&s1[i]);
scanf("%d",&b[i]);
scanf("%s",&s2[i]);
order[i] = i;
}
qsort(order, n, sizeof(int), cmp);
for(i=0;i<n;i++)
{
printf("%d %s %d %s\n",a[order[i]],s1[order[i]],b[order[i]],s2[order[i]]);
}
return 0;
}