J.G*_*nez 3 c user-input switch-statement
每次输入正确的char输入时都会执行默认语句.我错过了什么?
我的产出:
正确的产出:
#include <stdio.h>
void main() {
char ch = '?';
float f;
double a = 10.00, b = 20.00;
int i;
for (i = 0; i < 10; i++) {
scanf("%c", &ch);
switch (ch) {
case '+':
f = a + b;
printf("f = %.0f\n", f);
break;
case '-':
f = a - b;
printf("f = %.0f\n", f);
break;
case '*':
f = a * b;
printf("f = %.0f\n", f);
break;
case '/':
f = a / b;
printf("f = %.2f\n", f);
break;
default:
printf("invalid operator\n");
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该scanf()函数在尝试解析字符以外的内容之前会自动删除空格.
字符格式(%c,%[…],%n)是例外,他们不删除空格.
在您的情况下,您必须跳过前导白色间距,才能进行更改
scanf("%c", &ch);
Run Code Online (Sandbox Code Playgroud)
至
scanf(" %c", &ch);
^ Note the space
Run Code Online (Sandbox Code Playgroud)