1021.柱状图
时限:1000ms 内存限制:10000K 总时限:3000ms
描写叙述
写一个程序,读入4行大写字母(每行不超过80个字符)。打印出如Sample Output的一个垂直的柱状图显示出每一个大写字母出现的次数(仅仅显示大写字母,不显示空格、数字和标点符号等)。
时限:1000ms 内存限制:10000K 总时限:3000ms
描写叙述
写一个程序,读入4行大写字母(每行不超过80个字符)。打印出如Sample Output的一个垂直的柱状图显示出每一个大写字母出现的次数(仅仅显示大写字母,不显示空格、数字和标点符号等)。
输入
输入4行ASCII码字符,每行不超过80个字符。
输出
如图形式输出,输出中不论什么一行的行尾不能包括没用的空格,也不要在開始输出不论什么空行。
输入例子
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
提示
A出现了5次 LAZY AN EXAMPLE HISTOGRAM PROGRAM因此有5个* 同理 B出现了1次 C出现了1次 D出现了2次 E出现了8次 …… 再看 O的第一行 前面用空格补齐 后面因为没有什么了 当然输出了对应的*后直接回车即可了(任 何一行的行尾不能包括没用的空格) 最后一行 输出了A ->Z后 就结束 不用输出回车
/*********************************** author : Grant Yuan time : 201410/4 2:15 source : 西工大10级保研机试 explain : 水题,除了对格式要求非常严 ************************************/ #include <iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #include<queue> using namespace std; int n; char a[100]; int num[256]; int main() { memset(a,0,sizeof(a));int k,d; for(k=1;k<=4;k++) { memset(a,0,sizeof(a)); gets(a); int l=strlen(a); for(int i=0;i<l;i++) { if(a[i]>='A'&&a[i]<='Z') { num[a[i]]++; } } } int l1='A',l2='Z',m=0; for(k=l1;k<=l2;k++) { if(num[k]>m) m=num[k]; } while(1){ for(k=l1;k<=l2;k++) if(num[k]>=m) d=k; for(k=l1;k<=l2;k++) { if(num[k]>=m){ if(k<d) printf("* "); else printf("*"); } else {if(k<d)printf(" ");} }m--;printf(" "); if(m<=0) break;} 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; }