- 从键盘输入一行英文句子,句子中只有英文单词和空格,每个单词之间由若干个空格隔开,
英文单词由大小写字母组成,编程完成下列任务:
(1)统计并输出此句子中英文字母的个数; (10 分)
(2)统计并输出此句子中单词的个数; (10 分)
(3)查找此句子中出现次数最多的字母(不区分大小写,大小写字母是相同的)和次数。当出现最多的字符不止一个时,都能找到,并输出找到的所有字母及次数。(输出字母时大小写均可) (20 分)
例如,输入句子:This is An Pencil Case
则输出为:
字母个数:18
单词个数:5
最多的字母:i,s
出现的次数:3
解:统计个数在遍历中进行,统计单词也在遍历中进行,最后统计次数采用hash的思想进行。
#include<iostream>
#include<string>
using namespace std;
int hash[26]={
0};//hash数组统计单词出现次数
int main(){
string str;
getline(cin,str);
int letter=0,word=0,num=0;
for(int i=0;i<str.size();i++){
int k=str[i]-'a',m=str[i]-'A';
if((0<=k&&k<=26)||(0<=m&&m<=26)){
if(i==0||str[i-1]==' '){
//判断是否是单词开始
letter++;
word++;
}
else letter++;
if(0<=k&&k