经典猜数游戏

■具体要求:
1.由玩家自行输入一个整数,计算机随机生成一个在0至此整数之间的数请玩家猜,玩家输入猜的数;
2.如果猜对了,则输出“恭喜您,您猜对了!”,输出正确的数,及猜数次数,并提问玩家是否还要再玩一次,若玩家输入‘y’ 则继续猜数,若玩家输入‘n’ 则终止程序;3.如果猜错了,计算机会给出提示,指出玩家猜的数是太大,还是太小。

废话不多说直接上代码(写的注释没有那么专业 但是还是比较易懂的 )

/* Note:Your choice is C IDE */
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define random(x) (rand()%x)
void main()
{
 int right;   //存储产生的随机数
 int number;  //存储用户输入的数
 int x,t;     //x为猜数的最大范围,这里要用户自己输入,t用于存储猜过的次数
 char select; //字符型变量,用来确定是否还要再来一次
 t=0;
    printf("\n     ********************\n");
 printf("     *欢迎来到猜数字游戏*\n");
    printf("     ********************\n\n");
   do  //把猜数互动部分放在循环当中,后面的while用来判断是否还要再玩一次
   {
     printf("请先设置猜数的范围0~?,请输入一个整数:");
     scanf("%d",&x);
     srand((int)time(0));
  right=random(x);  //使right所取的数随机产生
  printf("您猜这个0~%d的数是多少呢:",x);//0~x为猜数范围
  scanf("%d",&number);//用户输入
  t++;//猜一次,t记一次数,也就是加一
  while(number!=right)//又是一个while,这个用于判断用户输入的的数和正确的数是否一致,一致就是猜对了,循环结束,不一致继续向下执行,给出提示
  {
   if(number>right)
   {
    switch((number-right)/10)
    {
     case 0:printf("加油,只大了一点点,再猜:");break;
     case 1:printf("数字大了不少,再猜:");break;
     case 2:printf("数字大太多了,再猜:");break;
     default:printf("数字大太多了,再猜:");break;
    }
   }
   else
   {
    switch((right-number)/10)
    {
    case 0:printf("加油,只小了一点点,再猜:");break;
       case 1:printf("数字小了不少,再猜:");break;
    case 2:printf("数字小太多了,再猜:");break;
        default:printf("数字小太多了,再猜:");break;
    }
   }
  scanf("%d",&number); //通过上边给出的提示再次输入一个数
  t++;
  }
  printf("恭喜你猜对了!\n");
  printf("您一共猜了%d次\n",t);
  printf("是否还要再玩一次?(y/n)\n");
     getchar();//用于消化用户使用过程中的回车符
     select=getchar();//用户输入是否还要再玩一次
   }
  while(select=='y'||select=='Y'); //根据用户输入的来判断用户是否还要继续玩下去,是 则继续执行do中的语句,否 则循环结束
  
}

另外:关于如何产生随机数
srand()用来设置rand()产生随机数时的随机数种子。在调用rand()函数产生随机数前,必须先利用srand()设好随机数种子(seed) , 如果未设随机数种子,rand()在调用时会自动设随机数种子为1。上面的两个例子就是因为没有设置随机数种子,每次随机数种子都自动设成相同值1,进而导致rand()所产生的随机数值都一样。srand()函数定义: void srand (unsigned int seed);通常可以利用geypid()或time(0)的返回值来当做seed如果你用time(0)的话,要加入头文件#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define random(x) (rand()%x)
void main()
{
srand((int)time());
for(int x=0;x<10;x++)
printf("%d\n",random(100));
}
这样两次运行的结果就会不一-样了! !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值