N年前在文曲星上玩过的最简单的游戏猜数字

时间:2022-07-15 16:18:17 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
文曲星上玩过的最简单的游戏猜数字!代码:





/*本代码是:猜数字游戏(可多局玩)的源代码!*/ #include

/*下面的rand()函数包含于头文件stdlib.h*/ #include #include main() {

int a=0,b=0; struct tm *newtime;

 long ltime; 

 while(1)  {

 printf("Hello, My friend,if you want to close this game,please input 'z'!\nIf you want to play this game,please input a char ,it isn't 'z'!\n");  if(getchar()=='z')  {

 break;  }  else  {

 time(<ime);

 newtime=gmtime(<ime);

 /*printf("%d",newtime->tm_sec);*/

 /*上面的printf语句是为了输出当前系统时间中的秒数。*/  a=rand()%100+rand()%(newtime->tm_sec);

 printf("Please guess the number(please input a interger number):\n");

 scanf("%d",&b);  while(1)  {

 if(a>b)  {

 printf("Your number is low!Please input again:\n");  scanf("%d",&b);  }  else  if(a  {

 printf("Your number is high!Please input again:\n");


 scanf("%d",&b);  }  else

 if(a==b)  {

 printf("OK!You are right!\n");  break;  }  }

 getchar();

 /*接受最后这个数,即正确数字输入后的回车符!*/  }  }  }



我第一次做的时候不是这样的,我当时仅仅用了rand()%100,这样以来程序虽然可以运行,但是太没意思了,因为每次猜的数字都一样,虽然第一次肯能要多次才能猜对,但是只要猜对后,下次猜时肯定还是这个数,只要记住这个数,除了第一次,以后每次猜时一次肯定能猜对。

这是因为rand()函数是个伪随机函数,即用这个函数产生的数都不是绝对的随机数,虽然现在我们没有办法产生绝对的随机数,但是我们有办法,产生一些改善的伪随机数,我当时就在想别人以前肯定也遇到过这类问题,网上肯定有解决办法,但是我还是想自己先动动脑子,如果实在做不出来,再去googlebaidu吧!

最后,我还是想出了自己的方法,由于随机数的特性是没有规律变化的,rand()函数只是实现了一次没有规律的数,但是没有变化。我当时在想计算机中哪种东西是变化的呢?最后我想到了系统时间。于是我的想法是在rand()%100的基础上,在与(rand()%(前系统时间的秒数))结合,这样就会产生相对效果好点的随机数了!具体实现见上面的代码吧!


本文来源:https://www.wddqw.com/doc/59319a1b3c1ec5da50e2708c.html