2014-10-27 84 views
-1

我必須編寫原型和實現一個C++函數, 接收一個字符,如果字符是元音則返回true,否則返回false。元音 包括以下字符'a'的大寫和小寫。 'e','i','o'和'u'。編寫一個原型函數(C++)

我已經寫

bool vowelOrNot(char x) 
{ if(x="a" or "e" or "i" or "o" or "u") 
     cout<<"true"<<endl; 

    else 
     cout<<"false""<<endl; 
} 

我寫或者因爲我不知道該怎麼做這裏的線,我是正確的我的功能?

+0

你想要一個答案,就好像這是僞代碼,或者如果這是C++? – Drax 2014-10-27 16:02:36

+1

這不是有效的C++。 '或'不是一個關鍵字(查看'||'),並且不使用'='測試相等性(查看'==')。另外,你的函數假設返回一個'bool',但你不返回任何東西。 – Sean 2014-10-27 16:03:22

+3

我會爲此使用switch語句。 – 2014-10-27 16:04:04

回答

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 
} 
+0

我知道這些或跡象,但我如何將它們寫在我的鍵盤上?任何幫助?並且應該將cout語句放在這個函數或主函數中,因爲我在這個函數中需要做的事情是返回true或flase。 – user3531022 2014-10-27 16:14:51

+0

@ user3531022,回車鍵上方的按鈕?如果它被放置在這裏或'main'中,'cout'不關心。如果在'main'中,使用'cout <<「函數返回」<< vowelOrNot(yourchar);' – 2014-10-27 16:20:12

+0

@ user3531022 shift + \對我來說 – 2014-10-27 16:29:07

-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; 
     } 
    } 
+0

回報在哪裏? – 2014-10-27 16:04:23

+0

錯過了。編輯 – 2014-10-27 16:06:31

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;  
} 

當然,測試是不完整的。但是你必須爲所有可能的輸入數據編寫測試。

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轉換輸入和只檢查的情況下首都考慮。

0

小心使用單詞原型。 C++函數原型是一種聲明,通常發生在main()之前的文件頂部或模塊的頭文件中(可能前者在您的情況下)。它看起來像這樣:

bool vowelOrNot(char); 

你有什麼是實現,但你有不正確的語法。 「或」不是C++中的關鍵字。使用「||」。另外,「==」是等於比較運算符而不是「=」。我建議至少閱讀以下文檔: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()或類似的東西更加清晰和簡潔的有關功能的目的。

希望這會有所幫助!