#include <stdio.h>
#include <string.h>
#include <stdlib.h>int list[26];
int main()
{
char* str = (char*)malloc(sizeof(char)*72);
while(gets(str))
{
memset(list, 0, sizeof(list));
for(int j = 0; j < strlen(str); j++) //第一行字符串
if(str[j] >= 'A' && str[j] <= 'Z')
list[str[j]-'A']++;
for(int i = 0; i < 3; i++) //后面3行字符串
{
gets(str);
for(int j = 0; j < strlen(str); j++)
if(str[j] >= 'A' && str[j] <= 'Z')
list[str[j]-'A']++;
}
int max = 0;
for(int i = 0; i < 26; i++)
if(max < list[i])
max = list[i];
//开辟二维数组存放
char **map = (char **)malloc(sizeof(char*)*max);
for(int i = 0; i < max; i++)
map[i] = (char*)malloc(sizeof(char)*52);
for(int i = 0; i < max; i++)
for(int j = 0; j < 52; j++)
map[i][j] = ' ';
for(int i = 0; i < 51; i++)
if(i % 2 == 0)
for(int k = max-list[i/2]; k < max; k++)
map[k][i] = '*';
for(int i = 0; i < max; i++)
for(int j = 50; j >= 0; j--)
if(map[i][j] == '*')
{
map[i][j+1] = '\0'; //将每一行最后一个“*”后面的空格截断
break; //这个break不加的话就没有"*"了,都变成了'\0'
}
for(int i = 0; i < max; i++)
printf("%s\n", map[i]);
printf("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\n");
}
return 0;
}