【 C语言练习(4)—可自己设置游戏规则的猜数字游戏】

C语言练习(4)


文章目录

  • C语言练习(4)
  • 前言
  • 题目
  • 题目解析
  • 结果
  • 总结


前言

本次写的猜字游戏有两大优点,可重复玩游戏、可自己设置猜数字规则,通过猜数字游戏锻炼循环体和选择结构体


题目

  • 写一个给定猜数次数,100以内数字的猜数字游戏。要求:游戏可以重复的玩,当数字猜不对时候,把正确的数字打印出来

题目解析

  • 写一个给定猜数次数,100以内的猜数字游戏
    题目解读: 给定5次机会,如果5次内猜对数字,则挑战成功,如果5次内没有猜对,则失败。
    例如: 给定数字50,这个数你是不知道,给你5次机会来猜,五次机会中能猜对胜利

  • 第一步: 为了好看设置了游戏菜单

 printf("*********************\n");printf("***** 1、玩游戏    **\n");printf("***** 0、退出玩游戏**\n");printf("*********************\n");printf("请输入>:");scanf("%d", &num);
  • 第二步: 生成一个100以内随机数,可以使用srand、rand、time来创建一个随机
    srand() 函数用来初始化随机数的生成器的,可用srand给定随机生成数的种子
    rand() 用来生成随机数
    time() 函数可以用来捕获时间,在程序中我们一般是使用程序运行的时间(通俗讲就是电脑此刻时间)作为种子的,因为时间时刻在发生变化。
    详细描述请参考【研一小白零基础学习C语言(六)】里面详细写了如何生成一个随机数https://blog.csdn.net/weixin_56089319/article/details/144232387?spm=1001.2014.3001.5501
  srand((unsigned int)time(NULL));int r = rand() % 100 + 1;
  • 第三步: 创建一个循环体,选择1表示玩游戏,选择0表示退出函数使游戏可以重复玩,此过程用到do······while循环体,循环体里面包含一个选择体 switch,当输入1表示玩游戏,当输入0表示退出游戏,当输入其他游戏时表示输入错误
