void menu()
{
printf("**********************\n");
printf("****** 1.play *****\n");
printf("****** 0.exit *****\n");
printf("**********************\n");
}
void game()
{
int guess = 0;
//1.生成随机数
//srand((unsigned int)time(NULL));//强制类型转换
//srand中需unsigned int(MSDN中查到)括号中若填入某固定值,rand生成的随机数在单次游戏中每次都是随机的,但是在重新运行函数后,rand生成的随机数跟前一次是一致的,是可以预测的,所以需要某变化值填入————时间戳。
//srand不该放在rand前,game函数中,在每次单次程序进程中,若第二次生成随机数字时距离上次时间短,很可能时间戳未变化或者变化很小,也就导致其生成随机数值未变化或变化很小,正确的方法是在main函数中设置一次即可,因为循环速度远快于时间戳的秒级变化。
//时间戳time_t time(time_t*timer)指针可为空指针NULL,返回值time_t经右键转到定义可知,其为整型类型longlong
int ret =rand()%100+1; //rand随机生成一个0~RANDMAX 0x7FFF 32767之间的值,我们所需的随机数为0~100,所以对rand的返回随机值进行%100操作
//经过printf观察结果,发现某次游戏中rand生成的值前后确实为随机值,但是在重新运行函数后,生成的值与前一次运行的完全一样,在MSDN中查阅rand函数了解发现其需要使用前使用srand函数设置
//printf("%d\n",ret);
//2.猜数字
while(1) {
printf("请猜猜数字吧\n");
scanf("%d",&guess);
if(guess>ret)
printf("大了\n");
else if(guess<ret)
printf("小了\n");
else {
printf("correct\n");
break;}
}
}
int main()
{
srand((unsigned int)time(NULL));
int input =0;
do
{
menu();
printf("chose please");
scanf("%d",&input);
switch(input)
{
case 1:
game();//
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新输入");
break;
}
}while(input);//input为非零时候均为真,继续循环,当选择0时候为假,退出循环
return 0;
}