[Lập trình C] Guess The Number - Mini console game

Tuesday, May 25, 2021
Edit this post


Đề bài: Viết một trò chơi console hỏi tên (tối đa 20 ký tự) và yêu cầu người dùng đoán một số bí mật ngẫu nhiên bất kỳ trong khoảng từ 1 tới 20. Người dùng sẽ có tối đa 5 lần đoán. Với mỗi lần đoán, cho người dùng biết nếu số mà họ đưa ra cao hoặc thấp hơn so với con số bí mật. Nếu sau 5 lần mà người dùng vẫn đoán sai thì in ra đáp án. Nếu người dùng đoán đúng kết quả trong 5 lần đoán thì in ra câu chúc mừng.

Ví dụ chạy chương trình (trường hợp người chơi thắng):

What is your name? Phi
Hello Phi. I'm thinking of a number between 1 and 20. Could you make a guess?
Make a guess: 5
That's too low!
Make a guess: 10
That's too high!
Make a guess: 8
That's too high!
Make a guess: 6

Good job! You guessed my number in 4 guesses!


Ví dụ chạy chương trình (trường hợp người chơi thua):

What is your name? Phi
Hello Phi. I'm thinking of a number between 1 and 20. Could you make a guess?
Make a guess: 5
That's too low!
Make a guess: 5
That's too low!
Make a guess: 5
That's too low!
Make a guess: 5
That's too low!
Make a guess: 5
That's too low!

Nope! The number I was thinking of was 9!


Bên dưới là lời giải của tôi. Các bạn hãy tự mình nghiền ngẫm và hands-on coding trước khi xem lời giải nhé. Lời giải chỉ cover requirements của chương trình ở mức cơ bản nhất. Với yêu cầu nâng cao, các bạn có thể kiểm tra và bắt người dùng nhập lại nếu người dùng cố tình nhập tên có độ dài > 20 ký tự hoặc nhập một số không nằm trong khoảng từ 1 tới 20.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define NAME_LEN 20

int main()
{
    char name[NAME_LEN];
    
    srand(time(0));
    int secretNumber = rand() % 20 + 1;
    
    printf("What is your name? ");
    fgets(name, NAME_LEN, stdin);
    strtok(name, "\n");
    
    printf("Hello %s. I'm thinking of a number between 1 and 20. Could you make a guess?", name);
    
    int answer;
    int guesses = 0;
    do {
        ++guesses;
        printf("\nMake a guess: ");
        scanf("%d", &answer);
        
        if (answer < secretNumber)
            printf("That's too low!");
        else if (answer > secretNumber)
            printf("That's too high!");
        else
            break;
    } while (guesses < 5);
    
    if (answer == secretNumber)
        printf("\nGood job! You guessed my number in %d guesses!", guesses);
    else
        printf("\nNope! The number I was thinking of was %d!", secretNumber);

    return 0;
}

.
Xin vui lòng chờ đợi
Dữ liệu bài viết đang được tải về

© Copyright by CUỘC SỐNG TỐI GIẢN
Loading...