while循环次数不对

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

一个猜数字的代码

用代码块功能插入代码,请勿粘贴截图
#include
#include
#include//对应后面的time(NULL) 
 int main()
{
         void srand(unsigned seed);//播撒种子 
         int a = rand()%100;//生成数(0~32767),取余100得(0~99) 
         int b, sum=3;
         srand(time(NULL));//时间不同,产生的数不同,但是好像有一些规律,比如第一个都是41,每秒一个,增加大概3-4 
         scanf("%d", &b);
    while(1)
    { 
        if(b>a)
            printf("大了大了,再猜");
        else if(bprintf("小了,再来\n");
        else if(b==a)
         {
            printf("对啦对啦hhh\n");
            break;//break跳出循环(for、while、do while) 
        }
        if(sum==0)
        {
            printf("没机会了,重开吧亲;)");
            break;
        }
        sum--;
         getchar(); 
    }
        return 0;
    
}

运行结果及报错内容

img

我的解答思路和尝试过的方法

按我的写法,应该输入一次然后直接三次循环break了,但是为什么可以输入两次,第一次只显示两次嘞?

我想要达到的结果

知道为什么这个代码运行得出这个结果就好

#include<stdio.h>
#include<stdlib.h>
#include<time.h>//对应后面的time(NULL) 
 int main()
{
         srand(time(NULL));//时间不同,产生的数不同,但是好像有一些规律,比如第一个都是41,每秒一个,增加大概3-4
         int a = rand()%100;//生成数(0~32767),取余100得(0~99) 
         int b, sum=3;    
    while(1)
    { 
        printf("请输入您猜的数:");
        scanf("%d", &b);
        if(b>a)
            printf("大了大了,再猜");
        else if(b<a)
            printf("小了,再来\n");
        else if(b==a)
         {
            printf("对啦对啦hhh\n");
            break;//break跳出循环(for、while、do while) 
        }
        if(sum==0)
        {
            printf("没机会了,重开吧亲;)");
            break;
        }
        sum--;
    }
        return 0;
    
}