C++简单的IO元音计数程序

C++ simple IO vowel count program

本文关键字:程序 简单 IO C++      更新时间:2023-10-16
char ch;
//Get data from user 
cout << "Enter your sentence on one line followed by a # to end it: " << endl;
while (cin >> character && character != '#') 
{
    cin.get(ch); 
    ch = static_cast<char>(toupper(ch));
    outFile << ch;
    if (character == 'A' || character == 'E' || character == 'I' || character == 'O'
                || character == 'U')
    {
        vowelCount ++;
    }
}
outFile << "number of vowels: " << vowelCount << endl;

我正在尝试输入一个句子,阅读它有多少元音、空格和其他字符。但是元音计数永远不正确,我也无法让它写相同的句子来输出文件。有什么提示吗?

您尚未显示变量vowelCount的声明/初始化。 我假设您仅使用如下语句声明(而不是初始化(它:

int vowelCount; // notice the variable is not initialized.

在C++中,int变量没有默认值。 如果您编写了此类代码,则可以通过使用如下语句显式初始化其值来更正它:

int vowelCount = 0;

此外,您的循环在每次迭代时读取 2 个字符(跳过两个字符中的一个(,并且您缺少元音Y

更正后的示例如下所示:

//Get data from user 
cout << "Enter your sentence on one line followed by a # to end it: " << endl;
int vowelCount = 0;
while (cin >> character && character != '#') 
{
    character = toupper(character);
    if (character == 'A' || character == 'E' || character == 'I' || character == 'O'
                || character == 'U' || character == 'Y')
    {
        vowelCount ++;
    }
}
outFile << "number of vowels: " << vowelCount << endl;

就像 pmr 的评论所示,问题是您在每次循环迭代中读取两个字符,但只检查第一个字符。这两个语句都使用标准输入中的一个字符:

cin >> character
...
cin.get(ch)

您需要做的就是:

while (cin >> character && character != '#') 
{
    character = static_cast<char>(toupper(character));