目录

目录

完整的程序

打印菜单

主函数部分

生成随机数

猜数字函数的实现


我们已经学习到了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语言—猜数字游戏的实现相关推荐

  1. C语言猜数字游戏(详解)

    使用C语言写出猜数字游戏 1.思路 1.我们需要电脑生成一个随机数 2.玩家进行猜数字 3.玩过一次可以再玩一次,那么至少要进去一次,可以使用do...while循环 2.大体结构(主函数) 使用do ...

  2. c语言猜数字游戏用while,用C语言实现猜数字游戏

    本文实例为大家分享了C语言实现猜数字的具体代码,供大家参考,具体内容如下 问题:计算机随机生成一个数字,用户进行猜数字,当用户猜错时,提醒用户猜高/猜低,直到用户猜的数字与计算机给的随机数一致时,提示 ...

  3. 【趣学】C语言猜数字游戏

    目录 一.前言 二.从游戏初始界面开始 三.游戏实现 ①rand函数 ②srand函数 ③时间戳 ④time函数 一.前言 学习的过程有时候会有些许枯燥,但换一种方式学习也算是一种有趣的事情,呀哈,写 ...

  4. 【小白系列】C语言 猜数字游戏

    目录 1.前言 2.编写思路 3.代码实现 3.1菜单代码 3.2游戏代码 3.2-1 rand函数 3.2-2 srand 函数 3.2-3 time函数 4.注意事项 5.完整的猜数字游戏代码展示 ...

  5. C语言 猜数字游戏

    猜数字游戏 规则:给定一个范围如[1,100],系统生成一个范围内随机数字,用户随便输入一个整数,如果用户输入的数字比系统生成的数字小就提示"猜低了",如果用户输入的数字比系统生成 ...

  6. c语言猜数字游戏用while,【C语言基础】有趣的猜数字游戏。(while循环,if语句,switch语句)...

    要求:猜数字游戏的实现.代码如下:#include #include #include void menu() { printf("***************************** ...

  7. c语言猜四位数游戏猜10次,C语言猜数字游戏--随机生成4个不相同的数字从小到大排序,用户开始游戏,如果用户猜对数字和数字对应的位置,界面回馈A,如果数字正确位置不正确,则回馈B...

    1.看程序运行截图吧!! 由于博主本人较笨,就不动画演示了,如果动画的话可能将是一个漫长的过程! 猜数字游戏.png 2.游戏题目 随机生成4个不相同的数字从小到大排序,用户开始游戏,如果用户猜对数字 ...

  8. c#语言猜数字游戏,C#实现猜数字游戏

    本文实例为大家分享了C#实现猜数字游戏具体代码,供大家参考,具体内容如下 给定一个0-100的随机数字猜其大小 题目样式: 电脑产生一个0到100之间的随机数字,并且要求用户来猜,如果用户猜的数字比这 ...

  9. C语言猜数字游戏的进阶设计

    上一篇文章我们已经实现了猜数字游戏的程序设计,但是玩过游戏的我们都知道,这样的游戏界面实在是太过低级,下面我们运用system函数和Sleep函数进行一次小升级. 我们先对即将用到的函数进行简单介绍 ...

最新文章

  1. 求组合数python_给定一个序列求指定位数的排列组合数
  2. cnc加工中心保养表_CNC加工中心有哪些日常保养方法?
  3. CTF Geek Challenge——第十一届极客大挑战Crypto Write Up
  4. QT的QBrush类的使用
  5. vi / vim 字符替换详解
  6. ThreadPool的使用
  7. POJ - 3263 Tallest Cow(简单差分)
  8. 一套优雅的 Go 错误问题解决方案
  9. 《弗洛伊德及其后继者》读书笔记(part1)--西格蒙德·弗洛伊德与经典精神分析传统
  10. 《MySQL——增删改查以及常用语法》
  11. pg8168改mac命令_使用PG8168修改8111b网卡MAC地址
  12. DiskGenius 对 U 盘分区操作后保存更改时报错:保存分区表时出现错误20000011e no such partition
  13. java实现单词首字母小写转大写
  14. androidstudio上传自己的lib到Jcenter
  15. 什么是ubuntu ?
  16. redit mysql_样式
  17. web前端埋点及数据上报
  18. 美通企业日报 | 应届生平均起薪7566元京沪最高;00后月均零花钱约470元
  19. 自由职业需要我们知道什么呢?
  20. swift3.0 GCD

热门文章

  1. Unity 游戏框架搭建 2019 (四十五) 独立的方法和独立的类
  2. 2020年西式面点师(高级)考试题及西式面点师(高级)考试内容
  3. android接入第三方SDK
  4. muscle多序列比对简单应用
  5. 专业术语——Alpha 通道
  6. 2022茶艺师(中级)特种作业证考试题库及答案
  7. vb中imp是什么意思_oracle
  8. Oracle使用SQL实现矩阵转置
  9. 15岁极客王逸翛:希望大家都有“开源精神”
  10. java 声明式编程_声明式编程 - SegmentFault 思否