猜数字游戏的实现内容:
1. 电脑随机生成一个数字(1—100)
2. 玩家猜数字
如果玩家猜小了,就提示猜小了。
如果玩家猜大了,就告提示大了。
如果玩家猜对了,就提示猜对了。
3. 游戏每局结束后,可以选择是否继续玩或者退出。
我们开始先做一个游戏主页菜单,菜单的选择有玩游戏或者退出游戏,代码如下:
void menu()  // 这里我们定义一个不要返回值的 menu 函数来实现菜单的功能
{printf("***********************\n");printf("********1.Play*********\n");  //  选择 1 玩游戏;printf("********0.Exit*********\n");  //  选择 0 退出游戏printf("***********************\n");
}

游戏菜单做好后,我们需要进行选择玩游戏或者退出游戏,并且实现游戏猜数字的部分,代码如下:

void game()  // 定义 game函数 实现游戏部分
{    int ret = rand(); // 调用 rand 函数来随机生成一个伪随机数printf("%d\n", ret);/*int guess = 0;  // 先注释掉这句跟 while循环部分,暂且先不猜只随机生成数字while (1){printf("猜数字:\n");scanf("%d", &guess);if (guess < ret){printf("猜小了,请重新猜\n");}else if (guess > ret){printf("猜大了,请重新猜\n");}else{printf("恭喜你,猜对了\n");break;}}*/
}int main()
{int input = 0; // 定义一个整型变量来接收我们从键盘输入的选择do{menu();     // 菜单的实现printf("请选择:");scanf("%d", &input); // 输入数字选择(1/0) 1—玩游戏;0—退出游戏switch (input){case 1:game(); // 选择 1 玩游戏定义 game函数break;case 0:printf("退出游戏\n");break;default:printf("选择错误,重新选择!\n"); // 输入非选项数字break;}} while (input); // ()里面输入 0 为假退出游戏不在继续选择, 输入非 0 为真进入循环继续选择return 0;
}

写好代码之后,那开始玩。( 那为什么每局随机生成的数字一样呢?)

在我们仔细阅读 rand 函数之后会发现,rand 函数可以随机生成一个伪随机数。
rand 生成伪随机数的范围是 0 — RAND_MAX,但 rand 函数有一个缺陷,每局生成的伪随机数是一样的,那我们玩一局结束后把随机生成出来的数都记下来,那游戏还有什么意思?
所以这里需要调用了一个 srand 函数,srand 函数需要在调用 rand 函数之前被调用。

那 srand 函数作用是什么呢?

那如图我们传给它一个整型参数:
(这里需要注意 srand函数的位置是在 game函数里面)
输出结果如下:

我们发现随机生成的数字都一样,那我们改一下 srand 函数里面的参数会是怎么样?
我们改变里面的整型参数,重新给一个整型参数,生成的随机数还是一样。感兴趣的可以试一下,我就不放结果了。
那是不是每次给 srand 一个一直变化的整数我们就可以生成一个随机数?
这里就要引用一个时间戳,时间是一直变化的,而把它给 srand 每次生成的数字就随机了。
那时间戳是什么?
时间戳就是自己现在的时间相较于计算机起始时间之间的差值(秒) (计算机起始时间是 1970.01.01)
所以我们可以把时间戳传给 srand函数,C语言也提供了这样的函数 —— time ,它会返回一个时间戳。
下面就是 time函数的介绍:
如果我们不想用参数,不把时间戳存起来,我们可以给它传空指针(NULL)
还有一种办法是 time 会返回时间戳,我们只要接收这个返回值就可以了。
根据 srand 函数的定义,我们可以把 time 传给 srand,代码如下:
(这里注意 srand函数的位置发生了变化,放在了主函数里面)
那为什么这次放在了主函数里?
因为当我们开始游戏之后,快速的获取随机数的时候会发现生成的随机数有一样的数(输出结果省略,有兴趣或者疑问可以尝试自己做一下看是否一样)
如果放在 game 里面我们每次程序运行起来获取随机数,相当于调用设置起点,重新起始开始算起。
所以调用 rand 之前要调用 srand ,但是不能被频繁调用,只需在程序运行起来调用一次就可以。
所以 srand 不能放在 game 里,应该放在主函数里面。
最后完整正确代码如下:
#include <stdio.h>
#include <stdlib.h> // srand 头文件
#include <time.h>   // time 头文件void menu()    // menu — 游戏菜单{printf("***********************\n");printf("********1.Play*********\n");printf("********0.Exit*********\n");printf("***********************\n");}void game()   // 猜数字的实现{int ret = rand() % 100 + 1; //给生成的随机数 %100+1,任何数 %100 结果为 0-99,再 +1 就是 1-100int guess = 0;while (1)  // 猜错可以一直猜,直到猜对 break 跳出死循环{printf("猜数字:\n");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)); // srand 函数放在主函数只需调用一次do{menu();printf("请选择:");scanf("%d", &input); // 输入选择:玩游戏 or 退出游戏switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,重新选择!\n");break;}} while (input);return 0;}

以上就是猜数字游戏需要注意的地方,以及一些讲解。

