解析: 排序题,关键技术:1.结构体变量记录数据
2.加入可引用条件,如果已被引用就销毁变量。
1 #include <stdio.h> 2 #include <string.h> 3 int main() 4 { 5 int n, i, j; 6 struct woman{ 7 char city[80]; 8 char name[80]; 9 int num; 10 }a[2000], t; 11 scanf("%d", &n); 12 for(i = 0; i < n; i++){ 13 scanf("%s ", a[i].city); 14 gets(a[i].name); 15 a[i].num = 1; 16 } 17 for(i = 0; i < n; i++){ 18 if(a[i].num == 0) /*不可引用*/ 19 continue; 20 for(j = i + 1; j < n; j++) 21 if(a[j].num && strcmp(a[i].city,a[j].city) == 0){ 22 if(strcmp(a[i].name,a[j].name) != 0) 23 a[i].num++; 24 a[j].num = 0; /*销毁数据*/ 25 } 26 } 27 for(i = 0; i < n; i++) 28 for(j = i + 1; j < n; j++) 29 if(strcmp(a[i].city,a[j].city) > 0){ 30 t = a[i]; 31 a[i] = a[j]; 32 a[j] = t; 33 } 34 for(i = 0; i < n; i++) 35 if(a[i].num) 36 printf("%s %d\n", a[i].city, a[i].num); 37 return 0; 38 } 39