非常简单的功能我无法执行

时间:2016-03-12 22:00:27

标签: c++ function

我是学生,我正在尝试编写一个函数,如果我输入元音则返回“true”,如果我输入辅音则返回“false”。

这就是我写的:

#include <iostream>
using namespace std;

int main()
{
    bool isVowel(char x);
}

bool isVowel(char x)
{
     cout << "Enter a letter" << endl;
     cin >> x;
     if (x == 'a', 'e', 'i', 'o', 'u')
     return true;
     else
     return false;
}

我使用g ++编译isvowel.cpp -o isvowel,显然没有错误,但后来我尝试使用./isvowel执行并且没有发生。 怎么了?

2 个答案:

答案 0 :(得分:3)

您的等同比较是否有效。正如Sam在评论中所说,你需要将x与每个值进行比较。

bool isVowel(char x)
{
     // The if is not really needed here since you can 
     // just return the result of the comparison
     if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u') {
       return true; 
     }
     else {
       return false;
     }
}

要调用此方法:

std::cout << "Input character" << std::endl;
char x;
std::cin >> x;
bool vowel = isVowel(x);
std::cout << "Is vowel: " << vowel << std::endl;

答案 1 :(得分:1)

逗号不会像您想象的那样工作(上面已经解释过了),但没有任何反应的原因是因为您没有真正调用isVowel函数。代码

bool isVowel(char x);

定义了一个隐藏您打算调用的函数的新函数。为了使其工作,您需要正确调用函数,即

isVowel('x'); // or, better, isVowel(), as I'll explain below

并将isVowel函数定义移到main之上,否则它将不会在main中可见。第三件事是,传递给函数的“char x”参数实际上没有做任何事情,因为你用cin&gt;&gt;覆盖它。 X;您可能希望使用不带参数的方法。最后,如果要查看结果,则需要将其打印到屏幕上。因此,要将它们放在一起,您的代码应如下所示:

#include <iostream>
using namespace std;

bool isVowel()
{
     cout << "Enter a letter" << endl;
     char x;
     cin >> x;
     if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u')
         return true;
     else
         return false;
}

int main()
{
    bool b = isVowel();
    cout << b << endl;
}

或者,如果您愿意,

#include <iostream>
using namespace std;

bool isVowel(char x)
{
     if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u')
         return true;
     else
         return false;
}

int main()
{
    cout << "Enter a letter" << endl;
    char x;
    cin >> x;
    bool b = isVowel(x);
    cout << b << endl;
}