我无法在我的软件上找到我的错误(打开 C 语言)

i cant find my mistake on my software (switch on C language)

这是我第一次 post 来这里。 我这个月开始学习软件工程,我正在尝试使用 c 编写软件。 我找不到更改它的错误.. 谁能帮帮我!

    #include <stdio.h>
    void main()
    {
        int a,b,e;
        char operation;
        printf ("enter the first number:");
        scanf ("%d",&a);
        printf ("enter the second number:");
        scanf ("%d",&b);
        printf ("enter the operation:");
        scanf ("%c", &operation);
        switch (operation)
        {   case '+' :  e=a+b;
            break;
            case '-' :  e=a-b;
            break;
            case '*' :  e=a*b;
            break;
            case '/' :  e=a/b;
            break;
            default: printf("wrong choice!!");
    
        }

    printf("%d %c %d = %d \n", a, operation, b, e);
    }
#include <stdio.h>
    void main()
    {
        int a,b,e;
        char operation;
        printf ("enter the first number:");
        scanf ("%d",&a);
        printf ("enter the second number:");
        scanf ("%d",&b);
        getchar();
        printf ("enter the operation:");
        scanf ("%c", &operation);
        switch (operation)
        {   case '+' :  e=a+b;
            break;
            case '-' :  e=a-b;
            break;
            case '*' :  e=a*b;
            break;
            case '/' :  e=a/b;
            break;
            default: printf("wrong choice!!");
    
        }

    printf("%d %c %d = %d \n", a, operation, b, e);
    }

您的 scanf ("%c", &operation); 正在读取上述 scanf 语句中的 换行符 \n。因此,要正确扫描操作语句,您必须添加 getchar() 来检测 换行符 \n.

正如@Oka 已经提到的scanf() leaves the new line char in the buffer

你必须丢弃换行符,你可以简单地在最后一个 scanf 之前使用 getchar() 函数来丢弃那个单个字符(可以是换行符也可以不是),100% 确定关于从输入缓冲区中丢弃所有未读字符你可以做

while((c = getchar()) != '\n' && c != EOF)

否则可以使用 " %c"(空格 %c)忽略前导换行符。