程序题目描述:
输入一段文字(以回车结束),统计其中每个字母出现的频率。
【输入格式】
一段文字(以回车结束)
【输出格式】
统计结果(包括次数和百分比,并显示条状图,参见输出样例)
【输入样例】
This is a pen. That is a pencil.
【输出样例】
A: 3 13.0% *************
C: 1 4.3% ****
E: 2 8.7% *********
H: 2 8.7% *********
I: 4 17.4% *****************
L: 1 4.3% ****
N: 2 8.7% *********
P: 2 8.7% *********
S: 3 13.0% *************
T: 3 13.0% *************
总体设计思想:依题意观察,百分比=单个字母数/总字母数,在百分比显示中先将数据四舍五入,再显示条状图,1%对应一个”*”.要求输出次序与字母字典顺序相同,不出现则不输出.鉴于每一项数据重复度高,不妨设置结构体来实现.
代码:
#includeint main(){//依题意观察,百分比=单个字母数/总字母数,在百分比显示中先将数据四舍五入,再显示条状图,1%对应一个"*".//要求输出次序与字母字典顺序相同,不出现则不输出.//鉴于每一项数据重复度高,不妨设置结构体来实现.struct alpha{char name;//字母名称int num;//字母计数double rate;//字母比例int star;//星星数}a[26];//26个字母单元inti;for(i=0;i='A'&&ch='a'&&ch<='z'){sum++;//总数++x=ch-'a';//小写字母序号a[x].num++;//字母出现频数}}for(i=0;iint(a[i].rate))y=int(a[i].rate+0.5);//四舍五入elsey=int(a[i].rate);//化整后的星星数给za[i].star=y;//星星数}//输出部分for(i=0;i0;j--)//补充输出星星printf("*");printf("\n");}}return 0;}
运行结果: