代码保持打印" 1"当一切都正确时

时间:2016-03-01 07:17:50

标签: c++

代码运行但除了它之外没有打​​印出元音,而是打印了" 1"。

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

int countVowels(string sentence,int numVowels)
{
for(int i =0; i<sentence.length(); i++)
{
    if((sentence[i]==('a'))||(sentence[i]==('e'))||(sentence[i]==('i'))||(sentence[i]==('o'))||(sentence[i]==('u'))||(sentence[i]==('A'))||(sentence[i]==('E'))||(sentence[i]==('I'))||(sentence[i]==('O'))||(sentence[i]==('U')))
        numVowels=numVowels+1;

}

}

int main()
{
string sentence;
int numVowels = 0;
do{
cout << "Enter a sentence or q to quit: ";
cin >> ws;
getline(cin,sentence);
}
if(sentence == 'q'|| sentence == 'Q');



cout << "There are " << countVowels << " vowels in your sentence." << endl;

return 0;

}

输出应如下所示:

输入句子或者退出:我喜欢苹果!

句子中有4个元音,11个字母。

输入句子或q退出:q

再见!

我的问题: 有人可以向我解释为什么它会继续打印&#34; 1&#34;以及我的&#34; if&#34;声明我应该分配热键&#34; q&#34;退出程序是不行的。当我运行该程序时,我在if语句中收到错误说&#34;不匹配运算符==&#34;

1 个答案:

答案 0 :(得分:3)

我通常不喜欢只提供一个完整的解决方案,但是因为你的问题表明你已经做了很多努力,所以这就是我写的方式(好吧,不太好,我简化了一点,以便更加初学者友好):

std::count_if

希望评论能说清楚。

现在你可能已经被告知你不能使用标准算法(numVowels),因为部分练习似乎就是写这个。好吧,我会把它留给你。您当前的版本接近正确,但请记住返回结果。并且您实际上不需要传递CYGWIN_NT-10.0-WOW win8-testing-vm 2.4.1(0.293/5/3) 2016-01-24 11:24 i686 计数,只需在函数内创建它,并记住返回它。