计算器验证姓名出问题

问题遇到的现象和发生背景

简易计算器器和验证姓名拉一起出问题,运算器单独拉出来可以运行,但是放一起每次第一遍运算的运算符会被吞掉

用代码块功能插入代码,请勿粘贴截图
#include 
#include 
int main()
{
    int count=0;
    char x[10];
    char name[10]="xiaoming";
    while(1)
    {
    printf("请输入您的姓名:");
    scanf("%s",&x);
    if (strcmp(x,name)==0){
        puts("HELLO");
        break;
    }
    else{
        count++;
        puts("ERROR");
        if (count==3){
            printf("错误太多,程序结束!");
            return 0; 
        }
    }
    }
    float m,n;
    char op;
    while(1)
    {
        printf("请输入运算符号(+,-,*,/):");
        scanf("%c",&op);
        printf("请输入第一个数字\n");
        scanf("%f",&m);
        printf("请输入第二个数字:\n");
        scanf("%f",&n);
        if(op=='+')
        printf("%lf + %lf = %lf\n", m, n, m + n);
        else if(op=='-')
        printf("%lf - %lf = %lf\n", m, n, m - n);
        else if(op=='*')
        printf("%lf * %lf = %lf\n", m, n, m* n);
        else if(op=='/')
    {
        if(n==0)
        printf("该值不存在!\n");
        else
        printf("%lf / %lf = %lf\n", m, n, m/n);
    }
        else{
            printf("抱歉,此计算器还没有那么高级!\n"); 
        }
    getchar();
}
}

运行结果及报错内容

img

应该是因为scanf读取字符时把前面的scanf丢弃的换行符读入进来而导致出错了,在读取字符前加个循环读走前面scanf()函数获取输入后丢弃的换行符等字符即可。修改如下:

参考链接:
ASCII码对照表-完整ASCII码表-我就查查询

#include <stdio.h>
#include <string.h>
int main()
{
    int count=0;
    char x[10];
    char name[10]="xiaoming";
    while(1)
    {
    printf("请输入您的姓名:");
    scanf("%s",x);
    while(getchar()!='\n')  //读走前面scanf()函数丢弃在缓冲区的换行符,以便下面的scanf()函数顺利读取字符 
        continue;
    if (strcmp(x,name)==0){
        puts("HELLO");
        break;
    }
    else{
        count++;
        puts("ERROR");
        if (count==3){
            printf("错误太多,程序结束!");
            return 0; 
        }
    }
    }
    float m,n;
    char op;
    while(1)
    {
        
        printf("请输入运算符号(+,-,*,/):");
        scanf("%c",&op);
        //printf("op=%c,op=%d\n",op,op) ;
        //http://ascii.wjccx.com/
        
        
        printf("请输入第一个数字\n");
        scanf("%f",&m);
       
       // printf("m=%f\n",m) ;
        
        printf("请输入第二个数字:\n");
        scanf("%f",&n);
       // printf("n=%f\n",n) ;
        
        if(op=='+')
        printf("%lf + %lf = %lf\n", m, n, m + n);
        else if(op=='-')
        printf("%lf - %lf = %lf\n", m, n, m - n);
        else if(op=='*')
        printf("%lf * %lf = %lf\n", m, n, m* n);
        else if(op=='/')
    {
        if(n==0)
        printf("该值不存在!\n");
        else
        printf("%lf / %lf = %lf\n", m, n, m/n);
    }
        else{
            printf("抱歉,此计算器还没有那么高级!\n"); 
        }
    getchar();
}
}
 

img