【 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.rhkb.cn/news/487506.html

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

相关文章

【Vulkan入门】08-CreateRenderPass

目录 先叨叨git信息关键代码TestPipeLine::CreateRenderPass() 先叨叨 上篇已经为Pipeline编写好了程序&#xff08;Shader&#xff09;。接下来要为Pipeline创建RenderPass。 关于RenderPass&#xff0c;在【Vulkan入门】06-Pipeline介绍中已经作了简单的介绍。这里再详细说一…

【GitHub分享】you-get项目

【GitHub分享】you-get 一、介绍二、安装教程三、使用教程四、配置ffmpeg五&#xff0c;卸载 如果大家想要更具体地操作可去开源网站查看手册&#xff0c;这里只是一些简单介绍&#xff0c;但是也够用一般&#xff0c;有什么问题&#xff0c;也可以留言。 一、介绍 you-get是一…

【新】ApiHug官方文档-框架介绍-1/10

ApiHug SDK 扩展 https://apihug.com/zhCN-docs/frameworkApiHug SDK 扩展https://apihug.com/zhCN-docs/framework ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplacehttps://plugins.jetbrains.com/plugin/23534-apihug--api-design-copilot 快速开启 - …

06-标准库开发-STM32-SPI通信协议软件实现

八、SPI协议在STM32中的软件实现 8.1 SPI协议简介 SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外设接口&#xff09;是由Motorola公司开发的一种同步串行数据通信总线。它主要用于微控制器与外设之间的短距离通信&#xff0c;如传感器、显示屏、存储器模块等…

C++ 中的隐式类型转换与强制类型转换详解

在 C 中&#xff0c;类型转换是一个非常重要的概念&#xff0c;涉及从一种数据类型向另一种数据类型的转换。本文将从 隐式类型转换 和 强制类型转换 两个方面详细探讨它们的行为和注意事项&#xff0c;特别是高位和低位的处理。 一、隐式类型转换 隐式类型转换&#xff08;Im…

Redis篇-5--原理篇4--Lua脚本

1、概述 Redis 支持使用 Lua 脚本来执行复杂的操作&#xff0c;这为 Redis 提供了更强的灵活性和性能优化能力。通过 Lua 脚本&#xff0c;你可以在服务器端执行一系列命令&#xff0c;而不需要多次往返客户端与服务器之间&#xff0c;从而减少了网络延迟并提高了效率。此外&a…

Muduo网络库解析---事件循环模块

文章目录 前言ChannelChannel代码Channel.hChannel.cc PollerPoller代码Poller.hPoller.cc EpollPollerEpollPoller代码EpollPoller.hEpollPoller.cc EventLoopEventLoop代码EventLoop.hEventLoop.cc 类图 前言 重写Muduo库实现核心模块的Git仓库 注&#xff1a;本文将重点剖…

全面解析Node.js版本管理工具NVM

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;NVM&#xff08;Node Version Manager&#xff09;是一个强大的工具&#xff0c;用于在不同项目中管理多个Node.js版本。通过NVM&#xff0c;开发者可以轻松切换环境&#xff0c;优化工作流程&#xff0c;并提升…

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题②

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题② 模块A 基础设施设置与安全加固(200分)A-1 登录安全加固&#xff08;Windows, Linux&#xff09;A-2 Nginx安全策略&#xff08;Linux&#xff09;A-3日志监控&#xff08;Windows&#xff09;A-4中间件…

常用环境部署(二十四)——Docker部署开源物联网平台Thingsboard

1、Docker和Docker-compose安装 参考网址如下&#xff1a; CENTOS8.0安装DOCKER&DOCKER-COMPOSE以及常见报错解决_centos8安装docker-compose-CSDN博客 2、 Thingsboard安装 &#xff08;1&#xff09;在/home目录下创建docker-compose.yml文件 vim /home/docker-com…

Python定位Span标签中的文字:实战指南

目录 一、准备工作 二、基本流程 三、代码示例 四、案例分析 五、进阶技巧 处理多个标签&#xff1a; 根据其他属性定位&#xff1a; 结合XPath&#xff1a; 使用Selenium&#xff1a; 六、注意事项 七、总结 在网页数据抓取和信息提取的过程中&#xff0c;经常需要…

【K8S系列】在 Kubernetes 中使用 Prometheus 进行监控的详细指南

Prometheus 是一个开源的监控和报警工具&#xff0c;广泛用于 Kubernetes 环境中。本文将深入探讨如何通过 Kubernetes 中的注解配置 Prometheus 的抓取设置&#xff0c;以高效监控服务&#xff0c;并确保系统的可靠性和可维护性。 一、Prometheus 简介 Prometheus 是一个功能…

网页核心页面设计(第7章)

一、生态家居网页 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevi…

Unix、GNU、BSD 风格中 ps 参数的区别

注&#xff1a;本文为“不同风格中 ps 命令参数的区别”相关文章合辑。 未去重。 BSD 风格和 UNIX 风格中 ps 参数的区别 作者&#xff1a;Daniel Stori 译者&#xff1a;LCTT Name1e5s | 2017-06-17 10:53 One Last Question ps aux 以及 ps -elf 都是查看进程的方式&…

vue前端实现导出页面为word(两种方法)

将vue页面导出为word文档&#xff0c;不用写模板&#xff0c;直接导出即可。 第一种方法(简单版) 第一步&#xff1a;安装所需依赖 npm install html-docx-js -S npm install file-saver -S第二步&#xff1a;创建容器&#xff0c;页面使用方法&#xff08;简单版&#xff1…

【C++】map

map 可以看到&#xff0c;map也有map和multimap两种。 可以看到第一个参数Key是key&#xff0c;第二个T其实就是value。第三个参数可以看出只有Key参与比较&#xff0c;value不进行比较。 map的Key就是map底层关键字的类型&#xff0c;T是map底层value的类型&#xff0c;set默…

专题一:斐波那契数列模型算法

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是记忆化搜索&#xff0c;并且掌握记忆化搜索算法。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早…

基础算法——搜索与图论

搜索与图论 图的存储方式2、最短路问题2.1、Dijkstra算法&#xff08;朴素版&#xff09;2.2、Dijkstra算法&#xff08;堆优化版&#xff09;2.3、Bellman-Ford算法2.4、SPFA求最短路2.5、SPFA判负环2.6、Floyd算法 图的存储方式 2、最短路问题 最短路问题可以分为单源最短路…

Linux下mysql环境的搭建

1.mysql的下载 去MySQL官网下载mysql的linux压缩包 MySQL :: Download MySQL Community Server 如果下载慢请到网盘中自行下载 通过网盘分享的文件&#xff1a;mysql-8.0.40-1.el7.x86_64.rpm-bundle.tar 链接: https://pan.baidu.com/s/1vUJ-VuTwer1nLPT-haQCqw?pwd6342 提…