麻烦看一下这个程序错在哪里

#include
#include
int main()
{

double x,y,r;
char a;
printf("请输入表达式\n");
scanf("%f,%c,%f",&x,&a,&y);






switch(a)
{
case '+':
    r=x+y;
    break;
case '-':
    r=x-y;
    break;
case '*':
    r=x*y;
    break;
case '/':
    r=x/y;
    break;
}
printf("结果是:%f",r);


Sleep(10000);
return 0;

}

关键你怎么输入的,需要逗号,比如
1,+,1

好像和输入没关系,运行结果是:
请输入表达式
3,+,7
结果是:-92559631349317831000000000000000000000000000000000000000000000.000000

没有错

int x, y, r;
char a;
printf("请输入表达式\n");
scanf_s("%d", &x);
scanf_s("%c", &a);
scanf_s("%d", &y);

switch (a)
{
case '+':
    r = x + y;
    break;
case '-':
    r = x - y;
    break;
case '*':
    r = x*y;
    break;
case '/':
    r = x / y;
    break;
}

直接在console平台输入7+2 空格什么都不用写的

scanf("%lf,%c,%lf",&x,&a,&y);

图片说明

double 类型数据 与float类型数据在内存中存储方式是不一样的, 所以你在scanf函数中若不按制定格式控制符lf控制的话,编译器就默认以float类型的
存储方式输入缓冲区中提取数据了,提出来的数据肯定是不对的。。。但是对于printf函数无所谓,这是库函数实现考虑了整个问题。。。