计数字符串中的
元音数量我写元音返回对于给定的字符串数的功能,这里是代码:计数字符串中的
int isVowel(string sequence)
{
int numberOfVowels = 0; //Initialize number of vowels to zero
string vowels = "aeiouAEIOU"; //Possible vowels, including capitals
for (int i = 0; i <= sequence.length(); i++)
{
for (int j = 0; j <= vowels.length(); j++)
{
if (sequence[i] == vowels[j])
{
numberOfVowels += 1;
}
}
}
return numberOfVowels;
}
这会返回一个是关闭的答案。例如,“一个”返回2,“AA”的输入输入返回3等
i <= sequence.length()
<=
是在任何for循环几乎从不正确的,因为C++使用基于0的索引。相反,你应该这样做
i < sequence.length()
我想这是这样的,谢谢你的输入! – Froobyflake
而且,有趣的是,问题是字符串末尾的空字节正在被比较,并且它们是相等的,所以它被计数。这不是一个明显的错误后果。 –
是的,这确实很微妙,我有时会忘记字符串在内存中被空字节终止,并且在计算string.length()时不会被包含在内。 – Froobyflake
我建议你学习一些调试技巧。您可以使用源代码级别的调试器,如gdb或IDE中内置的调试器,也可以添加cout语句来打印变量的值。 –
'isVowel()'强烈建议与''('cctype')中的函数具有相似性。这些测试一个字符。也许你的函数应该被重命名为'numVowels()'或者一些这样的名字,强调它计算字符串中的元音。 –
也许你应该在找到一场比赛时打破内在循环;你不需要测试其他角色。也许你应该在'a'之前对'e'进行优化,因为在运行文本中有更多的e比a更好,通常呢? –