首页 > C语言基础题,case 'E'不起作用

C语言基础题,case 'E'不起作用

  1. C语言程序设计第五章的一道题
    输入数字和字符,字符S表示开始,字符E表示结束,然后就是+-*/,运行结果应该是这样的:

    5S
    = 5.00
    计算开始
    2+
    = 7.00
    3-
    = 4.00
    5E
    = 4.00
    计算结束
  2. 我的代码是这样的

    #include <stdio.h>
    #include <stdbool.h>
    
    int main(void)
    {
        float num;
        float num_o;
        char operator;
        bool cal = true;
    
        printf("开始运算:\n");
        printf("输入数字和运算符,第一个运算符为S\n");
    
        do {
            printf(":");
            scanf("%f%c", &num, &operator);
        }
        while(operator != 'S');
    
        printf("= %f\n", num);
    
        while (cal) {
            printf(":");
            scanf("%f%c", &num_o, &operator);
    
            switch(operator) {
                case 'S':
                    num = num_o;
                    break;
                case '+':
                    num = num + num_o;
                    break;
                case '-':
                    num = num - num_o;
                    break;
                case '*':
                    num = num * num_o;
                    break;
                case '/':
                    num = num / num_o;
                    break;
                //请注意这里
                case 'E':
                    num = num;
                    printf("= %f\n", num);
                    printf("计算结束");
                    cal = false;
                    break;
                default:
                    printf("未知的运算符\n");
                    num = num;
                    break;
            }
    
            printf("= %f\n", num);
        }
    
        return 0;
    }
  3. 那么问题来了
    请看上面代码有一个注释,case 'E'那里,应该是E计算结束,但是运行后,如果输入数字和E,那么会print出未知的运算符,而不是计算结束。但是我把E换成别的字符,比如D,我输入数字和D,就是正常的print计算结束

求解答。谢谢~~


并没有看到 case 'E' 啊。所以你输入’E’时就会执行default下的那段代码


E跟在数字后面在C语言里面表示科学计数法数字,比如3E2表示3×10^2也就是300

所以你输入数字+E的时候,整个输入都会被当做数字,而后面的操作符是一个空字符,所以会走default分支:

scanf("%f%c", &num_o, &operator);

解决方法1:用空格分开数字和字符来输入,比如5 E。相应地读取的代码变为:

scanf("%f %c", &num_o, &operator);

解决方法2:不要用E表示结束,比如用你所说的D

【热门文章】
【热门文章】