关于#Switch#的问题,如何解决?(语言-c语言)

img

img


可以讲一讲x>2和Y>0,z等于5是啥意思嘛。
这对这个我来说很重要,救命救命

x > 2 这是一个 判断表达式,表达式成立 ,结果就为 1, 表达式不成立,结果就为 0
其他类似,然后你就可以 对应case里面的每一项了

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    对于C语言中的switch语句,需要注意以下几点:

    1. switch后边的括号只能是整形表达式(包括短整/长整)或者字符型。
    2. case后必须是整型常量表达式。
    3. 在case后的代码块中,必须加上break语句,否则会继续执行下一个case中的代码。
    4. 如果变量的值不是任何一个case所列举的值,则会执行default代码块中的代码。
    5. 为了避免浮点型数据无法直接使用switch语句,可以采用先用if语句筛选出需要用switch语句判断的数据段的方法,将浮点型数据转化为整型数据处理。

    以下是一个可以处理浮点型数据的switch语句实例:

    #include<stdio.h>
    #include<math.h>
    
    int main()
    {
        float x;
        scanf("%f",&x);
        if(x<0)
            printf("y=%f",x);
        /*先用一个if语句对x<0的情况单独处理,筛选出x>=0的其他情况*/
        else
            switch ((int)x)
            /*将浮点型数据转化为int整数型,如果是0-10之间的x值,则int(x)的值是0-10之间的某一个整数数字,则可以直接用case:int(x)分不同情况,对于x>10的情况放在default处理*/
            {
                case 0:printf("y=%f",x);break;
                case 1:printf("y=%f",x);break;
                /*0 <= x < 2 */
                case 2:printf("y=%f",pow(x,2)+1);break;
                case 3:printf("y=%f",pow(x,2)+1);break;
                case 4:printf("y=%f",pow(x,2)+1);break;
                case 5:printf("y=%f",pow(x,2)+1);break;
                /*2 <= x < 6 */
                case 6:printf("y=%f",sqrt(x+1));break;
                case 7:printf("y=%f",sqrt(x+1));break;
                case 8:printf("y=%f",sqrt(x+1));break;
                case 9:printf("y=%f",sqrt(x+1));break;
                /*6 <= x < 10 */
                default:printf("y=%f",1/(x+1));
                /*x >= 10 */
            }
    
        return 0;
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^