【发布时间】:2011-11-27 03:37:44
【问题描述】:
考虑:
#include <iostream>
using namespace std;
int main()
{
int score;
char grade;
cout << "Enter your score: " << endl;
cin >> score;
if (score >= 90)
grade = 'a';
if (score >= 80)
grade = 'b';
if (score >= 70)
grade = 'c';
if (score >= 60)
grade = 'd';
else
grade = 'f';
cout << grade << endl;
switch (grade) {
case 'a':
cout << "Good job" << endl;
break;
case 'c':
cout << "Fair job" << endl;
break;
case 'f':
cout << "Failure" << endl;
break;
default:
cout << "invalid" << endl;
}
cin.get();
return 0;
}
为什么当我输入 95 时它会给出我的默认 switch case,而我应该得到 case 'a'?
【问题讨论】:
-
为什么要将数字转换为字母,然后将字母转换为更长的文字描述?跳过
switch并在你的第一个if中打印(当然是在你修复它之后)。过度复杂化是我们最大的诅咒,与它作斗争! -
因为
case 'd':丢失了您是否注意到正在输出哪个等级? -
你在切换开始之前检查过成绩的输出是否返回a
-
@Blindy 可能是因为这是一个家庭作业,说明了嵌套 if-else-if 和 switch 案例之间的差异。
标签: c++ switch-statement conditional-statements