#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;
string text;
int i;
char x;
int n = 0;
int main(int argc, const char * argv[])
{
cout << "Enter some text: " << endl;
getline(cin, text);
for (x = 'a'; x <= 'z'; x++)
{
for (i = 0; i<= text.length(); i++)
{
if (text[i] == x)
{
n++;
cout << x << ": " << n << endl;
}
}
}
}
所以我希望它打印出字符串中出现的每个字母的出现,但是,我得到了这个:
输入:你好
输出:
e: 1
h: 2
l: 3
l: 4
o: 5
我理解为什么每次找到一个字母时它都会计数,但是如何让它显示每个字母实际上出现的次数。例如,这就是我想说的:
e: 1
h: 1
l: 2
o: 1
答案 0 :(得分:0)
在每个循环(x)的开头,你应该将n重置为0.
此外,你应该移动声明
cout << x << ": " << n << endl;
从第二个循环开始,第一个循环结束