编写一个猜数字游戏程序。相关推荐

  1. 编写一个猜数字游戏程序:

    程序随机生成1~100之间的整数: 用户在命令行中输入猜测整数: 根据用户输入给出相应提示:"猜打了"."猜小了"."猜对了": 可让用户再 ...

  2. c语言编写一个猜数字游戏编写

    1.C语言实现猜数字游戏: #define _CRT_SECURE_NO_WARNINGS//猜数字游戏: // 1.由电脑自动生成一个随机数字 // 2.猜数字#include <stdio. ...

  3. C++编写一个猜数字游戏的代码

    文章目录 一.核心代码 二.整个代码实现 一.核心代码 (1)随着系统时间,随机生成一个数字(头文件应引用#include ). int s = rand() % 100 + 1;cout <& ...

  4. 利用Java语言编写一个猜数字游戏(有次数限制)

    猜数字小游戏. 利用Java语言编写. 题目: 用代码模拟猜数字的小游戏. 思路: 1.首先需要产生一个随机数字,并且一旦产生不再变化.用Random的nextInt方法 2.需要键盘输入,所以用到了 ...

  5. c语言程序设计 猜数字,猜数字游戏c语言编程,c语言编程 编一个猜数字游戏

    c语言编程 编一个猜数字游戏 #include #include #include #include void main()/*主函数*/ { int a,b,times=0,i,j,guess=0, ...

  6. 使用tkinter 实现一个猜数字游戏

    使用tkinter 实现一个猜数字游戏 实现效果如下 先导入我们要实现的模块名 import time import tkinter as tk import tkinter.font as tkFo ...

  7. 用C++做一个猜数字游戏

    如何用C++做一个猜数字游戏 制作人:zhangfan080816 总体概览 #include<iostream> #include<ctime> #include<cs ...

  8. Java黑皮书课后题第7章:***7.35(游戏:猜字词游戏)编写一个猜字词游戏,随机产生一个单词,当用户猜测正确后,正确的字母显示出来。当用户猜出一个单词,显示猜错的次数,并询问用户是否继续猜测

    ***7.35(游戏:猜字词游戏)编写一个猜字词游戏,随机产生一个单词,当用户猜测正确后,正确的字母显示出来.当用户猜出一个单词,显示猜错的次数,并询问用户是否继续猜测 题目 题目描述与运行示例 破题 ...

  9. 利用C语言设计一个猜数字游戏

    问题解决: 设计一个猜数字游戏,通过简单代码,可以空闲时和舍友一起玩. 目录 1.游戏总代码(随便复制,易学习) 2.游戏设计思路解析 3.关于时间戳的知识:(如何让电脑输出一个1~100的随机数)h ...

  10. 【shell案例】由一个猜数字游戏引发的血案

    脚本释义 本脚本是学员练习脚本的一个案例,脚本的名字叫 猜数字骗局, 脚本一开始,输入用户密码,就是一个简单的猜数字游戏,当你猜了三次的时候,提示是否还玩来刷选用户. 当用户玩到第六次的时候,突然中奖 ...

最新文章

  1. php pdo 方法,PHP使用PDO修改数据的方法
  2. 第一周周四DailyReporting——PM(李忠)
  3. BZOJ 1036 [ZJOI2008]树的统计Count
  4. 23种设计模式详解_太厉害了,清华大牛一个坦克项目就把23种设计模式给抽丝剥茧了...
  5. 判断文件是否存在一个API函数
  6. P5445-[APIO2019]路灯【set,树状数组套线段树】
  7. 二值神经网络重大突破,第一次胜过MobileNet!-1与+1的三年艰苦跋涉
  8. Linux中ls -l(ll)返回结果中的文件访问权限-rw-r--rw-
  9. 7的整除特征 三位一截_茅台酒的合格证有哪些特征和鉴别要点?
  10. python运维方法_Python运维开发基础09-函数基础【转】
  11. servlet和jsp的转发与重定向代码以及区别
  12. StatX 获250万美元融资,随时随地通知公司业务变化
  13. 小米蓝牙音响驱动_小米极蜂智能对讲机体验:联网对讲,还能当“老头乐”蓝牙音响...
  14. php毕业论文结论,科学网—如何写好学位论文的摘要和结论 - 王东升的博文
  15. 酷睿i3 10105f参数 i310105f属于什么水平 i3 10105f性能怎么样
  16. awk命令 去掉重复行
  17. 面试了37位数据分析师,发现厉害的人都有这4个特质
  18. Excel聚光灯--双箭头指示
  19. 王立柱《c语言》3.5.4
  20. i5 6600 HD530联想扬天S5250黑苹果

热门文章

  1. jquary插件Lightbox灯箱
  2. 闪存flash基础原理
  3. BIGWORLD问题集
  4. 使用Pytorch来拟合函数
  5. 创客匠人工具助力教培机构快速适应线上教学
  6. 数据分析(Data Analysis)
  7. 大气生活用品电商网站模板
  8. 重庆北大青鸟【学员心声】:有计划的做事情才能事半功倍
  9. python生成随机imei
  10. x64 - reject driver loading