这是我自己做的c语言,请问一下为什么它只循环一次就直接打印“Program is over!”

img

#include  
#include  
int main(void)
{
    int flag=0;
    float x,y;
    char c,a;
do
{
    printf("Please enter the expression:\n");
    scanf("%f %c %f",&x, &c, &y);
    switch(c)
    {
        case '+':
        printf("%f + %f = %f\n", x, y, x+y);break;
        case '-':
        printf("%f - %f = %f\n", x, y, x-y);break;
        case '*':
        printf("%f * %f = %f\n", x, y, x*y);break;
        case '/':
        if (0==y)
        printf("Division by zero!");
        else
        printf("%f / %f = %f\n", x, y, x/y);break;
        default:
        printf("Unknown operator! ");break; 
    }  
    printf("Do you want to continue(Y/N or y/n)?");
    scanf("%c",&a);
    if(a=='y'|| a=='Y')
    {
        flag=1;
    }
    else
    {
        printf("Program is over!");
    }   
}   while (flag==1);
   return 0;
}

scanf("%c",&a); 这句之前加个getchar();接收前面输入数据后的换行符。否则a会接收换行符,因此退出了