为什么第一次循环后会省略掉输入加减乘除后那个scanf?
应该是循环中最后一个输入的回车字符被 选择加减乘除的 %c 给接收了,可以在循环最后一个输入之后,加一句 getchar();
把你最后输入的回车给去掉
#include<stdio.h>
int main()
{
double a, b;
char q;
int i;
for(i=1;i>0;)
{
printf("选择加减乘除(+,-,,/):");
scanf_s("%c", &q, sizeof(q));
printf("输入第一个数字:");
scanf_s("%lf", &a);
printf("输入第二个数字:");
scanf_s("%lf", &b);
switch (q)
{
case '+':printf("%f + %f = %f", a, b, a + b); break;
case '-':printf("%f - %f = %f", a, b, a - b); break;
case '':printf("%f * %f = %f", a, b, a * b); break;
case '/':printf("%f / %f = %f", a, b, a / b); break;
default:printf("输入正确的符号!\n");
}
q = 0;
printf("\n退出请按0,继续请按1:");
scanf_s("%d", &i);
}
return 0;
}