我从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;
}
答案 0 :(得分:0)
这里的原因是当你输入一个电子邮件时,他们会&#39;以5个不同的单词输入std :: cin。因为,在这种情况下,cin将空格作为单词分隔符,系统将提示您在5次迭代后输入新单词。所以这是对的。如果输入e i o u q,则不会再次提示您输入任何输入,因为第6个单词是q,它应该从循环中退出。所以行为是正确的。
如果您调试程序,您可以了解其实际情况。