求问这个猜数游戏c程序为什么执行起来结果不对?

比着mooc老师的代码一起敲得,结果运行起来结果是不对的。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
    srand(time(0));
    int number = rand ()%100 + 1;
    int count = 0; 
    int a=0;
    printf("游戏开始,请猜一个1~100之间的数\n");
    do{
        scanf("%d\n",&a);
        count ++;   
        if (a>number){
            printf("很遗憾,你猜得有点大哦!\n");
        }
        else if(a<number){
            printf("很遗憾,你猜得有点小哦!\n");
        }
    }while (a!=number);
    printf("恭喜你只用了%d次就答对了!", count);

    return 0;
    }

老师的代码如下:图片说明

源代码图如下:
图片说明

运行结果如下:图片说明

不仅运行结果有问题,而且第一次要求输入数字要输入两次才能读进去,这是为什么呀。

求大神解答,万分感谢!!

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
    srand(time(0));
    int number = rand ()%100 + 1;
    int count = 0;
    int a=0;
    printf("游戏开始,请猜一个1~100之间的数\n");
    do{
        scanf("%d",&a);
        count ++;
        if (a>number){
            printf("很遗憾,你猜得有点大哦!\n");
        }
        else if(a<number){
            printf("很遗憾,你猜得有点小哦!\n");
        }
    }while (a!=number);
    printf("恭喜你只用了%d次就答对了!", count);

    return 0;
    }