标准输入输出流,string 亦可使用01(C++)

从键盘输入一个不包括空格的仅由英文字母组成的字符串,长度不超过 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;
		}
	}
}

猜你喜欢

转载自blog.csdn.net/ukco_well/article/details/82218978