【发布时间】:2014-04-18 03:12:13
【问题描述】:
#include <iostream>
using namespace std;
int main()
{
int grade;
int aCount;
int bCount;
int cCount;
int dCount;
int fCount;
cout << "Enter the letter grades." << endl
<< "Enter the EOF character to end input." << endl;
while ((grade = cin.get()) != EOF)
{
switch (grade)
{
case 'A':
case 'a':
aCount++;
break;
case 'B':
case 'b':
bCount++;
break;
case 'C':
case 'c':
cCount++;
break;
case 'D':
case 'd':
dCount++;
break;
case 'F':
case 'f':
fCount++;
break;
case '\n':
case '\t':
case ' ':
break;
default:
cout << "Incorrect letter grade entered." << "Enter a new grade." << endl;
break;
}
}
cout << "\n\nNumber of students who received each letter grade:"
<< "\nA: " << aCount
<< "\nB: " << bCount
<< "\nC: " << cCount << "\nD: " << dCount << "\nF: " << fCount << endl;
system("PAUSE");
return 0;
}
这是我的 C++ 教科书提供的准确代码。当我通过复制这些代码然后编译来练习这些 switch 语句代码时,我的 Visual Studio 2010 express keep 给我一个错误,说“aCount is being used without assignment...”这同样适用于 fCount。该程序应从键盘读取从 A 到 F 的任何字母,然后递增识别的任何字母。我认为代码中的某处应该有 cin>>grade 但我没有找到。顺便说一句,“cin.get()”可以当cin>>grade吗??
【问题讨论】:
-
只需将整数初始化为某个值;你可能想要0;在 C++11 中
int aCount{};,否则你可以只使用int aCount = 0; -
是的,问题不在于 switch 语句。这是switch语句使用的变量缺乏初始化。这就是“......使用而不被分配”的意思。