c语言那些有趣的事 -- 猜数字游戏

news2024/9/25 1:18:50

📕博主介绍:目前大一正在学习c语言,数据结构,计算机网络。

c语言学习,是为了更好的学习其他的编程语言,C语言是母体语言,是人机交互接近底层的桥梁。

本章用循环去写一些题目。

让我们开启c语言学习之旅吧!

目录

一.前言

二.打印菜单

三.生成随机数

四.猜数字

五.总结


一.前言

        经过前面一系列的学习,我们对循环分支,有了一定的了解。我们能不能把之前学过的东西很好的串联起来呢?用之前学过的东西来写一个猜数字游戏,写完之后你会发现非常有成就感,让我们更加有动力有信息的学下去。

        首先写这个东西之前我们要对他进行一些分析,需要哪些功能呢?大致可以分为这几个模块,打印菜单,生成一个数字,根据用户输入的信息进行判断并且反馈给用户。

二.打印菜单

        在玩游戏之前,用户会看菜单进行选择。在这个游戏中可以给用户两种选择:1.玩游戏,2.退出游戏。通过分析,写出了这样一个代码。

这个逻辑是实现了,可是程序会有一些缺陷,只会进行一次判断,当玩了一把不过瘾怎么办?应该对程序进行一些优化,把这个过程循环起来。

        这个时候程序就可以进行多次选择判断了, 我认为在这种场景下用do while循环会比较合适,在任何情况下都会执行一次程序,当我们输入0的时候循环条件不成立,就终止循环退出游戏。

 到了这一步这个程序的基本框架就已经写出来了,接下来就把程序的具体功能实现出来。

三.生成随机数

  生成一个随机数是这个程序的灵魂,也是最难的地方。   

        c语言有一个函数rand可以生成一个随机数,他的头文件是<stdlib.h>。rand函数要和srand配合使用,srand是一个初始化随机数生成器。如果想要正确的使用srand就要给srand传递一个变化的值,计算机上的时间是时刻发生变化的。

代码如下

int ret=rand();
srand((unsigned int)time(NULL));

注:time函数可以返回一个时间戳,time函数的头文件是<time.h>

 这样随机生成一个数字的问题就解决了,但是为了让游戏更加好玩需要限制范围,生成一个100以内的数字,任何数%100的结果都会在100以内。

代码如下

int ret=rand()%100;

关于随机生成一个数字的知识就学这么多,以我们现在的知识储备也很难学好,后期再慢慢来。

四.猜数字

        当生成了一个随机数之后就要进入猜数字环境了,在这里需要封装一个game函数,game函数的主要功能是更具用户输入的值进行判断。

比如说:a>猜大了:提醒猜大了,继续猜。

              b>猜小了:提醒猜小了,继续猜。

              c>猜对了:恭喜你,猜对了,游戏结束。

代码如下:

 注 :会进行重复的判断和输入,直到猜对执行break退出程序。

效果如下:

 整个程序的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
	printf("********************************\n");
	printf("************1.paly**************\n");
	printf("************0.exit**************\n");
	printf("********************************\n");
}
void game()
{
	int ret = rand()%100;
	int guess = 0;
	while (1)
	{
		printf("请输入你要猜的数字");
		scanf("%d", &guess);
		if (guess > ret)
		{
			printf("猜大了\n");
		}
		else if (guess < ret)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("恭喜你,猜对了\n");
			break;
		}
	}
}
int main()
{   
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		
		menu();
		printf("请输入>:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误\n");
			break;
		}
	} while (input);
	return 0;
}

五.总结

        突然发现我们已经可以写出一个70行左右代码的程序了,这是一种成长。相信读者从文章中,可以感受到我们是需要什么写什么。有个术语专门描述这种思路,“TDD”测试驱动开发,根据需要,敲出代码进行测试,这个过程就是在驱动我们进行开发。

   

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

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

相关文章

细谈抽象类

