04:垂直直方图
总时间限制:
1000ms
内存限制:
65536kB
描述
输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个字符出现的次数。注意:只用输出字符的出现次数,不用输出空白字符,数字或者标点符号的输出次数。
输入
输入包括4行由大写字母组成的文本,每行上字符的数目不超过80个。
输出
输出包括若干行。其中最后一行给出26个大写英文字母,这些字母之间用一个空格隔开。前面的几行包括空格和星号,每个字母出现几次,就在这个字母的上方输出一个星号。注意:输出的第一行不能是空行。
样例输入
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG. THIS IS AN EXAMPLE TO TEST FOR YOUR HISTOGRAM PROGRAM. HELLO!
样例输出
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 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
思路:1.先进行标准化输入。
2.之后设立一个数组对26个字母进行计数存储。
3.之后找到最大的那个数,也就是打印*最长的一列。
4.之后设立一个字符串数组进行存储字符,倒过来存储,如果j为奇数就存储 ' ' ,反之,判断行数大小与数组存储数字大小,如果小于,就存储 '*' ,反之就存储 ' ' 。(注意条件判断,保证格式正确)
5.最后按顺序输出。
6.单独打印最后一行26个字母。
#include<stdio.h>
#include<string.h>
int main()
{
char s[4][100];
int i,j;
for(i=0;i<4;i++){
gets(s[i]);
}
int n;
int a[26]={0};
for(i=0;i<4;i++){
n=strlen(s[i]);
for(j=0;j<n;j++){
if(s[i][j]=='A'){
a[0]++;
}
if(s[i][j]=='B'){
a[1]++;
}
if(s[i][j]=='C'){
a[2]++;
}
if(s[i][j]=='D'){
a[3]++;
}
if(s[i][j]=='E'){
a[4]++;
}
if(s[i][j]=='F'){
a[5]++;
}
if(s[i][j]=='G'){
a[6]++;
}
if(s[i][j]=='H'){
a[7]++;
}
if(s[i][j]=='I'){
a[8]++;
}
if(s[i][j]=='J'){
a[9]++;
}
if(s[i][j]=='K'){
a[10]++;
}
if(s[i][j]=='L'){
a[11]++;
}
if(s[i][j]=='M'){
a[12]++;
}
if(s[i][j]=='N'){
a[13]++;
}
if(s[i][j]=='O'){
a[14]++;
}
if(s[i][j]=='P'){
a[15]++;
}
if(s[i][j]=='Q'){
a[16]++;
}
if(s[i][j]=='R'){
a[17]++;
}
if(s[i][j]=='S'){
a[18]++;
}
if(s[i][j]=='T'){
a[19]++;
}
if(s[i][j]=='U'){
a[20]++;
}
if(s[i][j]=='V'){
a[21]++;
}
if(s[i][j]=='W'){
a[22]++;
}
if(s[i][j]=='X'){
a[23]++;
}
if(s[i][j]=='Y'){
a[24]++;
}
if(s[i][j]=='Z'){
a[25]++;
}
}
}
int max=0;
for(i=0;i<26;i++){
if(max<a[i]){
max=a[i];
}
}
char c[max][52];
for(i=max-1;i>=0;i--){
for(j=0;j<52;j++){
if(j%2!=0){
c[i][j]=' ';
}
else{
if(max-i<=a[j/2]){
c[i][j]='*';
}
else{
c[i][j]=' ';
}
}
}
}
for(i=0;i<max;i++){
for(j=0;j<52;j++){
printf("%c",c[i][j]);
}
printf("\n");
}
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");
return 0;
}