0

数字猜谜游戏,用户从 0-20 中猜测一个数字,我希望它显示为用户留下了多少次尝试,例如最大尝试次数为 5,如果用户在第一次尝试时弄错了,它将显示类似“尝试离开:4 ”,我如何在我的代码中实现它?

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

int main()
{
    time_t t;
    srand((unsigned)time(&t));
    int randomNumber = rand() % 21;
    int num;
    int guess = 0;

    printf("\nThis is a guessing game.");
    printf("\nGuess 5 times only\n");

    printf("\nEnter your guess:");
    scanf("%d",&num);

    while (num != randomNumber && guess < 5){ //checks if num is equal or not to randomnumber and count is less than 5 or limit 5

        if(num > randomNumber){ // checks if num is greater than randomNumber
            printf("Too high! try again:");
            scanf("%d",&num);
            guess++;
        }

        if(num < randomNumber){ //checks if num is less than randomNumber
            printf("Too low! try again:");
            scanf("%d",&num);
            guess++;
        }

        if(num == randomNumber){ //checks if num is equal to randomNumber
            printf("You got it right!\n");
            return 0;
        }

        if(guess == 5) //checks if tries is 5 then exits program.
        {
            printf("your out guess of guesses!\n");
            return 0;
        }

    }

    return 0;
}


4

3 回答 3

0

您可以在 while 循环中添加它(最后)

// For total no of guesses = 5, if that is n then n - 1 - guess  
printf("tries left %d\n", 4 - guess);
于 2020-07-11T16:09:26.693 回答
0

您已经有了答案,但我建议您#define GUESS_NUM 4在语句和程序中使用符号常量而不是实际数字,在这样的程序中没有区别,但是在较大的项目中您很容易感到困惑。

此外,您的循环应该在猜测达到 4 时结束,因为您在循环之前已经有一个猜测。你可以这样写:

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

#define GUESS_NUM 4

int main()
{
    time_t t;
    srand((unsigned)time(&t));
    int randomNumber = rand() % 21;
    int num;
    int guess = 0;

    printf("\nThis is a guessing game.");
    printf("\nGuess 5 times only\n");

    printf("\nEnter your guess:");
    scanf("%d",&num);

    while (num != randomNumber && guess < GUESS_NUM){ //checks if num is equal or not to randomnumber and count is less than 5 or limit 5
        
        if(num > randomNumber){ // checks if num is greater than randomNumber
            printf("tries left : %d\n", GUESS_NUM-guess);
            printf("Too high! try again:");
            scanf("%d",&num);
            guess++;
        }

        if(num < randomNumber){ //checks if num is less than randomNumber
            printf("tries left : %d\n", GUESS_NUM-guess);
            printf("Too low! try again:");
            scanf("%d",&num);
            guess++;
        }

        if(num == randomNumber){ //checks if num is equal to randomNumber
            printf("You got it right!\n");
            return 0;
        }

        if(guess == GUESS_NUM) //checks if tries is 5 then exits program.
        {
            printf("your out guess of guesses!\n");
            return 0;
        } 
        
        
    }

    return 0;
}
于 2020-07-11T16:21:16.670 回答
0

如果您尝试在循环中打印一个值,则printf(“You have %d guesses left\n”,5-guess);可能会起作用

于 2020-07-11T16:11:46.800 回答