2014-03-26 63 views
0

嘿家伙我一直没有找到适当的指导这个特定的元音计数程序,所以任何帮助将不胜感激。使用For循环计数元音

这是我的代码到目前为止,我不完全确定错误在哪里(可能在for循环,因为我对他们很绿)。 vowelCount变量计数不正确。

在此先感谢。

#include <iostream> 

using std::cout; 
using std::cin; 
using std::endl; 

int main() { 
    char letter(10); 
    int vowelCount(0); 
    cout << "Enter a maximum of 10 characters: "; 
    cin >> letter; 

    for (int i = 0; i <= letter; i++) { 
     if (letter == 'a' || letter == 'A' || 
      letter == 'e' || letter == 'E' || 
      letter == 'i' || letter == 'I' || 
      letter == 'o' || letter == 'O' || 
      letter == 'u' || letter == 'U') { 
      vowelCount++; 
     } 
    } 

    cout << "\nTotal number of vowels: " << vowelCount; 
    cout << endl; 
    return 0; 
} 
+0

C++标准库具有许多很好的[算法](http://en.cppreference.com/w/cpp/algorithm),例如那些确实[计数](http://en.cppreference.com/w/cpp/algorithm/count)。 –

+0

'char char(10)'是一个值为10的单个字符,你可能想'char letter [10]' –

+0

@LukeB。您演示的阵列有效,但超出了我希望此程序不幸运行的范围。下一章将介绍数组和字符串,而本练习在前一章中介绍。那么有没有其他方法可以改变数组的使用? – user3465469

回答

0

有你的代码的一些错误:

char letter(10)并不是字符数组,而是单个字符。 您的for循环转到字母值(这是10,被授予),但不会一旦将letter修复为数组。 另外,读取变量字母时,应使用operator[]来访问其元素。

下面是正确的代码:

#include <iostream> 

using std::cout; 
using std::cin; 
using std::endl; 

int main() 
{ 
    char letter; 
    int vowelCount(0); 

    cout << "Enter a maximum of 10 characters: "; 

for (int i = 0; i < 10; i++) 
{ 
    cin >> letter; 
    if (letter == 'a' || letter == 'A' || 
     letter == 'e' || letter == 'E' || 
     letter == 'i' || letter == 'I' || 
     letter == 'o' || letter == 'O' || 
     letter == 'u' || letter == 'U') 
    { 
     vowelCount++; 
    } 
} 
cout << "\nTotal number of vowels: " << vowelCount; 
cout << endl; 
return 0; 
} 
0

的问题是,你声明一个字符(和初始化10),你读入。然后,您从零循环到该字母的ASCII值。您应该读入string数组的字符。

如果你选择后者(字符数组),记住在C++中这样的字符串需要一个额外的字符(来终止字符串)。所以如果你想要一个10个字符的字符串,你必须声明该数组为11个字符大。