标签:
假定图书馆新进了m(10 ≤ m ≤ 999)本图书,它们都是由n(2 ≤ n ≤ 26)个作者独立或相互合作编著的。假设m本图书编号为整数(1到999),作者的姓名为字母(‘A‘到‘Z‘),请根据图书作者列表找出参与编著图书最多的作者和他的图书列表。
11 307 F 895 H 410 GPKCV 567 SPIM 822 YSHDLPM 834 BXPRD 872 LJU 791 BPJWIA 580 AGMVY 619 NAFL 233 PDJWXK
P 6 410 567 822 834 791 233
1 #include <stdio.h> 2 #include <string.h> 3 struct book 4 { 5 int num; 6 char writer[300]; 7 }; 8 int main() 9 { 10 int m,i,j; 11 int xiabiao;//出书最多作者下标 12 int large;//出书最多作者出的书 13 char large2;//出书最多作者名字 14 int flag[26];//统计每个作者名字出现的个数 15 struct book a[999];//结构体,存储编号,作者姓名 16 scanf("%d",&m); 17 for(i=0;i<26;i++)//初始化 18 { 19 flag[i]=0; 20 } 21 for(i=0;i<m;i++)//输入编号、作者 22 { 23 scanf("%d%s",&a[i].num,&a[i].writer); 24 } 25 for(i=0;i<m;i++)//统计每个作家名字出现次数 26 { 27 for(j=0;j<strlen(a[i].writer);j++) 28 { 29 flag[a[i].writer[j]-65]++; 30 } 31 } 32 large=flag[0]; 33 for(i=0;i<26;i++)//找出出书最多的作家 34 { 35 if(flag[i]>large)//如果发现一个比目前还要大的,更新 36 { 37 xiabiao=i; 38 large=flag[i]; 39 } 40 } 41 large2=xiabiao+65; 42 printf("%c\n%d\n",large2,large);//输出出书最多作家名字、著作篇数 43 for(i=0;i<m;i++) 44 { 45 for(j=0;j<strlen(a[i].writer);j++) 46 { 47 if(a[i].writer[j]==large2) 48 { 49 printf("%d\n",a[i].num); 50 break; 51 } 52 } 53 } 54 return 0; 55 }
标签:
原文地址:http://www.cnblogs.com/geek-007/p/4940897.html