gpt4 book ai didi

c++ - 为什么当我进入退出条件时程序打印两次默认条件而不是退出 while 循环?

转载 作者:行者123 更新时间:2023-11-30 00:45:02 26 4
gpt4 key购买 nike

我是初学者,我从一本书上复制了这段代码,但它不起作用,因为当我输入 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)  {

就是这样——没有引号!它是一个扩展为整数的宏。您所做的是编写一个“多字节字 rune 字”'EOF',它具有实现定义的含义,与此处没有实际关联。

要么是你抄错了书,要么是书错了。

关于c++ - 为什么当我进入退出条件时程序打印两次默认条件而不是退出 while 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45011009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com