C ++ Primer计数错误

时间:2015-02-11 19:58:49

标签: c++

我从C ++ Primer Plus书中第6章的第7次练习中遇到了一些问题。好吧,我认为我做得很好,但我的编译器却不这么认为。该程序应计算启动该单词的元音,辅音和其他字符的数量。问题在于它用元音代替辅音和辅音而不是元音。

例如:如果我输入" a e o i u "它说我输入了辅音开始的5个单词。

提前感谢您的解释。

以下是代码:

#include <iostream>
#include <cstring>

char word[20];

int others=0;
int vowels=0;
int consonants=0;

int main()
{
    std::cout<<"Enter words (q to quit):";
    std::cin>>word;

    while(strcmp(word,"q"))
    {
        word[0]=tolower(word[0]);
        if(!isalpha(word[0]))
            others++;
        else if(word[0]!='a'&&word[0]!='e'&&word[0]!='i'&&word[0]!='o'&&word[0]!='u')
            consonants++;
        else vowels++;

        std::cin>>word;
    }
    std::cout<<vowels<<" words beginning with vowels\n";
    std::cout<<consonants<<" words beginning with consonants\n";
    std::cout<<others<<" others";

    return 0;
}

1 个答案:

答案 0 :(得分:0)

这里的原因是当你输入一个电子邮件时,他们会&#39;以5个不同的单词输入std :: cin。因为,在这种情况下,cin将空格作为单词分隔符,系统将提示您在5次迭代后输入新单词。所以这是对的。如果输入e i o u q,则不会再次提示您输入任何输入,因为第6个单词是q,它应该从循环中退出。所以行为是正确的。

如果您调试程序,您可以了解其实际情况。