计算文本输入中特定字符的频率

时间:2013-10-01 23:41:41

标签: c++

int main()
{
  char sentence;
  int count;

  cout << "Enter sentence: ";
  cin >> sentence;

  count = 0;
  while ( sentence == 'b' || 'B' ) {
    count++;
  }

  cout << "Number of b's: " << count * 1 << endl;

  return 0;
}

计数也必须在所有标点符号处停止。我似乎无法让它给我正确的计数。

4 个答案:

答案 0 :(得分:2)

这是你的while循环。变量sentence在循环内部不会更改,因此循环可以永久执行。

您可能希望将std::string用于句子,将char用于句子中的字符。

编辑1:示例

char letter;
cout << "Enter a sentence:\n";
while (cin >> letter)
{
  // Check for sentence termination characters.
  if ((letter == '\n') || (letter == '\r') || (letter == '.'))
  {
    break; // terminate the input loop.
  }
  // Put your letter processing code here.
} // End of while loop.

答案 1 :(得分:0)

您的计划中有几个可疑点:

  char sentence;
  cin >> sentence;

这看起来只会读一个字符。您可能想要getline()并将用户输入保存在std :: string

至于

  while ( sentence == b || B ) {

由于b和B未定义,因此甚至无法编译。也许它应该是

  if ( cur_byte == ‘b' || cur_byte == ‘B’ )
     count++

其中cur_byte是在字符串

中正确维护的迭代器

答案 2 :(得分:0)

#include <string>

使用字符串。 string sentence;并创建一个长期:

for(int i=0; i<sentence.length(); i++)
if(sentence[i] == b || B) count ++;

如此简单;)祝你好运;)

编辑1:
如果您只使用while

int count = sentence.length();
int count2 = 0;
while(count != 0)
{
if(sentence[count] == b||B) count2++
count--;
}
祝你好运;)

答案 3 :(得分:0)

#include <iostream>
using namespace std;
int main()
{
    char c;
    int n = 0;
    cout << "Enter sentence: ";
    while (cin >> c && !ispunct(c)) if (tolower(c) == 'b') n++;
    cout << "Number of b's: " << n << endl;
    return 0;
}

示例:

  

输入句子:两个B或不两个b,即问题Bb。

     

b的数量:2