急!!!用C++编写输入一个字符串,统计其中各字母出现的次数。统计时不分大小写。

用C++编写输入一个字符串,统计其中各字母出现的次数。统计时不分大小写。 输出时 显示的是 a多少次 b多少次等 拜托各位了 小弟的终身大事啊

第1个回答  2010-01-08
#include <iostream>
#include <string>
using namespace std;
int num[26];//从0到25分别对应a到z出现的次数。
int main()
{
string data;
int index=-1;
char c;
cin>>data;//输入字符串
//统计出现次数
for(int i=0;i<data.size();i++) {
if(data[i]>='a'&&data[i]<='z')
index=data[i]-'a';
else
if(data[i]>='A'&&data[i]<='Z')
index=data[i]-'A';
if(index!=-1)
num[index]++;
index=-1;
}

for(int j=0;j<26;j++)//输出
{
if(num[j]!=0)
{
c='a'+j;
cout<<c<<"出现的次数:"<<num[j]<<endl;
}
}
return 0;
}
程序如上:c++编写
主要利用一个数组
int num[26],表示26个字母出现的次数,下标对应相应字母。0-a,1-b....
然后用循环统计就可以了
string data.中存储的是要统计字符串
最后输出结果。本回答被提问者采纳
第2个回答  2010-01-08
#include<iostream>
#include<vector>

using namespace std;

int main()
{
string str;
char ch;
int num;
cin>>str;
cout<<str<<endl;
vector<char> cvec;
vector<int> ivec;
vector<char>::iterator found;
for(int i=0;i<str.length();i++)
{
num=0;
ch=str.at(i);
found=find(cvec.begin(),cvec.end(),ch);
if(found==cvec.end())
{
for(int j=0;j<str.length();j++)
{
if(ch==str.at(j))
num++;
}
cvec.push_back(ch);
ivec.push_back(num);
}
}

for(int i=0;i<cvec.size();i++)
{
cout<<cvec.at(i)<<" "<<ivec.at(i)<<endl;
}
getchar();
system("pause");
return 0;
}

没时间写注释,不难,你自己好好看看吧
第3个回答  2010-01-08
无分无答案。。。。
相似回答