int main()
{int num = 0;srand((unsigned int)time(NULL));do{printf("*********************\n");printf("***** 1、玩游戏    **\n");printf("***** 0、退出玩游戏**\n");printf("*********************\n");printf("请输入>:");scanf("%d", &num);switch (num){case 1:game();//游戏函数case 0:printf("退出游戏\n");break;default://表示不做任何的处理printf("输入错误请重新输入\n");}//switch语句也可以用if语句来写,下面是提供if语句代码//if(num==1)//    printf("玩游戏\n");//else if (num == 0)//    printf("退出游戏\n");//else //    printf("输入错误请重新输入\n");} while(num);//当输入的为0或者不是1,程序将退出重新return 0;
}
  • 第四步: 写游戏规则函数,根据主函数中的srand生成随机种子,用r = rand() % 100 + 1;生成0~100的随机数,如果这里不理解请参照前面的【研一小白零基础学习C语言(六)】里面详细写了如何生成一个随机数https://blog.csdn.net/weixin_56089319/article/details/144232387?spm=1001.2014.3001.5501
  • 通过 for (i = count; i > 0; i–)循环体来设置猜数字的机会,如果机会用完数字没有才出来,将输出正确数字
void game()
{int r = rand() % 100 + 1;//生成0~100的随机数int guess = 0;int count = 0;int i = 0;printf("请设置猜数字机会:");scanf("%d", &count);for (i = count; i > 0; i--){printf("请猜数字:");scanf("%d", &guess);if (guess < r)printf("猜小了\n");else if (guess > r)printf("猜大了\n");else{printf("猜对了\n");break;}  }//这里为大家提供了while循环体结构//while (count)//{//    printf("请猜数字:");//    scanf("%d", &guess);//    if (guess < r)//        printf("猜小了\n");//    else if (guess > r)//        printf("猜大了\n");//    else//    {//        printf("猜对了\n");//        break;//    }  //    count--;//}if (i == 0){printf("挑战失败,机会已经用完,正确的值:%d\n",r);}}
  • 整个程序代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>void game()
{int r = rand() % 100 + 1;int guess = 0;int count = 0;int i = 0;printf("请设置猜数字机会:");scanf("%d", &count);//while (count)//{//    printf("请猜数字:");//    scanf("%d", &guess);//    if (guess < r)//        printf("猜小了\n");//    else if (guess > r)//        printf("猜大了\n");//    else//    {//        printf("猜对了\n");//        break;//    }  //    count--;//}for (i = count; i > 0; i--){printf("请猜数字:");scanf("%d", &guess);if (guess < r)printf("猜小了\n");else if (guess > r)printf("猜大了\n");else{printf("猜对了\n");break;}  }if (i == 0){printf("挑战失败,机会已经用完,正确的值:%d\n",r);}}int main()
{int num = 0;srand((unsigned int)time(NULL));do{printf("*********************\n");printf("***** 1、玩游戏    **\n");printf("***** 0、退出玩游戏**\n");printf("*********************\n");printf("请输入>:");scanf("%d", &num);switch (num){case 1:game();case 0:printf("退出游戏\n");break;default:printf("输入错误请重新输入\n");}//if(num==1)//    printf("玩游戏\n");//else if (num == 0)//    printf("退出游戏\n");//else //    printf("输入错误请重新输入\n");} while(num);return 0;
}

结果

在这里插入图片描述

在这里插入图片描述

总结

  • 当然游戏还有很多有趣的优化设计空间,比如我们是否可以改进程序使得可以连续玩三局,缩小数字范围到0~50等等设置,进一步提高程序可玩性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/889103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【4】数据分析基础(pandas中的series 1)

学习目标2 pandas模块的学习。 pandas是一个基于NumPy的模块&#xff0c;它的功能在于数据的筛选清洗和处理&#xff0c;与NumPy模块相比&#xff0c;pandas模块更擅长处理二维数据。 pandas模块主要有Series和DataFrame两种数据结构。 接下来&#xff0c;我们先学习Series…

创建项目,并且上传到git

第一步 本地新建新项目 第二步 git上新建空项目 第三步 将本地项目添加为git项目 1、复制初始化命令 在新建项目中登录git 2、将本地项目设置为git项目 在IDEA中执行一下命令 3、完成上述操作&#xff0c;IDEA会将本地项目识别为git项目&#xff0c;就可以执行git commit操…

Cisco Packet Tracer | Cisco Packet Tracer - VLAN 实验 - 交换机的 VLAN 划分

关注这个工具的其它相关笔记&#xff1a;Cisco Packet Tracer —— 使用教程合集-CSDN博客 0x01&#xff1a;VLAN 划分 - 单个交换机 0x0101&#xff1a;拓扑搭建流程 从软件底部拖出一台交换机&#xff08;笔者选择的型号是 2960 IOS15&#xff09;&#xff1a; 然后再拖出四…

ICP和EDI许可证办理审核专用的网站系统源码程序下载—专供审核易过使用

在现代互联网及电子商务企业中&#xff0c;ICP许可证和EDI许可证不仅是法律要求&#xff0c;更是企业立足市场的重要基础。这两种许可证能够帮助企业爬梳合规问题&#xff0c;规避法律风险&#xff0c;并提升自身的信誉&#xff0c;增强客户的信任感。本文将详细介绍ICP许可证和…

MySQL Binlog 日志监听与 Spring 集成实战

MySQL Binlog 日志监听与 Spring 集成实战 binlog的三种模式 MySQL 的二进制日志&#xff08;binlog&#xff09;有三种常见的格式&#xff1a;Statement 模式、Row 模式和Mixed 模式。每种模式的设计目标不同&#xff0c;适用于不同的场景&#xff0c;以下是它们的详细对比和…

攻防世界安卓刷题笔记(新手模式)1-4

1.基础android 进入后是这样的页面。查看源代码看看。首先要注意这个软件并没有加壳&#xff0c;所以我们可以直接着手分析。搜索错误提示“Failed”定位到关键代码&#xff0c;看样子就是检验输入的内容 注意到这里有一行关键代码&#xff0c;cond_39对应的正是failed那个地方…

C++核心day3作业

作业&#xff1a; 1.整理思维导图 2.整理课上代码 3.把课上类的三个练习题的构造函数写出来 函数全部类内声明&#xff0c;类外定义 定义一个矩形类Rec&#xff0c;包含私有属性length、width&#xff0c;包含公有成员方法&#xff1a; void set_length(int l); //设置长度v…

Scala:正则表达式

object test03 {//正则表达式def main(args: Array[String]): Unit {//定义一个正则表达式//1.[ab]:表示匹配一个字符&#xff0c;或者是a&#xff0c;或者是b//2.[a-z]:表示从a到z的26个字母中的任意一个//3.[A-Z]:表示从A到Z的26个字母中的任意一个//4.[0-9]:表示从0到9的10…

可视化建模以及UML期末复习篇----UML图

这是一篇相对较长的文章&#xff0c;如你们所见&#xff0c;比较详细&#xff0c;全长两万字。我不建议你们一次性看完&#xff0c;直接跳目录找你需要的知识点即可。 --------欢迎各位来到我UML国&#xff01; 一、UML图 总共有如下几种&#xff1a; 用例图&#xff08;Use Ca…

[创业之路-191]:《华为战略管理法-DSTE实战体系》-2-BLM战略规划与执行的基本框架

目录 一、战略规划&#xff1a;BLM的核心内容 1. 战略规划部分 2 战略执行部分&#xff08;战略解码&#xff09; 二、BLM模型对企业战略制定和执行的价值 2.1 说法1&#xff1a; 1、共同的目标 2、同一种语言&#xff1a;提高团队协作效率 3、最基本的方法 4、执行的…

go引入skywalking

前置条件&#xff1a;安装好jdk11&#xff0c;linux服务器&#xff08;centos7.9&#xff09;&#xff0c;go版本&#xff08;我的是1.18&#xff0c;1.21都可以&#xff09; 1.下载skywalking Downloads | Apache SkyWalking 2.下载agent源码 Downloads | Apache SkyWalkin…

操作系统Lesson11 - 进程调度和批处理系统调度

文章目录 调度三个问题&#xff1a; 进程行为何时调度调度分类依据时钟中断来分类系统环境分类 调度 调度&#xff1a; 一个程序。 调度对象&#xff1a;进程和内核级线程。 1.调度程序调度P1&#xff0c;读取PCB块在CPU中恢复它的现场(ctx)&#xff1b; 2.当CPU执行完了P1之…

java各种锁介绍

1. synchronized锁&#xff1a; • 定义&#xff1a;Java内置的关键字锁&#xff0c;用于实现线程间的同步。它可以修饰方法或代码块。 • 特性&#xff1a;隐式获取和释放锁&#xff0c;自动处理锁的粒度&#xff08;方法级或代码块级&#xff09;&#xff0c;支持重入性。 •…

国产化(三):中间件——东方通TongWeb7.0

一、准备工作 1、软件包和license文件 2、检查jdk是否安装 二、安装 1、创建tongweb文件夹 我是把软件包放在了桌面&#xff0c;通过命令将软件包移动到指定文件夹下。 1—切换到opt文件夹 cd /opt 2—查看文件夹里的文件 ls 3—创建tongweb文件夹 sudo mkdir tongweb 4—检…

Java面试题精选:设计模式(二)

1、装饰器模式与代理模式的区别 1&#xff09;代理模式(Proxy Design Pattern ) 原始定义是&#xff1a;让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问&#xff0c;并允许将请求提交给对象前后进行一些处理。 代理模式的适用场景 功能增强 当需要对一个对…

Java版-图论-最小生成树-Prim算法

实现描述 如图&#xff1a; Prim算法的基本思想是从一个顶点开始&#xff0c;逐步构建最小生成树。具体步骤如下&#xff1a; 随机选取一个顶点作为起始点&#xff0c;并将其加入最小生成树的集合中。从该顶点出发&#xff0c;选择一条边连接到其他未被访问的顶点中的最小权…

Linux WEB服务器的部署及优化

1.用户常用关于web的信息 1.1.什么是www www是world wide web的缩写&#xff0c;及万维网&#xff0c;也就是全球信息广播的意思。 通常说的上网就是使用www来查询用户所需要的信息。 www可以结合文字、图形、影像以及声音等多媒体&#xff0c;超链接的方式将信息以Internet…

【HarmonyOS学习日志(13)】计算机网络之TCP/IP协议族(二)

文章目录 TCP/IP协议族ARPDNS标志字段&#xff1a;协商具体的通信方式和反馈通信状态DNS查询问题的格式资源记录&#xff08;Resource Record, RR&#xff09;格式&#xff1a;被用于应答字段、授权字段和额外信息字段 IP协议IP服务的特点无状态无连接不可靠 IP头部结构IPv4头部…

Python + Playwright:集成 Applitools 进行视觉回归测试(快速入门)

集成 Applitools 进行视觉回归测试(快速入门) 简介Applitools 的核心特点Applitools 的应用场景1. 准备工作2. 获取示例项目2.1 下载示例代码2.2 安装依赖2.3 选择测试运行方式3. 代码解析3.1 测试用例示例4. 运行测试4.1 设置 Applitools API 变量4.2 设置 Applitools Eyes …

javaScript交互补充

1、元素的三大系列 1.1、offset系列 1.1.1、offset初相识 使用offset系列相关属性可以动态的得到该元素的位置&#xff08;偏移&#xff09;、大小等 ●获得元素距离带有定位祖先元素的位置 ●获得元素自身的大小&#xff08;宽度高度&#xff09; ●注意&#xff1a;返回的…