目录 抽象类 1.抽象类是被abstract修饰的类 2.抽象类中的抽象方法 3.抽象类中可以有和普通类一样的成员变量和成员方法 4.抽象类不能被实例化 5.那么抽象类不能被实例化要它有何用&#xff1f;&#xff1f;&#xff1f; 6.注意&#xff1a; 抽象类 如果一个类中没有包含足…

基于Open3D的点云处理4-旋转、平移、缩放

三维变换主要包括&#xff1a;平移、旋转、缩放 在open3d中&#xff0c;针对三维对象的变换主要有translate、rotate、scale和transform • Translate 平移 • Rotate 旋转 • Scale 缩放 • Transform 变换矩阵&#xff08;4*4&#xff09; mesh_tx mesh.translate((1.5, …

昆山杜克大学首届毕业生就业情况

昆山杜克大学本科教育以通识博雅课程和跨学科教育为主要特色&#xff0c;倡导文理兼修&#xff0c;并以研究为导向。所有学生入学时不分专业&#xff0c;他们充分地自由选课探索之后&#xff0c;于大二结束之前选择最适合自己的专业。首届毕业生分布于以下12个专业。 教育理念是…

《SQLi-Labs》03. Less 11~15

sqli Less-11知识点题解 Less-12题解 Less-13题解 Less-14题解 Less-15知识点题解 sqli。开启新坑。 Less-11 知识点 第十一关页面发生了变化&#xff0c;是账户登录页面。那么注入点在输入框。 前十关使用的是 get 请求&#xff0c;参数都体现在 url 上&#xff0c;而十一关…

测试2:基础

目录 1.软件测试的生命周期 2.描述BUG 3.定义bug的级别 1.Blocker(崩溃) 2.Critical(严重) 3、Major&#xff08;一般&#xff09;&#xff1a; 4、Minor&#xff08;次要&#xff09;&#xff1a; 4.BUG的生命周期 1.软件测试的生命周期 需求分析,测试计划,测试设计,测…

实施CRM目标有哪几步?如何制定CRM目标?

在当今竞争激烈的商业环境中&#xff0c;与客户建立持久的关系是企业重要的工作。CRM客户管理系统能有效帮助企业管理优化流程、管理客户&#xff0c;提高销售成功率&#xff0c;推动收入增长。那么您了解如何实施CRM吗&#xff1f;下面说说实施CRM目标是什么&#xff0c;如何设…

Python小姿势 - # 字典(Dictionary)

字典&#xff08;Dictionary&#xff09; 字典是另一种可变容器模型&#xff0c;且可存储任意类型对象。 字典的每个键值 keyvalue 对用冒号 : 分割&#xff0c;每个对之间用逗号 , 分割&#xff0c;整个字典包括在花括号 {} 中 ,格式如下所示&#xff1a; d {key1 : value1, …

CSDN 周赛 50 期

CSDN 周赛 50 期 1、题目名称&#xff1a;订班服2、题目名称&#xff1a;异或和3、题目名称&#xff1a;零钱兑换4、题目名称&#xff1a;小艺照镜子小结 1、题目名称&#xff1a;订班服 小A班级订班服了&#xff01; 可是小A是个小糊涂鬼&#xff0c;整错了好多人的衣服的大小…

2022年NOC大赛编程马拉松赛道复赛图形化高年级A卷-正式卷,包含答案

目录 单选题: 多选题: 编程题: 下载打印文档做题: 2022年NOC大赛编程马拉松赛道复赛图形化高年级A卷-正式卷,包含答案 单选题:<

搭建Linux依赖环境

目录 1、jdk&#xff08;基于yum进行安装 &#xff09; 2、Tomcat &#xff08;手动下载安装&#xff09; 3、MariaDB&#xff08;基于yum进行安装&#xff09; 安装 启动 测试连接 1、jdk&#xff08;基于yum进行安装 &#xff09; 可以使用yum list | grep [关键词…

