C语言订购代码错误,如何修改


#include
int main(void)
{
    char x;                     //选项
    float yx;                   //洋藓临时重量
    float tczh;                 //甜菜临时重量
    float hlbzh;                //胡萝卜临时重量
    float yxz;                  //洋藓总重量
    float tcz;                  //甜菜总重量
    float hlbz;                 //胡萝卜总重量

    while (x != 'q')
    {
        printf("请选择你订购什么东西\n");
        printf("a) 杨藓             ");
        printf("b) 甜菜\n");
        printf("c) 胡萝卜           ");
        printf("q) 退出订购\n");
        scanf("%c",&x);

        switch (x)
        {
        case 'a':
            printf("你要订购多少磅:");
            scanf("%f",&yx);
            yxz += yx;
            break;

        case 'b':
            printf("你要订购多少磅:");
            scanf("%f",&tczh);
            tcz += tczh;
            break;

        case 'c':
            printf("你要订购多少磅:");
            scanf("%f",&hlbzh);
            hlbz += hlbzh;
            break;

        case 'q':
            break;
        
        default:
            printf("没有此选项,请重新输入\n");
            break;
        }
    }

    return 0;
}

为什么这段订购代码(一部分)我在调试之后发现第二次它就自动读取了换行,如何解决,如下图

img

scanf后面加一个getchar()就行

 
#include<stdio.h>
int main(void)
{
    char x;                     //选项
    float yx;                   //洋藓临时重量
    float tczh;                 //甜菜临时重量
    float hlbzh;                //胡萝卜临时重量
    float yxz;                  //洋藓总重量
    float tcz;                  //甜菜总重量
    float hlbz;                 //胡萝卜总重量
 
    while (x != 'q')
    {
        printf("请选择你订购什么东西\n");
        printf("a) 杨藓             ");
        printf("b) 甜菜\n");
        printf("c) 胡萝卜           ");
        printf("q) 退出订购\n");
        scanf("%c",&x);
        getchar(); 
 
        switch (x)
        {
        case 'a':
            printf("你要订购多少磅:");
            scanf("%f",&yx);
            yxz += yx;
            break;
 
        case 'b':
            printf("你要订购多少磅:");
            scanf("%f",&tczh);
            tcz += tczh;
            break;
 
        case 'c':
            printf("你要订购多少磅:");
            scanf("%f",&hlbzh);
            hlbz += hlbzh;
            break;
 
        case 'q':
            break;
        
        default:
            printf("没有此选项,请重新输入\n");
            break;
        }
    }
 
    return 0;
}