本題地址: http://www.luogu.org/problem/show?pid=1598
題目描述
寫一個程序從輸入文件中去讀取四行大寫字母(全都是大寫的,每行不超過72個字符),然後用柱狀圖輸出每個字符在輸入文件中出現的次數。嚴格地按照輸出樣例來安排你的輸出格式。
輸入輸出格式
輸入格式:
四行字符,由大寫字母組成,每行不超過72個字符
輸出格式:
由若干行組成,前幾行由空格和星號組成,最後一行則是由空格和字母組成的。在任何一行末尾不要打印不需要的多餘空格。不要打印任何空行。
輸入輸出樣例
輸入樣例#1:
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
輸出樣例#1:
*
*
* *
* * * *
* * * *
* * * * * *
* * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
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
說明
每行輸出後面不允許出現多餘的空格。
簡單的模擬pascal很好寫,C++可能是還不熟所以總是寫錯,
P代碼如下
var
i,j,x,m:longint;
s:string;
a:array[0..27]of
longint;
function
max(a,b:longint):longint;
begin
if a>b
then exit(a)
else exit(b);
end;
begin
fillchar(a,sizeof(a),0);
m:=0;
for j:=1 to 4
do
begin
readln(s);
for i:=1
to length(s) do
if (s[i]>='A')and(s[i]<='Z')
then
begin
x:=ord(s[i]-'A')+1;
inc(a[x]);
m:=max(a[x],m);
end;
end;
for i:=1 to m
do
begin
for j:=1
to 25 do
begin
if m-a[j]
write('*')
else write('
');
write(' ');
end;
if
m-a[26]
writeln('*')
else writeln(' ');
end;
for i:=1 to 25
do
write(chr(ord('A')-1+i),' ');
writeln('Z');
end.