Giúp kiểm tra code C liên quan đến số ngẫu nhiên

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

int main()
{
    const int MAX=100, MIN=1;
    int soBiMat, soBanTim;
    srand(time(NULL));
    soBiMat=(MIN+rand()%(MAX-MIN+1));
    printf("So ban can tim la bao nhieu? ");
    scanf("%d", &soBanTim);
    if(soBanTim<soBiMat)
    {
        while(soBanTim<soBiMat)
        {
            printf("Lon hon!\n");
            printf("So ban can tim la bao nhieu? ");
            scanf("%d", &soBanTim);
        }
    }
    else if(soBanTim>soBiMat)
    {
        while(soBanTim>soBiMat)
        {
            printf("Nho hon!\n");
            printf("So ban can tim la bao nhieu? ");
            scanf("%d", soBanTim);
        }
    }
    else(soBanTim=soBiMat);
    {
        printf("Chuc mung! Ban da tim duoc so bi mat!!!\n\n");
    }
    return 0;
}

Khi em chạy chương trình thì cái số ngẫu nhiên nó cứ rơi vào 50, 70 ,90
Các anh xem dùm em mấy cái dòng code của em có sai xót gì không ạ!

Thanks all!

 while(soBanTim>soBiMat)
        {
            printf("Nho hon!\n");
            printf("So ban can tim la bao nhieu? ");
            scanf("%d", soBanTim);
        }

Hàm scanf("%d", soBanTim); có vẻ không đúng với ý định của bạn

giờ sửa sao bạn ơi? mình bó tay rồi :frowning:

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

int main()
{
    const int MAX=100, MIN=1;
    int soBiMat, soBanTim;
    srand(time(NULL));
    soBiMat=(MIN+rand()%(MAX-MIN+1));
    printf("So ban can tim la bao nhieu? ");
    scanf("%d", &soBanTim);
    if(soBanTim<soBiMat)
    {
        while(soBanTim<soBiMat)
        {
            printf("Lon hon!\n");
            printf("So ban can tim la bao nhieu? ");
            scanf("%d", &soBanTim);
        }
    }
    else if(soBanTim>soBiMat)
    {
        while(soBanTim>soBiMat)
        {
            printf("Nho hon!\n");
            printf("So ban can tim la bao nhieu? ");
            scanf("%d", &soBanTim);
        }
    }
    else
    {
        printf("Chuc mung! Ban da tim duoc so bi mat!!!\n\n");
    }
    return 0;
}

Bạn thêm dấu & vào soBanTim để scanf truyền giá trị nhập vào thôi mà.

else cuối cùng thì bạn bỏ điều kiện so sánh đi hoặc thêm if vào. Chỗ này lỗi cú pháp.

Mà nhân tiện. Bạn nên đổi tên cái bài tập này là SINH VIÊN ĐÁNH ĐỀ rồi nộp cho thầy. Giống y trang à:joy:

tức là giờ mình bỏ &soBanTim để giá trị của soBanTim ban đầu không bị thay đổi đúng không?

Mình sửa đoạn code của bạn như trên rồi đấy

Ok, thank you very nhiều nha! :slight_smile:

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

int main()
{
    const int MAX=100, MIN=1;
    int soBiMat, soBanTim;
    srand(time(NULL));
    soBiMat=(MIN+rand()%(MAX-MIN+1));
    printf("So ban can tim la bao nhieu? ");
    scanf("%d", &soBanTim);
    if(soBanTim<soBiMat)
    {
        while(soBanTim<soBiMat)
        {
            printf("Lon hon!\n");
            printf("So ban can tim la bao nhieu? ");
            scanf("%d", &soBanTim);
        }
    }
    else if(soBanTim>soBiMat)
    {
        while(soBanTim>soBiMat)
        {
            printf("Nho hon!\n");
            printf("So ban can tim la bao nhieu? ");
            scanf("%d", soBanTim);
        }
    }
    else(soBanTim=soBiMat);
    {
        printf("Chuc mung! Ban da tim duoc so bi mat!!!\n\n");
    }
    return 0;
}

Xong rồi bạn ơi :smiley:

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

int main()
{
    const int MAX=100, MIN=1;
    int soBiMat = 0, soBanTim = 0;
    srand(time(NULL));
    soBiMat=(MIN+rand()%(MAX-MIN+1));

    do
    {
         printf("So ban can tim la bao nhieu? ");
         scanf("%d", &soBanTim);
        if(soBanTim < soBiMat)
        {

                printf("Lon hon!\n");
               

        }
        else if(soBanTim > soBiMat)
        {

                printf("Nho hon!\n");
             
        }
        else if (soBanTim == soBiMat)
        {
                printf("Chuc mung! Ban da tim duoc so bi mat!!!\n\n");
        }
    }while(soBanTim!=soBiMat);

    return 0;
}

Mình nghĩ là bạn nên viết như đoạn mới này trông có vẻ ổn hơn này.

1 Like

Mình chưa thử vòng lặp do…while nhưng thấy dòng code của bạn thì mình thấy rõ ràng và dễ hiểu hơn nhiều

Cảm ơn nhiều nha! :kissing:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?