计算元音和辅音

时间:2016-11-03 20:49:57

标签: c++

即使我使用系统暂停方法并且显示相同数量的元音和辅音不正确,我的程序每次输入输入时都会崩溃。发生了什么事?

int main() {
    // declare vars
    char ch;
    int vowels = 0;
    int consonants = 0;
    string word = "temp";

    // prompt user
    cout << "Please enter a word: ";
    cin >> ch;

    // loop vowels and consonants
    for (int i = 0; i < word.size(); i++) {
        ch = toupper(word[i]);
        switch (ch) {
        case 'A':
        case 'E':
        case 'I':
        case 'O':
        case 'U':
            vowels++;
            break;
        default:
            consonants++;
        }
    }

    // show num of vowels and consanants
    cout << "Number of Vowels: " << vowels << endl;
    cout << "Number of Consanants: " << consonants << endl;

    // pause and exit
    getchar();
    getchar();
    return 0;
}

4 个答案:

答案 0 :(得分:1)

通常最好输入一个完整的字符串,然后解析...但是如果由于某种原因你需要在输入字符时输出字符,你可以使用cin.get()。如果您想使用#include <cctype>,请务必toupper()

char nextChar;
nextChar = cin.get();
nextChar = toupper(nextChar);

int consonants = 0;
int vowels = 0;
int words = 0;

while (nextChar != '\n')
{
    switch (nextChar)
    {
    case 'A':
    case 'E':
    case 'I':
    case 'O':
    case 'U':
        vowels++:
        break;
    case ' ':
        words++;
        break;
    default:
        consonants++;
        break;
    }
}
cout << "There were " << consonants << " consonants and " << vowels << " vowels in " << words << " words.";

而不是以换行结尾,如果您想限制为一个单词,只需将(nextChar != '\n')替换为(nextChar != ' ')

答案 1 :(得分:0)

唯一需要改变的是:改变:

cin >> ch;

cin >> word;

你的代码也没关系。 Live example

答案 2 :(得分:-1)

代码中的一些问题:

#include <iostream>
#include <string>

using namespace std;

int main() {
    // declare vars
    char ch;
    int vowels = 0;
    int consonants = 0;
    string word = "temp";

    // prompt user
    cout << "Please enter a word: ";
    cin >> word;

    // loop vowels and consonants
    for (int i = 0; i < word.size(); i++) {
        ch = toupper(word[i]);
        switch (ch) {
        case 'A':
            vowels++;
            break;
        case 'E':
            vowels++;
            break;
        case 'I':
            vowels++;
            break;
        case 'O':
            vowels++;
            break;
        case 'U':
            vowels++;
            break;
        default:
            consonants++;
        }
    }

    // show num of vowels and consanants
    cout << "Number of Vowels: " << vowels << endl;
    cout << "Number of Consanants: " << consonants << endl;

    // pause and exit
    getchar();
    getchar();
    return 0;
}

答案 3 :(得分:-1)

好的,所以这不是一个很好的答案,但它有点太详细,不能发表评论......

我刚刚运行了你的代码,它工作正常。我添加了以下三个库

#include<string>
#include<iostream>
#include<stdio.h>

然后:

using namespace std;

然后使用g++ filename编译。

检查以确保您的库是最新的,并且您正确编译代码。

希望这有帮助。