我必须编写原型和C ++函数的实现 接收一个字符,如果该字符是元音则返回true,否则返回false。元音 包括以下字符'a'的大写和小写。 'e','我','o'和'你'。
我写过
bool vowelOrNot(char x)
{ if(x="a" or "e" or "i" or "o" or "u")
cout<<"true"<<endl;
else
cout<<"false""<<endl;
}
我写道或因为我不知道怎么做这里的线路,我的功能是否正确?
答案 0 :(得分:3)
正如没有人建议的那样,这是一个使用switch语句的解决方案:
bool vowelOrNot(char x)
{
switch (x)
{
case 'a':
case 'A':
case 'e':
case 'E':
case 'i':
case 'I':
case 'o':
case 'O':
case 'u':
case 'U':
return true;
default:
return false;
}
}
我考虑过使用toupper
来转换输入,并且只检查大写字母的大写字母。
答案 1 :(得分:0)
您需要进行测试,例如,
int
main ( int argc, char *argv[] )
{
bool test1 = vowelOrNot ( 'a' );
std::cout << test1 << " expected to be true" << std::endl;
return test1 == true ? EXIT_SUCCESS : EXIT_FAILURE;
}
当然,测试还没有完成。但是你必须为所有可能的输入数据编写测试。
答案 2 :(得分:0)
bool vowelOrNot(char x) //x must be lowercase for the function to work as expected
{ if(x=='a' || x=='e' || x=='i' || x=='o' || x=='u' ) //== for comparing and single quotes for a char.
//|| is the logical OR
{
cout<<"true"<<endl;
return true; //return true to function caller
}
else
cout<<"false"<<endl;
return false;//return false to function caller
}
答案 3 :(得分:0)
小心使用原型这个词。 C ++函数原型是一个声明,通常出现在main()之前的文件顶部或模块的头文件中(可能是前者)。它看起来像这样:
bool vowelOrNot(char);
您拥有的是实现,但语法不正确。 &#34;或&#34;不是C ++中的关键字。使用&#34; ||&#34;。此外,&#34; ==&#34;是等于比较运算符而不是&#34; =&#34;。我建议至少查看以下文档:http://www.cplusplus.com/doc/tutorial/control/。
另外,我注意到你的函数返回一个布尔值,但是你为每个布尔值打印单词而不是返回它。如果你需要打印这些单词,应该根据函数的返回值在别处处理。
我推荐的解决方案如下:
#include <string>
#include <cctype>
using namespace std;
bool vowelOrNot(char);
const string VOWELS = "aeiou";
int main
{
//some code that uses vowelOrNot, perhaps printing true and false
}
bool vowelOrNot(char c)
{
return VOWELS.find(tolower(c)) != string::npos;
}
最后,我建议将函数重命名为is_vowel()或类似的东西,使其更清晰,更简洁。
希望这有帮助!
答案 4 :(得分:-1)
试试这个:
bool vowelOrNot(char x)
{ if(x=='a' || x=='e' || x=='i' || x=='o' || x=='u' || x=='A' || x=='E' || x=='I' || x=='O' || x=='U')
{
cout<<"true"<<endl;
return true;
}
else
{
cout<<"false"<<endl;
return false;
}
}