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??
Bài liên quan
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
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(){}