01/10/2018, 00:21

Cho max = 99 -> 10000000000?

Đây là code C :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void Sosanh (int soHientai) ;
int taoSobimat(int MAX);
int main(int argc, char *argv[])
{
int soBimat,soHientai, che_do_nguoi_choi,gioi_han_bang_so,MAX   = 0;/* i, b,*/
printf("===== Welcome ban toi voi chuong trinh : =====
");
printf("======== Lon hon!Nho hon! Chuc mung ! ========

");
printf("Phan thiet lap : 

");
printf("Che do :
");
printf("1. 1 nguoi choi   2. 2 nguoi choi 

");
scanf("%d",&che_do_nguoi_choi);
printf("Cap do (gioi han) choi: 

");
printf("1. 100
");
printf("2. 200
");
printf("3. 300
");
scanf("%d",&gioi_han_bang_so);
switch(gioi_han_bang_so)
{
case 1 :
    MAX = 99;
case 2 :
    MAX = 199;
case 3 :
    MAX = 299;
}
soBimat = taoSobimat(MAX);
Sosanh(soBimat);
}
int taoSobimat(int MAX)
{
const int MIN =0;
int socan=0;
srand(time(NULL));
socan = (rand()%(MAX - MIN +1))+MIN;
return taoSobimat;
}
void Sosanh(int soBimat )
{
int soHientai,as = 0;
do
{
int i = 0;
do
{
printf("Moi ban nhap so :
");
scanf("%d",&soHientai);
if (soHientai > soBimat)
{
    printf("Nho hon !
");
    i++;
}
else if (soHientai < soBimat)
{
    printf("Lon hon !
");
    i++;
}
else
{
    printf("Chuc mung ban da tim ra so bi mat la : %d trong %d lan doan ! 

",soBimat,i);
    printf("Ban co muon choi tiep ?
");
    printf("1. Co         2. Khong
");
    scanf("%d",&as);
}
}while (soHientai!=soBimat);
}while (as != 2);
}

lúc cho MAX = 99 thì nó phan lên < 1000000 wtf??

Quân viết 02:24 ngày 01/10/2018
switch(gioi_han_bang_so)
{
    case 1 :
        MAX = 99;
    case 2 :
        MAX = 199;
    case 3 :
        MAX = 299;
}

sau mỗi case trong switch cần phải có break; nếu không switch sẽ thực hiện tất cả các case ở sau case hợp lệ đầu tiên, thứ 2

int taoSobimat(int MAX)
{
    const int MIN =0;
    int socan=0;
    srand(time(NULL));
    socan = (rand()%(MAX - MIN +1))+MIN;
    return taoSobimat;
}

biến taoSobimat ở đâu chui ra cho bạn return vậy, thứ mà bạn return ra rất có khả năng là địa chỉ hàm taoSobimat, mình đoán hẳn là bạn phải return socan ra thì mới chuẩn.
Ngoài ra srand() chỉ nên gọi 1 lần duy nhất cho cả chương trình, do đó nên đưa srand() ở ngay đầu chương trình, câu lênh đầu tiên trong hàm main(){}

int main(int argc, char *argv[])
{
    srand(time(NULL));
    // all the rest stuff in your old main function ............
}
Bài liên quan
0