UVA 10420
这题是关于旅游点的名胜清单,输入国家名和景点,计算各个国家的景点数,保留不重复的,重复的就在原来的基础上加上一,最后输出时注意按字典序输出
#include<stdio.h> #include<string.h> struct country{ char name[100]; int sum; };//定义结构体记录国家和国家出现的次数 int main() { int n,i,j,len=0; char str[76],na[76]; struct country gj[2000],temp; while(scanf("%d",&n)!=EOF) { gets(str); for(i=0;i<2000;i++) { gj[i].sum=0; gj[i].name[0]=0; } len=0; //初始化,len记录国家个数 while(n--) { gets(str); for(i=0;str[i]!=' ';i++) na[i]=str[i]; na[i]='\0';//只留下国家的名字 for(i=0;i<len;i++) { if(strcmp(gj[i].name,na)==0) { gj[i].sum++; break; } } if(i==len) { strcpy(gj[i].name,na); gj[i].sum++; len++; }//如重复出现,则加一,若新的国家名,则建立一个,并次数加一 } for(j=1;j<len;j++) for(i=0;i<len-j;i++) if(strcmp(gj[i].name,gj[i+1].name)>0) { temp=gj[i]; gj[i]=gj[i+1]; gj[i+1]=temp; } //按alphabetical order即字母顺序排序 for(i=0;i<len;i++) printf("%s %d\n",gj[i].name,gj[i].sum); } return 0; }