JeffQury 2024-01-01 19:04 采纳率: 93.3%
浏览 5
已结题

switch选择题怎么选?

有没有人知道这些题目有什么区别?除了C以外我感觉不出来有啥区别
若a、b、c1、c2、x、y是整型变量并均已赋值,正确的switch语句是()

A. switch(a+b);
   {case 1:y=a+b;break;
    case 0:y=a-b;break;}
B. switch(a*a+b*b)
   {case 3:
    case 1:y=a+b;break;
    case 3:y=b-a;break;}
C. switch a
   {case c1:y=a-b;break;
    case c2:x=a*b;break;
    default:x=a+b;}
D. switch(a-b)
   {default:y=a*b;break;
    case 3:case 4:x=a+b;break;
    case 10:case 11:y=a-b;break;}

  • 写回答

2条回答 默认 最新

  • a5156520 2024-01-01 19:37
    关注

    通过代码测试,发现只有D可以运行,其他三个都编译报错了,所以答案是D。

    测试代码如下:

    参考链接:

    
    
    #include <stdio.h>
    
    // https://c.biancheng.net/view/1808.html
    //void testSwitch1() {
    //
    //    int a=1,b=2,c1=3,c2=4,x=5,y=6;
    //
    //    switch(a+b);  //switch(a+b)后面有个分号,所以这里编译报错了 
    //    {
    //    case 1:
    //        y=a+b;
    //        break;
    //    case 0:
    //        y=a-b;
    //        break;
    //    }
    //
    //    printf("in testSwitch1(), y=%d\n",y);
    //}
    
    //void testSwitch2() {  // 编译报错
    //
    //    int a=1,b=2,c1=3,c2=4,x=5,y=6;
    //    switch(a*a+b*b) {
    //        case 3:
    //        case 1:
    //            y=a+b;
    //            break;
    //        case 3:  // 前面已经使用了case 3,所以这里再次使用case 3会编译报错
    //            y=b-a;
    //            break;
    //    }
    //
    //}
    
    //void testSwitch3() { // 编译报错
    //
    //    int a=1,b=2,c1=3,c2=4,x=5,y=6;
    //    switch a {  // 这里switch后面的表达式需要括在括号里,否则会编译报错
    //    case c1:
    //        y=a-b;
    //        break;
    //    case c2:
    //        x=a*b;
    //        break;
    //    default:
    //        x=a+b;
    //    }
    //
    //}
    
    
    void testSwitch4() {
    
        // https://c.biancheng.net/view/1808.html
        int a=1,b=2,c1=3,c2=4,x=5,y=6;
        switch(a-b) {
            default:
                y=a*b;
                break;
            case 3:
            case 4:
                x=a+b;
                break;
            case 10:
            case 11:
                y=a-b;
                break;
        }
        printf("in testSwitch4(), y=%d\n",y);
    }
    
    int main(void) {
    
    
        //testSwitch1();
        //testSwitch2();
        //testSwitch3();
        testSwitch4();
    
        return 0;
    
    }
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 已采纳回答 1月1日
  • 创建了问题 1月1日

悬赏问题

  • ¥60 如何批量获取json的url
  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数
  • ¥15 llama3中文版微调
  • ¥15 pg数据库导入数据序列重复
  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题