从键盘输入一个不包括空格的仅由英文字母组成的字符串,长度不超过 200 个字符。统计 26 个英文字母的使用频率(出现的
次数),不区分大小写。最后按使用频率从大到小的顺序输出字母(小写字母)及其使用频率,没有出现的字母不输出
/*========================================================================================================
*学号:1527403059
*作业:E01
*功能:从键盘输入一个不包括空格的仅由英文字母组成的字符串,长度不超过200个字符。统计26个英文字母的使用频率
(出现的次数),不区分大小写。最后使用频率从大到小的顺序输出字母(小写字母)及其使用频率,没有出现
字母不输出。
*作者:陆胤任
*日期:2016.3.5
*=========================================================================================================*/
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int temp=0,index=0;
char ch;
char a[200];
vector<int> count(26,0); //定义26个整型元素的向量,初值为0
vector<char> num(26); //定义26个字符型元素的向量,初值随机
int i,j;
cout<<"请输入一个不包括空格的仅由英文字母组成的字符串,长度不超过200:"<<endl;
gets(a); //输入字符串
for(i=0;a[i]!='\0';i++) //统计字符出现的频率
{
if(a[i]>='A'&&a[i]<='Z')
{
count[a[i]-'A']++;
num[a[i]-'A']=a[i]+'a'-'A';
}
if(a[i]>='a'&&a[i]<='z')
{
count[a[i]-'a']++;
num[a[i]-'a']=a[i];
}
}
for(i=0;i<25;i++) //按字母出现的频率对数组进行选择排序
{
index=i;
for(j=i+1;j<26;j++)
{
if(count[index]<count[j])
{
index=j;
}
}
if(index!=i)
{
temp=count[i];
ch=num[i];
count[i]=count[index];
num[i]=num[index];
count[index]=temp;
num[index]=ch;
}
}
cout<<"字母按出现频率从大到小排序为:"<<endl;
for(i=0;i<26;i++) //按排序好的数组进行输出
{
if(count[i]!=0) //字母出现频率为0的不进行输出
{
cout<<num[i]<<"出现的频率为:"<<count[i]<<endl;
}
}
}