C++简单的IO元音计数程序
C++ simple IO vowel count program
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));
相关文章:
- 显示错误输出的简单数组排序程序
- 简单C++"Hello World"程序的执行时间长
- 而循环:简单的除法程序输出零,不明白为什么
- 为什么一个简单的程序不能立即启动
- 使用简单两相锁定的并发程序
- [[可能]]和[[不太可能]]影响程序汇编的简单示例?
- GDB 8.1 无法在单线程简单程序中跟踪 std::string 变量的值
- 多线程 gtkmm 应用程序最简单的示例
- 我写了一个简单的矢量程序,在其中我得到了以下输出。你能帮我理解它的输出吗?
- 如何使用cmake和Visual Studio 2019编译简单的Windows应用程序?
- 试图解决这个简单的C++程序,但我被困在某个地方
- 我已经安装了用于c++编程的升华3,但在编写了一个简单的程序后,我遇到了以下错误
- 无法编译简单的C++17程序
- 如何设置一个简单的CGAL+Qt程序
- Cmake无法在qt-creater/collect2上编译简单的测试程序:错误:ld
- 令牌之前的简单程序预期标识符'('
- 使用Cmake进行简单的CUDA程序
- 我创建了一个简单的程序,但有些地方不对劲
- 编译简单的多文件类程序时出现未定义的引用错误
- 程序简单,没有调用堆栈,"inpossible"查找错误