Description
给出一段英文文章,统计文章中字母出现的频率(即出现的次数)。字母不区分大小写。按照字母的字典顺序进行柱状显示。
Input
第一行为一个正整数,表示有多少组测试数据。每组数据的第一行为一个正整数m (m<100),表示每组测试数据的行数。接下来有m行。每行都是由字母、标点、空格等符号组成的字符串。每行最多1000个字符。
Output
每组数据对应一个柱状显示图输出。上方按照统计频率输出相应高度的“柱”(用星号和点表示,其中星号标识出现频率,点代表空),下方为相应的大写字母。相应参考样例输出。最上方没有多余空行。每组数据结束后有一个空行。
Sample Input
1
2
Given the coordinates of the vertices of a triangle, and a point.
You just need to judge whether the point is in the Triangle.
Sample Output
....*.....................
....*.....................
....*..............*......
....*..............*......
....*..............*......
....*..............*......
....*...*....*.....*......
....*...*....**....*......
....*...*....**....*......
*...*..**....**....*......
*...*..**....**..*.*......
*..**.***....**..***......
*..**.***....**..****.....
*.********.*.***.*****....
*.********.*.***.******.*.
给出一段英文文章,统计文章中字母出现的频率(即出现的次数)。字母不区分大小写。按照字母的字典顺序进行柱状显示。
Input
第一行为一个正整数,表示有多少组测试数据。每组数据的第一行为一个正整数m (m<100),表示每组测试数据的行数。接下来有m行。每行都是由字母、标点、空格等符号组成的字符串。每行最多1000个字符。
Output
每组数据对应一个柱状显示图输出。上方按照统计频率输出相应高度的“柱”(用星号和点表示,其中星号标识出现频率,点代表空),下方为相应的大写字母。相应参考样例输出。最上方没有多余空行。每组数据结束后有一个空行。
Sample Input
1
2
Given the coordinates of the vertices of a triangle, and a point.
You just need to judge whether the point is in the Triangle.
Sample Output
....*.....................
....*.....................
....*..............*......
....*..............*......
....*..............*......
....*..............*......
....*...*....*.....*......
....*...*....**....*......
....*...*....**....*......
*...*..**....**....*......
*...*..**....**..*.*......
*..**.***....**..***......
*..**.***....**..****.....
*.********.*.***.*****....
*.********.*.***.******.*.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
1.字符串减A或a ; 2.直接输出'*'或 '.',不必建一个二维字符数组储存。3用if(sum[j]>i)来决定输出'*'还是 '。
#include <stdio.h>
#include <string.h>
#include<ctype.h>
#define N 27
int main()
{
// freopen("input.txt","r",stdin);
char str[100][1100];
int i,j,t,m,sum[N],max;
scanf("%d",&t);
while(t--)
{
memset(sum,0,sizeof(int)*N);
scanf("%d",&m);
getchar();
for(i=0; i<m; i++)
gets(str[i]);
for(i=0; i<m; i++)
for(j=0; str[i][j]!='\0'; j++)
{
if(str[i][j]>='A'&&str[i][j]<='Z')
sum[str[i][j] - 'A'] ++;
else if(str[i][j]>='a'&&str[i][j]<='z')
sum[str[i][j] - 'a'] ++;
}
//for(i=0; i<N; i++)
// printf("%d",sum[i]);
max=sum[0];
for(i = 0; i < N; i++)
{
if(sum[i] > max)
max =sum[i];
}
for(i=max-1; i>=0; i--)
{
for(j=0; j<N-1; j++)
{
if(sum[j]>i)
{
putchar('*');
sum[j]--; //进入下一行比较
}
else
putchar('.');
}
putchar('\n');
}
for(i=0; i<N-1; i++)
printf("%c",i+'A');
printf("\n\n");
}
return 0;
}