设计一个程序,计算用户输入的一段文字中每个英文字符出现的概率。并在此基础上按照概率逆序输出所有用户输入的字符及其概率。 题目要求:使用字符串保存和处理,并统一转换为大写字符处理,忽略标点符号。将用户输入大段文字读取到字符串,可以使用如下代码: char str[100]; cin.getline(str,100);
时间: 2023-06-05 09:08:46 浏览: 141
面试题目.docx
好的,我会为您设计一个程序,计算用户输入的一段文字中每个英文字符出现的概率,并按照概率逆序输出所有用户输入的字符及其概率。以下是代码实现:
```c++
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
char str[100];
int cnt[27]={0};
cin.getline(str,100);
int len=strlen(str);
for(int i=0;i<len;i++)
{
if(str[i]>='A'&&str[i]<='Z')
{
cnt[str[i]-'A'+1]++;
}
else if(str[i]>='a'&&str[i]<='z')
{
cnt[str[i]-'a'+1]++;
}
}
for(int i=1;i<=26;i++)
{
for(int j=1;j<=26-i;j++)
{
if(cnt[j]<cnt[j+1])
{
swap(cnt[j],cnt[j+1]);
swap(j,j+1);
}
}
}
for(int i=1;i<=26;i++)
{
if(cnt[i]==0)
{
break;
}
printf("%c %.2f%%\n",'A'+i-1,cnt[i]*100.0/len);
}
return 0;
}
```
使用字符串保存和处理,并将所有字符转换为大写字母,忽略标点符号。程序会先统计输入中每个英文字符出现的次数,并将结果保存在一个计数数组中,接着按照概率逆序输出所有字符及其概率。其中,“%.2f%%”表示输出概率时精确到小数点后两位,并以百分数显示。
希望这个程序能够解决您的问题,如果您有任何其他问题,欢迎随时问我。
阅读全文