(周六赛) Vertical Histogram

题意:统计字母的个数,以“*”号输出

 1 #include<stdio.h>
 2 #include<algorithm>
 3 #include<string.h>
 4 int main()
 5 {
 6     char str[4][100];
 7     char map[100][100];
 8     int i,j;
 9     int a[100];
10     while(gets(str[0]))
11     {
12         memset(a,0,sizeof(a));
13         memset(map,' ',sizeof(map));
14         for(i=1;i<4;i++)
15         {
16             gets(str[i]);
17         }
18         for(i=0;i<4;i++)
19         {
20             int l=strlen(str[i]);
21             for(j=0;j<l;j++)
22             {
23                 if(str[i][j]>='A'&&str[i][j]<='Z')
24                 {
25                     a[str[i][j]-'A']++;
26                 }
27             }
28         }
29         int max=0;
30         for(i=0;i<26;i++)
31         {
32             if(max<a[i])
33                 max=a[i];
34         }
35         for(i=0;i<26;i++)//lie
36         {
37             for(j=0;j<max;j++)//hang
38             {
39                 if(j>=(max-a[i]))
40                     map[j][i]='*';
41             }
42             map[max][i]=i+'A';
43         }
44         for(j=0;j<=max;j++)//hang
45         {
46             for(i=25;i>=0;i--)//lie
47             {
48                 if(map[j][i]=='*')
49                 {
50                     map[j][i+1]='1';
51                     break;
52                 }
53             }
54         }
55         for(j=0;j<=max;j++)//hang
56         {
57             for(i=0;i<26;i++)//lie
58             {
59                 if(map[j][i]=='1')
60                     break;
61                 printf("%c",map[j][i]);
62                 if(i!=25&&map[j][i+1]!='1')
63                     printf(" ");
64             }
65             printf("
");
66         }
67     }
68     return 0;
69 }
原文地址:https://www.cnblogs.com/awsent/p/4282646.html