2
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

4 回答 4

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.
于 2013-10-01T23:48:58.200 回答
0

您的程序中有几个可疑点:

  char sentence;
  cin >> sentence;

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

至于

  while ( sentence == b || B ) {

这甚至不会编译,因为 b 和 B 是未定义的。也许应该是

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

其中 cur_byte 是您的字符串中一些正确维护的迭代器

于 2013-10-01T23:48:07.947 回答
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--;
}

祝你好运 ;)

于 2013-10-01T23:48:21.410 回答
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

于 2013-10-02T00:50:14.497 回答