为什么要在do循环里面进行scanf("%d", &a); 在do前面进行这个,程序就一直循环死。是因为rand的问题还是do-while循环的问题

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{srand (time(0));

int x =rand()%100+1 ;
int n =0;
int a =0;

do
{scanf ("%d",&a);
printf("请猜猜这个数是多少:");

n++;
if( a>x ){
printf("你猜的数字有点大哦,再猜一次吧。\n");
} else if( a<x){
printf("你猜的数字有点小哦,再猜一次吧。\n");
}
} while ( a != x);
printf("太好了,你只用了%d次就猜出来了,没错,这个数就是%d。\n", n, x);

return 0;
}

在do前面进行的话需要先判断再循环

img

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
    srand (time(0));

    int x =rand()%100+1 ;
    int n =0;
    int a =0;
    scanf ("%d",&a);

    while ( a != x)
    {
        printf("请猜猜这个数是多少:");

        n++;
        if( a>x )
        {
            printf("你猜的数字有点大哦,再猜一次吧。\n");
        }
        else if( a<x)
        {
            printf("你猜的数字有点小哦,再猜一次吧。\n");
        }
        scanf ("%d",&a);
    }
    printf("太好了,你只用了%d次就猜出来了,没错,这个数就是%d。\n", n, x);

    return 0;
}


因为在do前面你只输入了一次猜测的数据,然后这个猜测的数据一直在做 do while无限循环,
而在里面的话你可以不断更新猜测的数据,直到他和x相等。

在do前面,相当于a的值是一个定值,这个定值不会改变,那么就永远猜不对数,也就是死循环
望采纳,谢谢!

循环里得有scanf输入a

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{   srand (time(0));

    int x =rand()%100+1 ;
    int n =0;
    int a =0;
    scanf ("%d",&a);
    do
    {
        printf("请猜猜这个数是多少:");
        n++;
        if( a>x )
        {
            printf("你猜的数字有点大哦,再猜一次吧。\n");
        }
        else if( a<x)
        {
            printf("你猜的数字有点小哦,再猜一次吧。\n");
        }
        scanf ("%d",&a);
    } while ( a != x);
    printf("太好了,你只用了%d次就猜出来了,没错,这个数就是%d。\n", n, x);

    return 0;
}