为什么当我进入退出条件时,程序会打印两倍的默认条件而不是退出 while 循环?
Why the program prints twice the default condition instead of quitting the while loop when i enter the exit condition?
我是初学者,我从一本书中复制了这段代码,但它不起作用,因为当我进入 EOF 时,程序而不是退出 while 循环打印默认消息两次。这就像一个小时,我寻找解决方案,但我尝试过的一切都不起作用,谢谢你的帮助。 该程序应该计算每种等级的数量。
#include "stdafx.h"
#include <iomanip>
#include <iostream>
#include <math.h>
#include <ctype.h>
using namespace std;
int main()
{
int grade,
aCount = 0,
bCount = 0,
cCount = 0,
dCount = 0,
fCount = 0;
cout << "Enter the letter grades (EOF to quit) ->>";
while ((grade = cin.get()) != 'EOF') {
switch (grade) {
case 'A':
++aCount;
break;
case 'B':
++bCount;
break;
case 'C':
++cCount;
break;
case 'D':
++dCount;
break;
case 'F':
++fCount;
break;
case 'n':
case 't':
case ' ':
break;
default :
cout << "Invalid letter grade entered. Enter a new grade." << endl;
break;
}
}
>cin.get()
的文档告诉我们,您正在寻找的返回条件是EOF
。
while ((grade = cin.get()) != EOF) {
就是这样 - 没有引号!它是一个扩展到整数的宏。你所做的是编写一个"多字节字符文字"'EOF'
,它具有实现定义的含义,在这里没有真正的相关性。
要么你抄错了书,要么书错了。
文档说:cin.get()
从流中提取单个字符作为无格式输入。
当您输入-1
时,它被视为 2 个单独的输入-
并且1
它们都不匹配任何情况,这就是为什么默认消息被打印两次并且永远不满足退出 while 循环的条件的原因
与文件控制台不同,它没有EOF
标志。尽管如此,您可以通过键入Ctrl+Z来模拟它
一个简单的解决方法是更改条件,例如输入"X"退出循环while ((grade = cin.get()) != 'X')
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 在没有太多条件句的情况下,我如何避免被零除
- 虽然循环即使应用了错误条件也不会退出
- Craps游戏在循环不满足退出条件时执行
- 为什么当我进入退出条件时,程序会打印两倍的默认条件而不是退出 while 循环?
- C++ while 循环在满足条件后不会退出
- C++线程退出循环条件
- while 循环在传递错误条件时无法退出
- 虽然具有多个 OR 条件的循环不退出循环
- 如何在条件表达式中使用 'cin' 正确退出 while 循环?(C++,CLion)
- 满足动态条件时退出递归函数
- 即使满足条件,C++do-while 循环也不会退出
- C++ while 循环不会在错误条件下退出
- 满足退出条件时程序未退出
- 在条件为false之前循环时退出
- 即使满足并输入了退出条件,错误消息仍在打印
- C++:for 循环中的多个退出条件(多个变量):AND -ed 或 OR -ed
- 如果满足条件,如何退出Qt脚本
- 使用布尔条件c++循环时无法退出
- For循环退出条件(size_t vs. int)