C程序.切换案例/用户输入.默认继续执行

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)

koc*_*ica 5

scanf()函数在尝试解析字符以外的内容之前会自动删除空格.

字符格式(%c,%[…],%n)是例外,他们不删除空格.

在您的情况下,您必须跳过前导白色间距,才能进行更改

scanf("%c", &ch);
Run Code Online (Sandbox Code Playgroud)

scanf(" %c", &ch);
       ^              Note the space
Run Code Online (Sandbox Code Playgroud)