標籤:io os ar for sp 2014 c amp r
1021.柱狀圖
時限: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("\n"); 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;}
西工大10級保研機試 柱狀圖