C++一段代码看懂switch...case语句

24 篇文章 0 订阅

#include<iostream>
using namespace std;

int main()
{
    int score = 0;
    cout << "请输入您对本电影的打分:";
    cin >> score;
    cout << "您输入的分数是:" << score << endl;

    switch (score)//条件及依据是score
    {
    case 9:
        cout << "您认为本电影很经典" << endl;
        break;
    case 8:
        cout << "您认为本电影很好" << endl;
        break;
    case 7:
        cout << "您认为本电影一般" << endl;
        break;
    default:
        cout<< "烂片" << endl;
        break;
    }

    system("pause");
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: switch (num) { case 1: // code block break; case 2: // code block break; default: // code block }switch (num) { case 1: // code block break; case 2: // code block break; } ### 回答2: 在C语言中,可以使用数组和函数指针的方式来替代多余的switch case代码,实现代码的简化和优化。具体步骤如下: 1. 首先,我们需要定义一个结构体数组,用于存储每个case的条件和对应的处理函数指针。 ```c typedef struct { int condition; void (*function)(); } Case; ``` 2. 然后,我们可以定义多个处理具体情况的函数,这些函数的参数和返回值根据实际需求而定。 ```c void case1() { // 处理case 1的逻辑 } void case2() { // 处理case 2的逻辑 } void case3() { // 处理case 3的逻辑 } ``` 3. 接下来,我们需要初始化结构体数组,并将每个case的条件与对应的处理函数指针进行绑定。 ```c Case cases[] = { {1, case1}, {2, case2}, {3, case3} }; ``` 4. 最后,我们可以根据输入的条件,在结构体数组中查找对应的处理函数,并进行调用。 ```c void executeCase(int condition) { for (int i = 0; i < sizeof(cases) / sizeof(Case); i++) { if (cases[i].condition == condition) { cases[i].function(); return; } } // 如果没有找到对应条件的处理函数,可以根据实际需求进行处理 printf("No matching case found.\n"); } ``` 使用以上方法,即可实现去除多余的switch case代码,使得代码更简洁、易读和易维护。 ### 回答3: 为了去除多余的Switch case,可以使用其他方式重构代码,例如使用函数指针数组和结构体来模拟Switch case的功能。 首先,我们可以定义一个包含不同case的函数指针数组,每个case对应一个函数。例如: ```c typedef void (*CaseFunc)(); // 定义函数指针类型 void case1() { printf("This is case 1\n"); } void case2() { printf("This is case 2\n"); } void case3() { printf("This is case 3\n"); } // 声明函数指针数组,并初始化 CaseFunc cases[] = {case1, case2, case3}; ``` 接下来,我们可以定义一个结构体来表示不同case的信息,结构体包含一个id表示case的索引,以及一个指向对应case函数的函数指针。例如: ```c typedef struct { int id; CaseFunc func; } CaseInfo; // 初始化各个case的信息 CaseInfo caseInfos[] = { {1, case1}, {2, case2}, {3, case3} }; ``` 然后,我们可以定义一个根据id查找对应case函数指针的函数。例如: ```c CaseFunc getCaseFunc(int id) { int i; int numCases = sizeof(caseInfos) / sizeof(caseInfos[0]); for (i = 0; i < numCases; i++) { if (caseInfos[i].id == id) { return caseInfos[i].func; } } // 若没有找到对应id的case函数,则返回一个默认函数指针 return NULL; } ``` 最后,我们可以使用上述函数指针数组和结构体,重构原本的Switch case代码。例如: ```c int caseId = 2; // 待选择的case id CaseFunc func = getCaseFunc(caseId); if (func != NULL) { // 检查是否找到对应case函数 // 调用对应case函数 func(); } else { printf("Invalid case id\n"); } ``` 通过上述方式,我们使用函数指针数组和结构体模拟Switch case的功能,可以更加灵活地添加、删除和修改case,避免了代码中多余的Switch case语句。此外,使用函数指针数组和结构体还能使代码结构更为清晰和可读。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值