一、练习题目
假设某次比赛的结果有四种可能:胜(WIN)、负(LOSE)、平局(TIE)、比赛取消(CANCEL)。编写程序顺序输出这四种结果对应的中文描述。
二、解题思路
- 使用 enum 声明枚举类型 RESULT,列出四种比赛结果。
- 利用 for 循环,循环变量从 WIN 遍历到 CANCEL。
- 每次循环将整数循环变量强制转换为 RESULT 类型。
- 使用 if-else 或 switch 语句判断当前枚举值,输出对应的中文描述。
三、代码示例
以下提供三种实现方式,逐步优化。
方式一:使用 if-else 链(与讲义示例一致)
#include <iostream>
using namespace std;
int main()
{
enum RESULT { WIN, LOSE, TIE, CANCEL };
for (int i = WIN; i <= CANCEL; i++)
{
if ((RESULT)i == WIN)
{
cout << "赢了" << endl;
}
else if ((RESULT)i == LOSE)
{
cout << "输了" << endl;
}
else if ((RESULT)i == TIE)
{
cout << "和了" << endl;
}
else
{
cout << "没有进行比赛" << endl;
}
}
return 0;
}Code language: PHP (php)
输出结果:
赢了
输了
和了
没有进行比赛
方式二:使用 switch 语句(更简洁)
#include <iostream>
using namespace std;
int main()
{
enum RESULT { WIN, LOSE, TIE, CANCEL };
for (int i = WIN; i <= CANCEL; i++)
{
switch ((RESULT)i)
{
case WIN:
cout << "赢了" << endl;
break;
case LOSE:
cout << "输了" << endl;
break;
case TIE:
cout << "和了" << endl;
break;
case CANCEL:
cout << "没有进行比赛" << endl;
break;
}
}
return 0;
}Code language: PHP (php)
方式三:直接遍历枚举变量(更规范)
#include <iostream>
using namespace std;
int main()
{
enum RESULT { WIN, LOSE, TIE, CANCEL };
for (RESULT r = WIN; r <= CANCEL; r = RESULT(r + 1))
{
switch (r)
{
case WIN:
cout << "赢了" << endl;
break;
case LOSE:
cout << "输了" << endl;
break;
case TIE:
cout << "和了" << endl;
break;
case CANCEL:
cout << "没有进行比赛" << endl;
break;
}
}
return 0;
}Code language: PHP (php)
Previous: 自定义数据类型-枚举类型enum
Next: 函数的定义和使用