C语言代码想判断数字和其他字符,同时如果是数字(不一定的个位数),判断是不是1或2,如果是字母就继续返回最开始输入的循环


 
int main()
{
    int a;
    float b;
OUT:
    printf("Enter the unit of Weight([1]-lbs, [2]-kg):");
    int K=scanf("%d",&a);
    if (K==1)
    {
        if(a==1){
        printf("Enter the Target Weight in lbs:");
        scanf("%f",&b);
    }
        else if (a==2)
    {
        printf("Enter the Target Weight in kg:");
        scanf("%f",&b);
    }
    }
    else{
        printf("Invalid Number!\n");
        goto OUT;
    }

输入a会一直这样运行

img


输入22,就会这样卡死

img

输入1.2会先判断不行,然后按1来继续运行后续代码

img

但是我觉得我的代码没有逻辑问题 能不能帮忙改正一下

你这个代码逻辑有问题阿 在if判断里面 ,然后你可以使用单步运行调试看看


 
int main()
{
    int a;
    float b;
OUT:
    printf("Enter the unit of Weight([1]-lbs, [2]-kg):");
    int K=scanf("%d",&a);
    if (K==1)
    {
        if(a==1){
        printf("Enter the Target Weight in lbs:");
        scanf("%f",&b);
    }
        else if (a==2)
    {
        printf("Enter the Target Weight in kg:");
        scanf("%f",&b);
    }
    else{
        printf("Invalid Number!\n");
        
    }
goto OUT;
}