5.(20分) 输入n个国家的国名及获得的金牌数, 将其按字典排序并输出。已知结构体类型定义如下:
struct country
{
char name[10];
int goldMedal;
};
函数原型:void SortString(struct country c[], int n);
函数功能:将结构体数组c[]中的n个国家的信息按照国家名称的字典顺序排序
程序测试用例:
How many countries?3
Input names and goldmedals:
China 100
America 50
Japan 10
Sorted results:
America:50
China:100
Japan:10
输入格式:
“How many countries?”
“%d”
“Input names and goldmedals:\n”
“%s%d”
输出格式:
“Sorted results:\n”
“%s:%d\n”
#include<stdio.h>
#include<string.h>
#define N 20
struct country
{
char name[10];
int goldMedal;
};
void SortString(struct country c[], int n);
int main()
{
struct country c[N];
int i,
n;
printf("How many countries?");
scanf("%d",&n);
printf("Input names and goldmedals:\n");
for(i=0;i<n;i++)
{
scanf("%s%d",&c[i].name,&c[i].goldMedal);
}
SortString(c,n);
printf("Sorted results:\n");
for(i=0;i<n;i++)
{
printf("%s:%d\n",c[i].name,c[i].goldMedal);
}
return 0;
}
void SortString(struct country c[], int n)
{
int i,j;
struct country s;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(strcmp(c[i].name,c[j].name)>0)
{
s=c[i];
c[i]=c[j];
c[j]=s;
}
}
}