C语言—猜数字游戏的实现
目录
目录
完整的程序
打印菜单
主函数部分
生成随机数
猜数字函数的实现
我们已经学习到了C语言的一些基本知识和分支循环语句了,可以自己动一动手来尝试实现C语言—猜数字游戏了,为了猜数字程序的实现,应该要有以下几个功能:
1.程序会生成一个1~100之间的随机数。
2.猜数字的函数部分:
(1)猜小了,程序会告诉你猜小了,继续猜;
(2)猜大了,程序会告诉你猜大了,继续猜;
(3)猜对了,程序会告诉你:恭喜你猜对了,程序结束。
3.游戏可以重复运行。
完整的程序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>void menu()
{printf("********************\n");printf("***** 1.play ****\n");printf("***** 0.exit ****\n");printf("********************\n");
}void game()
{int ret = rand() % 100 + 1;int num = 0;while (1){printf("请猜数字:>");scanf("%d", &num);if (num < ret){printf("猜小了\n");}else if (num > 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;
}
执行结果:
打印菜单
通过printf函数打印出一个漂亮的菜单,以便以于对接下面循环语句的实现。
#include<stdio.h>void menu()//打一个漂亮的菜单
{printf("********************\n");printf("***** 1.play ****\n");printf("***** 0.exit ****\n");printf("********************\n");
}int main()
{int input = 0;do{//打印菜单menu();printf("请选择:>");scanf("%d", &input);//这里要实现游戏的开始和退出//可以考虑使用switch循环} while (input);//使游戏可以重复return 0;
主函数部分
我们先写主函数,先实现菜单,利用do...while()语句的特征先让程序执行一遍,再通过switch语句实现对基本三种情况(包括含数组程序的执行,程序的退出,以及输入错误)的选择。这样就可以完成主函数了。
程序的大体框架就是这样子,下面就是完成生成随机数和对猜数字函数的实现。
#include<stdio.h>void menu()
{printf("********************\n");printf("***** 1.play ****\n");printf("***** 0.exit ****\n");printf("********************\n");
}int main()
{int input = 0;do{//打印菜单menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:printf("猜数字\n");break;case 2:printf("退出游戏\n");break;default:printf("选择错误,请重新选择\n");break;}} while (input);return 0;
生成随机数
为了生成随机数,我们需要使用rand函数,在使用rand 函数的时候需要引用头文件#include<stdlib.h>
rand函数返回的是0~RAND_MAX(32767)之间的一个随机数
使用rand函数,那随机数就算输入好了吗?
其实并没有,连续启动程序,我们会发现它随机数生成的值不仅过大,而且两次都是一样的。显然,这不是我们想要的结果。
第一次调试:
第二次调试:
所以为了生成我们所需要的随机数值,我们还需要引用到另一个函数:srand函数,rand函数在使用之前要使用一个srand函数来设置随机数的生成器。
但是我们使用srand函数时,同样也需要给该函数输入一个随机值srand函数才会发生变化,这样在我们需要输出随机值的情况下,又要输入随机值。很明显这是矛盾的,所以我们要想到一个新的办法。
我们可以使用时间戳来解决这个问题,C语言中,time函数会返回时间戳,通过time函数我们就可以生成我们想要的随机数了,记得使用time函数也需要应用头文件#include<time.h>。
确实是生成随机数了,可是当电脑输出下一个数时,会发现他和上一个数值一样或者十分接近,这显然也不是我们想要的随机数,所以还是需要改进。
srand函数在程序中只需要调用一次就可以了,我们不需要不断的重新使用srand函数,所以我们只需要将它放在主函数中,这样srand函数作为起点就可以只进行一次。
同时,为了得到1到100的随机数,我们只需要将rand函数自动生成的随机值取模100,得到该随机值的后面两位,这样我们就可以得到1到100中的随机值了。
这样就可以生成我们需要的随机数了。
程序很快就要完成了。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>void menu()
{printf("********************\n");printf("***** 1.play ****\n");printf("***** 0.exit ****\n");printf("********************\n");
}void game()
{//srand((unsigned int)time(NULL));//放在main函数,只需要使用一次//1.生成随机数int ret = rand()%100+1;printf("%d\n", ret);//2.猜数字
}int main()
{int input = 0;srand((unsigned int)time(NULL));//time需要一个指针,我们传一个空指针即可do{//打印菜单menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:game();break;case 2:printf("退出游戏\n");break;default:printf("选择错误,请重新选择\n");break;}} while (input);return 0;
}
猜数字函数的实现
实现猜数字函数,我们先使用一个while循环,在开始或者每次判断后输入一个数字后,通过多个嵌套的if语句不断的对输入的数字进行判断,直至猜对为止。
//2.猜数字int num = 0;while (1){printf("请猜数字:>");scanf("%d", &num);if (num < ret){printf("猜小了\n");}else if (num > ret){printf("猜大了\n");}else{printf("恭喜你,猜对了\n");break;}}
感谢你的观看,祝进步,如有错误,望指正。
C语言—猜数字游戏的实现相关推荐
- C语言猜数字游戏(详解)
使用C语言写出猜数字游戏 1.思路 1.我们需要电脑生成一个随机数 2.玩家进行猜数字 3.玩过一次可以再玩一次,那么至少要进去一次,可以使用do...while循环 2.大体结构(主函数) 使用do ...
- c语言猜数字游戏用while,用C语言实现猜数字游戏
本文实例为大家分享了C语言实现猜数字的具体代码,供大家参考,具体内容如下 问题:计算机随机生成一个数字,用户进行猜数字,当用户猜错时,提醒用户猜高/猜低,直到用户猜的数字与计算机给的随机数一致时,提示 ...
- 【趣学】C语言猜数字游戏
目录 一.前言 二.从游戏初始界面开始 三.游戏实现 ①rand函数 ②srand函数 ③时间戳 ④time函数 一.前言 学习的过程有时候会有些许枯燥,但换一种方式学习也算是一种有趣的事情,呀哈,写 ...
- 【小白系列】C语言 猜数字游戏
目录 1.前言 2.编写思路 3.代码实现 3.1菜单代码 3.2游戏代码 3.2-1 rand函数 3.2-2 srand 函数 3.2-3 time函数 4.注意事项 5.完整的猜数字游戏代码展示 ...
- C语言 猜数字游戏
猜数字游戏 规则:给定一个范围如[1,100],系统生成一个范围内随机数字,用户随便输入一个整数,如果用户输入的数字比系统生成的数字小就提示"猜低了",如果用户输入的数字比系统生成 ...
- c语言猜数字游戏用while,【C语言基础】有趣的猜数字游戏。(while循环,if语句,switch语句)...
要求:猜数字游戏的实现.代码如下:#include #include #include void menu() { printf("***************************** ...
- c语言猜四位数游戏猜10次,C语言猜数字游戏--随机生成4个不相同的数字从小到大排序,用户开始游戏,如果用户猜对数字和数字对应的位置,界面回馈A,如果数字正确位置不正确,则回馈B...
1.看程序运行截图吧!! 由于博主本人较笨,就不动画演示了,如果动画的话可能将是一个漫长的过程! 猜数字游戏.png 2.游戏题目 随机生成4个不相同的数字从小到大排序,用户开始游戏,如果用户猜对数字 ...
- c#语言猜数字游戏,C#实现猜数字游戏
本文实例为大家分享了C#实现猜数字游戏具体代码,供大家参考,具体内容如下 给定一个0-100的随机数字猜其大小 题目样式: 电脑产生一个0到100之间的随机数字,并且要求用户来猜,如果用户猜的数字比这 ...
- C语言猜数字游戏的进阶设计
上一篇文章我们已经实现了猜数字游戏的程序设计,但是玩过游戏的我们都知道,这样的游戏界面实在是太过低级,下面我们运用system函数和Sleep函数进行一次小升级. 我们先对即将用到的函数进行简单介绍 ...
最新文章
- 求组合数python_给定一个序列求指定位数的排列组合数
- cnc加工中心保养表_CNC加工中心有哪些日常保养方法?
- CTF Geek Challenge——第十一届极客大挑战Crypto Write Up
- QT的QBrush类的使用
- vi / vim 字符替换详解
- ThreadPool的使用
- POJ - 3263 Tallest Cow(简单差分)
- 一套优雅的 Go 错误问题解决方案
- 《弗洛伊德及其后继者》读书笔记(part1)--西格蒙德·弗洛伊德与经典精神分析传统
- 《MySQL——增删改查以及常用语法》
- pg8168改mac命令_使用PG8168修改8111b网卡MAC地址
- DiskGenius 对 U 盘分区操作后保存更改时报错:保存分区表时出现错误20000011e no such partition
- java实现单词首字母小写转大写
- androidstudio上传自己的lib到Jcenter
- 什么是ubuntu ?
- redit mysql_样式
- web前端埋点及数据上报
- 美通企业日报 | 应届生平均起薪7566元京沪最高;00后月均零花钱约470元
- 自由职业需要我们知道什么呢?
- swift3.0 GCD