#include
#include
struct country
{
int order;
char name[20];
int number;
char continent[20];
};
int main()
{
struct country cou[100],temp;
int n,i,j;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i
scanf("%d %s %d %s",&cou[i].order,cou[i].name,&cou[i].number,cou[i].continent);
for(i=0;i
if(strcmp(cou[i].name,"China")==0)
{
temp=cou[i];
cou[i]=cou[n-1];
cou[n-1]=temp;
}
for(i=0;i
for(j=0;j
if(strcmp(cou[i].name,cou[i+1].name)>0)
{
temp=cou[i];
cou[i]=cou[i+1];
cou[i+1]=temp;
}
for(i=0;i
printf("%d %s %d %s\n",cou[i].order,cou[i].name,cou[i].number,cou[i].continent);
}
return 0;
}
根据图片里提供的样例,应该是因为程序的排序方式错了,因为样例里应该是根据国家信息结构里的number成员变量从小到大排序国家信息,然后输出的,根据这一点,修改如下:
#include<stdio.h>
#include<string.h>
struct country
{
int order;
char name[20];
int number;
char continent[20];
};
int main()
{
struct country cou[100],temp;
int n,i,j;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d %s %d %s",&cou[i].order,cou[i].name,&cou[i].number,cou[i].continent);
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(cou[i].number>cou[j].number){
temp = cou[i];
cou[i]=cou[j];
cou[j]=temp;
}
}
}
for(i=0;i<n;i++)
printf("%d %s %d %s\n",cou[i].order,cou[i].name,cou[i].number,cou[i].continent);
}
return 0;
}