c++ - Switch case 在 Turbo C 编译器中不起作用

标签 c++ c

#include<stdio.h>
#include<conio.h>
void main()
{
    char ch;
    float a, b, c;
    clrscr();
    printf("enter value of a");
    scanf ("%f", &a);
    printf("enter value if b");
    scanf("%f", &b);
    printf(" a for addition");
    printf("b for sub");
    scanf("%c", &ch);
    switch (ch)
    {
    case 'a':
        c = a + b;
        printf("addition=%f", c);
        break ;
    case 'b':
        c = a - b;
        printf("\nsubtraction=%f", c);
        break;
    default :
        printf ("wrong choice");
    }
    getch();
}

这是我得到的结果: 输入a4的值 如果 b4 输入值 a 表示附加 b 表示次错误选择

问题是开关条件甚至没有被评估一次。 编译:Windows 上的 Turbo C

最佳答案

刷新输入缓冲区以消耗缓冲区中剩余的 \n
或者试试这个

 scanf(" %c",&ch);  
        ^
        | A space before %c can skip any number of whitespaces    

关于c++ - Switch case 在 Turbo C 编译器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24043572/

相关文章:

c - 删除头节点和递归列表平均值

c - 为什么 fileno 无法返回有效的描述符?

c++ - 退出控制台 "FreeConsole (void)"、 "return 0"或 "exit (EXIT_SUCCESS)"哪个更好?

c++ - 构造函数不能采用非常量引用

c# - 如何识别某个值是否在 C++ 的枚举类型中定义?

c++ - avghookx.dll 找不到或打开 PDB 文件

c++ - 构建 GLib 时出错

从C编译错误gcc调用Assembly

删除对象时出现 C++ 断言错误

c - 如何检查是否溢出并返回0