用C语言实现猜数字游戏
要实现的功能:
- 自动产生一个1~100的随机数。
- 猜数字 - a、猜大了,就恭喜你,游戏结束 b、猜错了,会告诉你是猜大了还是猜小了
- 这个游戏你可以一直玩,直到游戏结束
首先我们要制作一个菜单:
#include <stdio.h>
void menu()
{printf("####################\n");printf("#### 1.paly #####\n");printf("#### 0.exit #####\n");printf("####################\n");}int main()
{menu();printf("进入或者退出(1/0):");return 0;
}
这个菜单会打印输出一个菜单;然后提示你是进入游戏还是退出游戏。这时我们需要从键盘上输入一个数并且要判断这个数是1/0/其他,然后用分支语句分别对输入的数做出不同的行为。
int main()
{int imput = 0;menu();printf("进入或者退出(1/0):");scanf("%d", &imput);switch (imput){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("输错了,请重新输入\n");break;}return 0;
}
由于我们要实现游戏可以一直玩,知道游戏结束,那么我们可以将主函数中的部分代码放入do - while循环当中,来实现这个功能。
不管imput输入的是什么,循环体都会先走一遍,然后再判断是不是要再进入循环。当imput的值为非0时,循环再次执行;当imput为0时,循环结束,游戏结束。
然后我们就要对进入游戏后要做的事进行编写了。我们的目的是要实现一个1~100的随机数。在C语言中有一个随机数生成函数:rand()。
void game()
{int rej = rand();printf("%d\n", rej);
}
但是这里我们发现,我们每次退出程序,再进入游戏,这个随机数都是41,这不符合我们想要的随机数的想法。这里的问题在于这个随机数生成函数在使用的时候需要使用srand()函数对其进行设定。下面是库函数rand()和srand()的说明。rand()和srand()的使用需要引入头文件
#include <stdlib.h>
那么我们应该怎样设置才能让这个数字随机起来呢,我们需要使用srand函数对rand函数进行设定,srand就是给rand随机数设定一个初识的值,就是从哪开始的。
srand((unsigned)time(NULL));
这里所用到的time函数,是使用了时间戳的概念。时间戳就是将系统现在的时间和初始的时间相减,得出的一个差值。
那么当我们把这个时间戳参数给srand函数之后,可以看到现在的每个随机数都离得很近,不是我们希望的那种随机数(也就是不够随机),为了解决这个问题,我们将这个srand函数放到循环外面,整个程序中只对rand设置一次,这样这个数就足够随机了。
接下来我们就要允许玩游戏的人输入一个数,然后程序对这个数和随机生成的数进行比较,然后给出提示来让玩游戏的人继续猜直到猜中。
全部代码:
#include <stdio.h>
#include <stdlib.h>void menu()
{printf("####################\n");printf("#### 1.paly #####\n");printf("#### 0.exit #####\n");printf("####################\n");}void game()
{int rej = rand()%100+1;int guess = 0;while (1){printf("请输入猜的数:");scanf("%d", &guess);if (guess < rej){printf("猜小了\n");}else if (guess > rej){printf("猜大了\n");}else{printf("恭喜你猜对了!!!\n");break;}}
}int main()
{int imput = 0;do{srand((unsigned)time(NULL));menu();printf("进入或者退出(1/0):");scanf("%d", &imput);switch (imput){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("输错了,请重新输入\n");break;}} while (imput);return 0;
}
这里对int rej = rand()%100+1 进行解释:rand()%100是一个0~99的余数,余数加一正好符合我们的需求。
游戏运行的效果为:
一定要认真地去理解这个程序的逻辑结构!加油吧!
用C语言实现猜数字游戏相关推荐
- c语言程序设计 猜数字,C语言程序设计(猜数字游戏)报告.doc
C语言程序设计(猜数字游戏)报告 <高级语言程序设计>课程设计 题目:班级:09R3 学生姓名:谢泽雄 学生学号:200931000622 指导老师:提交时间:华南农业大学信息(软件)学院 ...
- c语言编程题猜数字游戏6题,c语言编程—猜数字游戏.doc
c语言编程-猜数字游戏 计算机实习报告 面向过程编程 用C语言求解实际问题 一.问题描述 游戏类第15个任务--猜数字游戏 计算机从0-9这10个数字中任意选择n个不重复数字(n≤10)组成一个5位数 ...
- C语言编写猜数字游戏及随机数生成方法
C语言编写猜数字游戏及随机数生成方法 文章目录 C语言编写猜数字游戏及随机数生成方法 前言 一.猜数字小游戏 内容: 步骤: 代码的实现: 二.随机数生成的方法 总结 前言 对于C语言初学者来说,当我 ...
- c语言猜数字游戏用while,用C语言实现猜数字游戏
本文实例为大家分享了C语言实现猜数字的具体代码,供大家参考,具体内容如下 问题:计算机随机生成一个数字,用户进行猜数字,当用户猜错时,提醒用户猜高/猜低,直到用户猜的数字与计算机给的随机数一致时,提示 ...
- C语言实现猜数字游戏(通俗易懂)
文章目录 前言 一.代码思路: 1.游戏菜单: 2.主函数: 3.游戏函数: 二.游戏总体代码: 结尾: 前言 首先规划一下我们的猜数字游戏: 数字给定(1-100)的随机值,生成随机值的方法之前有讲 ...
- 用python做C语言的猜数字游戏,[Python3 练习] 007 简单的猜数字小游戏
题目:简单的猜数字小游戏 (1) 描述 程序随机生成一个数字,玩家用键盘输入所猜数字,在规定次数内猜对为胜. (2) 要求 程序随机生成一个 1 到 100 的自然数 有 7 次机会去猜 机会用尽之前 ...
- 【C语言】第一个C语言项目——“猜数字”游戏(内附源码)
君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello米娜桑,这里是君兮_,今天又抽空为大家更新我们的主线0基础C语言啦!鉴于最近讲解了非常多的选择语句与循环语句,咱们今天就来讲讲 ...
- 【C语言】-猜数字游戏
目录 一.猜数字游戏 1.什么是猜数字游戏? 2.怎么实现猜数字游戏? 1>.分析需要的功能 2>.随机数的产生 3>.system()函数 4>.总代码 二.猜数字游戏+关机 ...
- c语言作业 猜数字游戏,C语言实现猜数字小游戏
本文实例为大家分享了C语言猜数字的具体代码,供大家参考,具体内容如下 一.描述 猜数字游戏. 二. 程序 使用srand((unsigned)time(NULL)),产生随机数种子. int rand ...
- 喵呜:C语言实现猜数字游戏
编写代码实现,模拟用户登录情景,并且只能登录三次.(只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序.) 猜数字游戏实现 1.生成一个随机数 2.猜数字(猜大.猜小.猜对 ...
最新文章
- BUG系列:转让startActivityForResult()amp;onActivityResult()没有反应
- shell中source与sh区别
- vue获取输入框得内容_React入坑(四):获取输入框内的内容
- Excel TargetRange.Validation为空的
- 捷径app 保存视频_Android N App捷径
- 几个轻巧好用的代码检查工具!
- 解决 jq ui 弹框 select2 input 失效问题
- 电商技术中企业数据总线ESB和注册服务管理的区别
- SAN计算机,什么是SAN网络存储
- 医学计算机论文,医学图像数据库-外文翻译(计算机论文,医学论文适合)
- 女孩做妻子前应知道的10件事
- Java实现找回密码
- 市场的结构,各种投资方法的此消彼长,没有所谓圣杯
- 快讯 I Nexperia 超低电容 ESD 保护二极管保护汽车数据接口
- 理解linux cpu load - 什么时候应该担心了
- 【MATLAB编程】求斐波那契数列的第n项与前n项和
- 2年5个月13天,从外包到拿下阿里offer,没想到我也能有今天
- css img图片按比例缩小,保持图片不失真
- 【学习笔记】SpringMVC—@RequestMapping注解
- 使用J-Link启动海思3516最小系统