猜数字游戏C语言代码实现

简介: 猜数字游戏C语言代码实现

一、问题描述

1.随机产生一个100到200的随机整数

2.猜测产生的数字,根据猜测数据的正确性以及大小给出反馈

3.游戏可以连续进行

4.每次游戏限制猜测次数

二、思路

1.主函数 实现循环游戏的主体

2.game()函数实现产生随机数并猜数字的过程

3.menu()函数封装游戏菜单

 

三、代码实现

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
 
void menu()
{
  printf("**********************\n");
  printf("**输入数字1 开始游戏**\n");
  printf("**输入数字0 退出游戏**\n");
  printf("**********************\n");
}
 
void game()
{
  int a = 100 + rand() % 101;//存放产生的随机数
  int temp = 0;              //临时变量存储猜测值 
  int count = 5;             //记录剩余机会
  printf("请输入您的猜测值\n");
  
  while (count)              //当剩余机会为0,不再执行循环
  {
    printf("您的剩余机会为%d\n", count);
    scanf("%d", &temp);
    if (temp > a)
    {
      printf("猜大了\n");
      count--;
    }
    else if (temp < a)
    {
      printf("猜小了\n");
      count--;
    }
    else
    {
      printf("回答正确\n");
      break;           //猜对时,跳出while循环
    }
  }
  if (count == 0)
  {
    printf("很遗憾,您的机会已用尽,正确答案为%d\n", a);
  }
}
 
int main()
{
  srand((unsigned int)time(NULL)); //用时间戳来产生rand函数的种子
  int n = 0;      //用于存储游戏指令值的标志变量
  do
  {
    menu();
    scanf("%d", &n);
    switch(n) 
    {
      case 1:
        game();
        break;
      case 0:
        printf("退出游戏\n");
        break;
      default:
        printf("指令错误,请重新输入\n");
        break;
    }
  } while (n);
  return 0;
}

四、随机数的实现

1.rand()函数

C语⾔提供了库函数rand,可以用于生成随机数

CPlusPlus中关于该函数的介绍 →   rand - C++ Reference (cplusplus.com)

函数原型int rand (void);

头文件:stdlib.h

返回值的范围:0~RAND_MAX(⼤部分编译器上是32767)

注意:rand()函数生成的随机值是伪随机值,其原理是根据一个“种子”按照某种算法所得,⼀次运⾏中产⽣的多个结果是相对随机的,但是程序多次运行时,结果是完全相同的

所以单靠rand()函数无法实现真正的随机数生成

2.srand()函数

C语⾔中提供了库函数函数srand(),⽤来初始化随机数的⽣成器

CPlusPlus中关于该函数的介绍srand - C++ Reference (cplusplus.com)

srand的原型 void srand (unsigned int seed);

头文件:stdlib.h

参数: unsigned int类型的seed参数(种子)——在程序中我们⼀般是使用程序与运行的时间作为种子的,因为时间时刻在发生变化的

说明:程序中在调⽤rand()函数之前先调⽤srand()函数,通过srand()函数的参数seed来设置rand()函数⽣成随 机数的时候的种子,只要种子在变化,每次⽣成的随机数序列也就变化起来——srand函数是不需要频繁调⽤的,一次运行的程序中调用一次就可以

3.time()函数

C语⾔中提供了库函数time(),可以获得这个时间

CPlusPlus中关于该函数的介绍time - C++ Reference (cplusplus.com)

time函数原型 : time_t time (time_t* timer);

头文件: time.h

返回值:time_t类型,本质上是32位或者64位的整型类型(time函数会返回当前的日历时间,其实返回的是1970年1月1日0时0分0秒到现在程序运⾏时间之间的 差值,单位是秒)

注意:  time函数的参数timer,如果是⾮NULL的指针的话,函数也会将这个返回的差值放在timer指向的内存 中带回去。 如果timer是NULL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做:时间戳

4.随机数的生成

总结——最终,我们可以先使用  srand((unsigned int)time(NULL));  ——使用time函数的返回值作为srand函数的参数,调用srand()函数就可以初始化种子

接下来,再调用rand()函数的时候得到的就是一个真正的随机值(再次声明,srand函数是不需要频繁调⽤的,一次运行的程序中调用一次就可以

五、VS2022运行截图

 

相关文章
|
25天前
|
C语言
C语言之斗地主游戏
该代码实现了一个简单的斗地主游戏,包括头文件引入、宏定义、颜色枚举、卡牌类、卡牌类型类、卡牌组合类、玩家类、游戏主类以及辅助函数等,涵盖了从牌的生成、分配、玩家操作到游戏流程控制的完整逻辑。
62 8
|
25天前
|
存储 安全 数据管理
C语言之考勤模拟系统平台(千行代码)
C语言之考勤模拟系统平台(千行代码)
45 4
|
2月前
|
C语言
扫雷游戏(用C语言实现)
扫雷游戏(用C语言实现)
109 0
|
15天前
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
22天前
|
存储 安全 物联网
C语言物联网开发之设备安全与代码可靠性隐患
物联网设备的C语言代码安全与可靠性至关重要。一是防范代码安全漏洞,包括缓冲区溢出和代码注入风险,通过使用安全函数和严格输入验证来预防。二是提高代码跨平台兼容性,利用`stdint.h`定义统一的数据类型,并通过硬件接口抽象与适配减少平台间的差异,确保程序稳定运行。
|
16天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
42 1
|
17天前
|
存储 算法 C语言
用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容
本文探讨了用C语言开发游戏的实践过程,包括选择游戏类型、设计游戏框架、实现图形界面、游戏逻辑、调整游戏难度、添加音效音乐、性能优化、测试调试等内容,旨在为开发者提供全面的指导和灵感。
34 2
|
1月前
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
32 1
|
2月前
|
C语言 C++
【C语言】编写“猜数字“小游戏
【C语言】编写“猜数字“小游戏
100 1
|
2月前
|
C语言
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)
深入C语言指针,使代码更加灵活(三)