猜数字游戏

简介: 猜数字游戏

经过一段时间的C语言,现在可以试着写一个简单的小游戏,猜数字游戏

游戏介绍:

1.生成一个1~100随机数,玩家进行猜测,如果猜错了就提示猜大了或猜小了,玩家再次猜测,直到玩家猜对,输出恭喜你猜对了

2.可以重复进行游戏,玩完一次还可以继续玩


1.怎么生成随机数

C语言中提供了 srand() 和 rand() 和两个库函数,要包含头文件<stdlib.h>。


rand()函数可以生成0~32767之间的一个随机数字,如果只是用这个函数,它其实生成的数是伪随机的,不是真正的随机。


如果要做到真正的的随机,那么要配合srand()函数一起使用。srand()的括号内要输入一个值,每个值会生成一系列相同的随机数。所以每次运行程序括号内的值都要不同,这时可以利用计算机上的时间,因为他是不断在变化的。这时要用到time()函数,头文件<time.h>,可以返回一个时间戳,是time_t类型,实质是long long 类型。时间戳是现在的计算机的时间减去1970年1月1日0时0分0秒得到的秒数。这个是不断变化的。


要这样写:srand((unsigned int)time(NULL));  


time后NULL的作用是time函数要传入一个指针,可以是空指针NULL。


unsigned int 的作用是强制类型转换。因为srand()函数要传入一个无符号整形unsigned int 的数,所以把time()函数返回的long long 类型强制转换为unsigned int 类型。


srand()函数整个程序调用一次就可以。


2.代码

#include <stdio.h>
#include <stdlib.h>//rand srand函数
#include<time.h>//time函数
#include<Windows.h>//system函数
void menu()//打印菜单
{
  printf("**************************\n");
  printf("*****   猜数字游戏  ******\n");
  printf("*****     1.play    ******\n");
  printf("*****     0.exit    ******\n");
  printf("**************************\n");
}
void game()//游戏内容
{
  int guess = 0;
  //rand()函数可以生成一个随机数,随机数的范围是0~32767
  int goal = rand() % 100 + 1;//生成1到100的随机数
  while(1)
  {
    printf("请输入你要猜的数字:>");
    scanf("%d", &guess);
    if (goal == guess)
    {
      printf("恭喜你猜对了\n");
      break;//跳出
    }
    else if (goal < guess)
      printf("猜大了\n");
    else
      printf("猜小了\n");
  }
}
int main()
{
  int input = 0;
  //srand初始化随机数生成器,需要传入一个变化的值,类型为unsigned int
  //计算机上的时间是时刻发生变化的
  //现在时间减去1970年1月1日
  //time函数可以返回一个时间戳,是time_t类型,也就是long long int
  //整个程序调用一次就行
  srand((unsigned int)time(NULL));
  do//利用do while循环实现可以多次游戏
  {
    menu();//调用打印菜单函数
    printf("请输入:>");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      printf("游戏开始\n");
      game();
      system("pause");//暂停一下按任意键继续
      system("cls");//清理屏幕
      break;
    case 0:
      printf("退出游戏\n");
      break;
    default:
      printf("选择错误\n");
      system("pause");
      system("cls");
      break;
    }
  } while (input);//input为0时循环结束
  return 0;
}


运行截图:

相关文章
|
Shell Linux 计算机视觉
【Dlib】动作检测:以常见的人脸识别验证为例讲解张嘴与闭眼
【Dlib】动作检测:以常见的人脸识别验证为例讲解张嘴与闭眼
654 0
|
7月前
|
存储 Java
几种锁:偏向锁、轻量级锁、重量级锁、自旋锁
**锁机制简介:** Java中,锁分为偏向锁、轻量级锁和重量级锁。偏向锁适用于单一线程多次获取同一锁的情况,减少无竞争下的性能消耗;轻量级锁在多线程竞争时通过自旋避免阻塞,提升效率;重量级锁则是在自旋超时或多个线程竞争时,将其他线程阻塞以防止CPU空转,但性能较低。锁的升级路径为:偏向锁 → 轻量级锁 → 重量级锁,且不可降级。偏向锁默认开启,可通过JVM参数调整或关闭。
305 13
几种锁:偏向锁、轻量级锁、重量级锁、自旋锁
|
7月前
|
物联网 虚拟化 Windows
Windows 10 version 22H2 中文版、英文版下载 (2025 年 2 月更新)
Windows 10 version 22H2 中文版、英文版下载 (2025 年 2 月更新)
317 4
Windows 10 version 22H2 中文版、英文版下载 (2025 年 2 月更新)
|
6月前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
187 15
|
7月前
|
程序员 编译器 C语言
来,手把手带你写C语言的HelloWorld
本文介绍了如何使用Vscode进行C语言开发,包括安装必要插件、编写Hello World程序及代码解释。Feri强调了注释的重要性,以增强代码可读性和维护性,帮助开发者更好地协作与成长。君志所向,一往无前!
294 1
|
7月前
|
存储 人工智能 自然语言处理
2025年适用大中企业的CRM系统综合对比
在数字化转型浪潮中,CRM系统对大中型企业至关重要。本文对比了2025年适用于大中型企业的4款CRM系统:纷享销客、Salesforce、销售易和红圈CRM。从功能特点、集成拓展性、实施服务、客户评价四个维度展开分析,展现各系统优势与局限,为企业在选择CRM系统时,综合自身业务需求、预算和发展规划等因素做出决策提供参考。
|
Web App开发 移动开发 前端开发
技术经验分享:canvas+howler.js解决同页面视频、音频同时播放问题
技术经验分享:canvas+howler.js解决同页面视频、音频同时播放问题
409 0
|
11月前
|
数据挖掘 UED
ClkLog埋点分析系统支持漏斗分析
漏斗分析是基于事件的一种分析模型。 漏斗分析主要是对一个多步骤的场景进行的每一步的转化数据分析。可以理解为是从顶部(广泛数据)到底部(目标数据)逐步筛选和转化分析的过程。
ClkLog埋点分析系统支持漏斗分析
|
存储 监控 数据挖掘
飞轮科技携手观测云亮相云栖大会,全方位展示阿里云数据库 SelectDB 版核心优势
飞轮科技技术副总裁姜国强于「数据分析与洞察」专场分享[阿里云数据库 SelectDB 版在日志存储分析、实时报表生成、用户行为分析及 Lakehouse 场景应用方案
295 1
飞轮科技携手观测云亮相云栖大会,全方位展示阿里云数据库 SelectDB 版核心优势
|
Web App开发 人工智能 机器人
我们在外滩大会开源了一个小猫咪项目—— Peter Cat
嘿,还记得那些年你作为小白初入码圈,在 GitHub 上瑟瑟发抖求答疑的日子吗?文档看不懂到怀疑人生,代码理不清到人生自闭,issue 提了石沉大海,fork 项目自力更生,心里那个苦啊!
359 3