为什么这个计算器出不了数呢?

#include <stdio.h>
#include<math.h>
#pragma warning(disable:4996)
#define _CRT_SECURE_NO_WARNINGS
int main()
{
    int a, b;
    char c;
    scanf("%d%d", &a,&b);
    scanf("%c", &c);
    switch (c)
    {
    case ' + ':printf("%d", a + b); break;
    case '-': printf("%d", a - b); break;
    case '*': printf("%d", a * b); break;
    case '/':
    {
        if (b == 0) printf("Divided by zero!");
        else printf("%d", a / b);
    }
    default: printf("error!");
    }

你输入的参数不对,你直接给1 2+。

img

如果你输入a,b后,按回车键再输入c,那么在scanf("%c",&c)前面要加一句getchar()
否则c接收的不是你输入的操作符,而是换行键

你的代码我看没问题啊?


#include <stdio.h>
#include<math.h>
#pragma warning(disable:4996)
#define _CRT_SECURE_NO_WARNINGS
int main()
{
    int a, b;
    char c;
    scanf("%d%c%d", &a,&c,&b);
    switch (c)
    {
    case ' + ':printf("%d", a + b); break;
    case '-': printf("%d", a - b); break;
    case '*': printf("%d", a * b); break;
    case '/':
    {
        if (b == 0) printf("Divided by zero!");
        else printf("%d", a / b);
    }
    default: printf("error!");
    }



看下你怎么输入的


#include <stdio.h>
#include<math.h>
#pragma warning(disable:4996)
#define _CRT_SECURE_NO_WARNINGS
int main()
{
    int a, b;
    char c;
    scanf("%d%d%c", &a,&b,&c);
    switch(c)
    {
    case '+':printf("%d", a + b); break;
    case '-': printf("%d", a - b); break;
    case '*': printf("%d", a * b); break;
    case '/':
    {
        if (b == 0) printf("Divided by zero!");
        else printf("%d", a / b);
    }
    default: printf("error!");
    }
}