为什么把while的第一行删除之后,必须要输入两次才能执行while循环中的内容?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu(){
printf(" ########################\n");
printf(" ### PLAY:1 END:0 ###\n");
printf(" ########################\n");
}

void game(){
//生成随机整数
int ret = 0;
int input = 0;
int ch =
ret = rand()%100+1;//1--100
while(1){
//printf("请猜数字:>");
scanf("%d",&input);
if(ret>input){
printf("小了\n");
}else if(ret<input){
printf("大了\n");
}else if(ret==input){
printf("恭喜你,猜对了\n");
break;
}
}

}
int main()
{
//猜数字游戏
int a = 0;
//用时间戳设置随机数的生成起始点
srand((unsigned int)time(NULL));
//时间戳:当前计算机时间-1970.1.1 0:0:0=xxx秒
do
{
menu();

    scanf("%d",&a);
    switch(a){
    case 1:
        game();
        break;
    case 0:
        printf("游戏结束!");
        break;
    default:
        printf("请重新输入\n");
        break;    
    }
}while(a);

return 0;

}

我这里运行正常啊:输一次就行,是不是你的程序还是没注释之前的情况下运行的

img

我也是测试正常。你是不是运行的exe文件不是这个代码编译的,你重新编译一下代码文件再运行试试

img