5猜数游戏

目录

1题目

2相关函数

3示例代码


输和赢之间没有绝对的界限,你只要不断的向前走,低谷也有可能会变成高点。

--  《全职高手》

1题目

写⼀个猜数字游戏

游戏要求:

  1. 电脑⾃动生成1~100的随机数

  2. 玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束

2相关函数

2.1rand

rand函数用于产生随机数,使用时要包含stdlib.h头文件。

#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
  printf("%d\n", rand());
  printf("%d\n", rand());
  printf("%d\n", rand());
  printf("%d\n", rand());
  printf("%d\n", rand());
  return 0;
}

rand函数产生的随机数是相对随机的,多次运行每次运行结果均为一样的,伪随机不是真正的随机。rand函数是对⼀个叫“种⼦”的基准值进⾏运算⽣成的随机数。产生结果均一样因为默认种子为1。

要生成a~b的随机数

a+rand()%(b-a+1);

整除的数说明rand()%a的结果都是属于0~a-1的,生成大于a的直接用a+rand()%a即可。小于b的话,rand()%(b-a+1)的结果属于0~b-a的,a再加上这个数值就是小于b的范围。比如要生成472~500的随机数,计算除500与472的差值然后+1,用随机数整除得到的就是0~28范围内的,已知472与500的差值为28,直接整除后得到数值为0~27,所以要加1,即rand()%(500-472+1)+472。

 printf("%d\n", rand()%100);//0~99
 printf("%d\n", rand()%100+1);//1~100
 printf("%d\n", rand()%100+100);//100~199
 printf("%d\n", rand()%100+101);//100~200
 printf("%d\n", rand() % (500-472+1) + 472);  // 472~500

2.2srand

使用rand函数前调用srand函数改变参数seed,种子在改变,随机数序列也会发生改变。srand函数不需要频繁调用,一次程序运行只需要调用一次。

void srand (unsigned int seed);

2.3time

#include <time.h>
time_t time(time_t *t);

运行程序时常以时间为种子,因为时间时刻发生变化。此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t并非空指针的话,此函数也会将返回值存在t指针所指的内存。使用时要包含<time.h>头文件。返回值是time_t类型的,本质上是32位或64位整型。time函数参数timer为空指针时返回的时间差叫做时间戳。

有两种使用方法,一种时传递空指针

time_t t1;
t1 = time(NULL);//t1=time(0);
printf("%ld", t1);

另一种将变量的地址传递给time参数,函数自动把结果传递给变量,不需要另外的赋值。

time_t t1;
time(&t1);

利用time函数返回值来设置种子,并强制转换为unsigned int类型,由此产生随机数,代码如下

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
  srand((unsigned int)time(NULL));
  printf("%d\n", rand());
  printf("%d\n", rand());
  printf("%d\n", rand());
  printf("%d\n", rand());
  printf("%d\n", rand());
  return 0;
}

这样多次运行产生的数据都不一样。

3示例代码

#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
  srand((unsigned int)time(NULL));//随机种子
  int num = rand() % 100 + 1;//猜的数字范围1~100
  for (int i = 0; i < 5; i++)//猜5次
  {
    int guess = 0; 
    printf("请输入你猜的数字\n");
    scanf("%d", &guess);
    if (num < guess)
      printf("猜大了\n");
    else if (num > guess)
      printf("猜小了\n");
    else
      printf("恭喜你猜中啦!\n");
  }
  printf("对不起,您的机会已经用完啦\n");
  printf("正确答案是%d\n", num);
  return 0;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值