C语言:猜数问题!!

编写程序实现猜数游戏,程序首先生成一个1~10(包括1和10)的正整数,提示用户输入一个数对其进行猜测,如果用户输入的数大于要猜测的数,则提示"Too big.尀nTry again:";如果用户输入的数小于要猜测的数,则提示"Too small.尀n Try again:";相等则表示猜到了。同时,程序还需要统计猜测的次数,如果1次猜中该数,提示"Bingo!";如果3次以内(包括3次)猜中该数,则提 示"Lucky You!";如果超过3次但是在6(>3)次以内(包括第6次)猜到该数,则提示"Good Guess!";如果超过6次都没有猜到,则提示"Game Over",一次猜测结束。然后,提示用户是否还要再猜测一次"Do you wanna play again? If yes, press Y or y. Otherwise press N or n.",如果用户输入Y或者y,则表示要再猜一次;如果用户输入N或者n,则表示不猜了,退出程序。注意:为了能够用系统进行评判,提交的程序需要把随机数生成部分替换为从标准输入(stdin)读取一个数(这个数相当于随机数);然后,后面继续读取用户输入的数。
2026年09月27日 00:08
有2个网友回答
网友(1):

左图:1-36行;右图:17-52行

#include

int main()

{

    int tar, guess, times, again = 1;

    char ch;


    while (again == 1)

    {

        scanf("%d", &tar);

        times = 1;

        while (1)

        {

            scanf("%d", &guess);

            if (guess == tar)

            {

                if (times == 1)

                    printf("Bingo!\n");

                else if (times <= 3)

                    printf("Lucky You!\n");

                else

                    printf("Good Guess!\n");

                break;

            }

            

            if (times >= 6)

            {

                printf("Game Over.\n");

                break;

            }

            

            if (guess > tar)

                printf("Too big.\nTry again:");

            else

                printf("Too small.\nTry again:");

            times++;

        }

        

        again = 0;

        do

        {

            printf("Do you wanna play again? "

                "If yes, press Y or y. Otherwise press N or n.");

            scanf(" %c", &ch);

            if (ch == 'Y' || ch == 'y')

                again = 1;

            else if (ch == 'N' || ch == 'n')

                again = -1;

        } while (again == 0);

    }

    

    return 0;

}

部分测试

网友(2):

您好,你的问题,我之前好像也遇到过,以下是我原来的解决思路和方法,希望能帮助到你,若有错误,还望见谅!展开全部
#include
void main()
{
int i,j,A,B,n=0;
int a[4]={1,2,3,4},b[4];
do{
A=0;
B=0;
printf("please imput 4 numbers from 1 to 10:"); //我用的VC6.0,数据输入之间空格;
for(i=0;i<4;i++)
{
scanf("%d",&b[i]);
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
if(b[j]==a[i]) //等号==;
{
i!=j?B++:A++;
}
}
n++;
printf("%dA%dB\n",A,B);
}while(A<4);
printf("Congratulations!!!\n");
printf("You have guessed %d times in all\n",n);
printf("The answer is:");
for(i=0;i<4;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
你的循环有点,局部还有些错误,我这个可以了,不懂的在线HI非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!