猜数字小游戏

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;

}

全部评论

相关推荐

不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务