js基础1

一.js中的变量 a.var,let ,const的异同 1.var var在不进行初始化的条件下的值为undefined,它的作用域是函数作用域&#xff0c;在使用var在函数的内部定义一个变量的时候&#xff0c;意味着该变量在退出前进行销毁。并且它可以进行变量提升。 例子&#xff1a; function f…

操作系统概述(一、并发)

系列文章目录 文章目录 系列文章目录前言定义 一、操作系统发展史1940s的程序1950s的计算机1960s的计算机1970s 基本和现代一样了 others 二、程序状态模型从不同视角看程序&#xff1a; 操作系统上的程序 三、线程库四、程序并发五、自旋锁与互斥锁的实现自旋锁的使用场景 六、…

21 brk 的初始化

前言 这个问题是 衍生自 malloc 的问题的调试 malloc 虚拟内存分配的调试(1) malloc 虚拟内存分配的调试(2) 假设我们使用 gdb 或者 gdbserver 启动调试的该测试用例对应的可执行程序 我们可以观察到的现象是 p1, p2, p3 的地址是固定的, 均是类似于 elf 中最大的虚拟地…

基于vue3+pinia2仿ChatGPT聊天实例|vite4.x仿chatgpt界面

使用vue3pinia2开发仿制chatgpt界面聊天实例Vue3-Chatgpt 基于Vue3.xPinia2VueRouterVue3-Markdown等技术构建仿ChatGPT网页端聊天程序。支持经典分栏界面布局、light/dark模式、全屏半屏显示、Markdown语法解析、侧边栏隐藏等功能。 技术框架 编辑工具&#xff1a;Cursor框架…

精炼计算机网络——物理层(二)

文章目录 前言2.4信道复用技术2.4.1 频分复用、时分复用和统计时分复用2.4.2 波分复用2.4.3 码分复用 2.5 数字传输系统2.6 带宽接入技术2.6.1 ADSL技术2.6.2 光纤同轴混合网&#xff08;HFC网&#xff09;2.6.3 FTTx技术 总结 前言 上篇文章&#xff0c;我们初步了解了物理层…

国考省考结构化面试:应急应变事件处理,宏观全面把控,措施有效具体,着眼当前放眼未来,标本兼治

国考省考结构化面试&#xff1a; 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要的还是申论和行测&#xff0c;所以大家认真准备吧&#xff0c;我讲一起屡屡申论和行测的重要知识点 遇到寒…

idea 创建java项目,引入第三方jar,打包jar包

目录 一、新建并运行项目二、下载第三方Jar三、引入第三方Jar四、将项目打成Jar包 一、新建并运行项目 前提&#xff1a;已安装好JDK&#xff0c;并且配置好了JDK环境变量。 直接点击create创建即可 刚创建完的项目可能是没有out目录的&#xff0c;当我们执行一次main方法&…

Gradio的web界面演示与交互机器学习模型,安装和使用《1》

如何快速地将机器学习模型&#xff0c;给创建和分享出去&#xff0c;让更多的人来体验&#xff1f;Gradio就是一种快速搭建web界面来演示机器学习模型的方式&#xff0c;任何人都可以在任何地方使用它。 官网地址&#xff1a;https://gradio.app/ 1、安装Gradio 前提条件:Gra…

YOLOv5:图解common.py常用模块

YOLOv5&#xff1a;图解common.py常用模块 前言前提条件相关介绍common.py基本模块ConvBottleneckBottleneckCSPC3SPPSPPFFocus未完待续 参考 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可点击进入YOLO系列专栏或我的个…

jieba分词(1):入门案例

1 场景介绍 大数据量的查询问题 假设我们要从商品的表里面查询一个商品 我们的数据库里面肯定有个t_goods的表&#xff0c;我们现在利用商品的名称做模糊查询 1.1 对于数据库的查询的 select * from t_goods where goodsName like “%手机%” ; 问题&#xff1a; 这个查询…