c++ 统计字母个数

输入一句话,只有英文,有空格,怎样统计每个字母出现的次数?
比如:I like playing tennis
其中 i有4个,l有两个。。等等
最新回答
我污但不色

2025-06-21 11:42:15

编个程序,例如以下是查找字母i个数的程序。
char a[]="I like playing tennis."
int i=0;
int i_num=0;
while(a[i]!='\0') //当这一串数组没结束。
{
if (a[i]=='i')i_num++
//对字符串进行遍历,如果发现某个字母是i,那么i_num自加。i_num中的数就是字符串中i出现的个数。
}
cout<<"i_num="<<i_num<<endl;
如果你要输入其他的数据,可以先定义一个字符数组存放。如
char input[50];
然后在程序里用cin.getline(input,50);读入 。
其中50表示最大可能输入的字符个数,可以自己更改
头文件只要#include<iostream>就行。
枫熙槿晨

2025-06-21 09:01:06

//给出使用标准库的版本,不用标准库的话使用for循环和数组挨个字符判断

#include <iostream>
#include <map>
using namespace std;

void main()
{
map<char,int> Counter;

const char* input = "I like playing tennis";
const char* p = input;
do
{
if(Counter.find(*p) != Counter.end())
Counter[*p] = Counter[*p]+1;
else
Counter[*p] = 1;
}
while(*(++p));

Counter.erase(' ');

for (map<char,int>::iterator i = Counter.begin();i!= Counter.end(); ++i)
{
cout<<i->first<<":"<<i->second<<endl;
}

}
獨刹の創始人

2025-06-21 08:02:37

#include <iostream>
#include<map>
#include<string>
#include<cstring>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{ string s;
cin>>s;
map<char,int> a;
int i;
for(i=0;i<s.length();i++)
{
if(a.find(s[i])!=a.end()) ++a[s[i]];
else a[s[i]]=1;
}
map<char,int> ::iterator t;
for(t=a.begin();t!=a.end();t++)
{
cout<<(*t).first<<":"<<(*t).second<<endl;;
}

}
return 0;
}

我的这个代码统计字母按顺序输出的……希望有用。