代码运行但除了它之外没有打印出元音,而是打印了" 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;
答案 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
计数,只需在函数内创建它,并记住返回它。