练习一下-枚举

一、练习题目

假设某次比赛的结果有四种可能:胜(WIN)、负(LOSE)、平局(TIE)、比赛取消(CANCEL)。编写程序顺序输出这四种结果对应的中文描述。

二、解题思路

  1. 使用 enum 声明枚举类型 RESULT,列出四种比赛结果。
  2. 利用 for 循环,循环变量从 WIN 遍历到 CANCEL。
  3. 每次循环将整数循环变量强制转换为 RESULT 类型。
  4. 使用 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)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注