使用For循环计数元音

时间:2014-03-26 17:58:21

标签: visual-c++ c++11

嘿伙计们我还没能找到关于这个特定的元音计数程序的正确指导,所以任何帮助都会受到赞赏。

到目前为止,这是我的代码,我并不完全确定错误的位置(可能在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;
}

2 个答案:

答案 0 :(得分:0)

问题在于您声明了一个单个字符(并初始化为10)。然后从零循环到该字母的ASCII值。您应该读入string数组字符。

如果你选择后者(字符数组),请记住在C ++中这样的字符串需要一个额外的字符(终止字符串)。因此,如果您想要一个包含10个字符的字符串,则必须将该数组声明为11个字符。

答案 1 :(得分:0)

您的代码存在一些错误:

char letter(10)不是char数组,而是单个char。 您的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;
}