你好, 欢迎｡
我想给大家演示一下
解决方案之前的挑战是实施 一种猜数类游戏｡
让我们来看看代码
块, 请关闭当前项目并创建一个新项目｡
这个新项目我刚开始 叫猜数字游戏｡
这将是一个 控制台应用程序｡
所以我打算 就叫它猜猜数字｡
我接下来要做的是 在开始这个项目的时候, 我要声明变量｡
我总是喜欢声明和 我的变量在上面｡
但我也会用 随机数生成器｡
所以我想确保 我有几个节目｡
默认情况下, Stdlib已经存在｡
所以我只需要把我的 时间｡ h, 因为这也是用于随机数发生器｡
这基本上是为 随机数发生器座｡
其他的变量 这个程序需要存储随机数｡
所以我要说 随机数, 我会将它初始化为0,
直到 从真正的图书馆里拿来｡
所以声明初始化｡
我将创建一个变量 存储用户的猜测值,
然后用0初始化它.
我将创建另一个变量
也就是猜测的次数, 也就是
或者我应该说是最大猜测次数, 最大 我将把它初始化为5, 因为 他们只能猜5次｡
我还得创造一个时间 这样我就可以将它用于我的随机数生成器｡
所以我只说时间t｡
在我... 要求用户输入我想要生成的随机数｡
我想我可以在问过 用户的输入, 但它只是很容易做的第一件事,
你这样做｡
所以我要初始化我的 随机数生成器, 我会在里面加一点注释｡
一定要用好有意义的 并确保缩进｡
它将使用srand函数 我在课上讲过｡
你可以通过它 在一个种子里｡
所以我会说是无符号的 传入t变量｡
这要弄到的时间是一 获取当前时间的函数｡
我将把t传递进去 然后我会结束它｡
现在我真的需要 随机数生成器, 所以我会说得到随机数｡
而这一切都将 给兰德函数的返回值赋一个变量
我们假设随机数
局部变量是否等于并使用赋值运算符 调用函数的兰德｡
你不需要知道这些, 但我会用21来做种子｡
这将确保我的随机 数字只能介于0和20之间
现在, 我将输出一个 将消息耦合到屏幕,
以便用户知道他们在做什么｡
所以我要做一个打印应用程序 这是个猜谜游戏｡
然后我还要
告诉他们我又选了一个0到20之间的数字, 这样他们就能知道了｡
然后是0和20 猜一猜, 然后以换行结束｡
现在我告诉他们我 我要开始循环了｡
我将循环直到我的 猜测次数等于5｡
所以我更愿意 我想澄清我的猜测, 但是
我不想初始化｡
我想在循环中初始化 只是想让你知道我能做到｡
如果我在那里初始化它, 在for循环中的第一个分号之前, 我可以将其保留为空｡
比如说我可以做一些 像这样, 在这里初始化它｡
然后在for循环中 因为我不需要进行初始化｡
因为请记住,
在for循环中, 分号前面的第一个内容是初始化 循环控制变量｡
我已经初始化了 所以我不需要这么做,
但我不想这么做｡
我要宣布 然后在这里初始化它｡
我会说最大值 猜测次数等于5｡
这是我的循环控制变量 我要初始化它｡
我要跳出 循环, 如果达到了我的最大猜测次数｡
所以在这里我想说 我会用不同的方式来写
我会这样写 循环从5到0｡
所以我的最大数是5｡
不如就 重命名此变量｡
让我们重命名它并 比如猜测次数｡
而猜测的次数 一开始是5
我会让 这是倒退｡
当猜测次数为 0, 我想跳出循环｡
我的循环退出条件 我会说猜测次数大于0｡
看看我在这里做什么｡
我只会跳出 循环, 如果我没有更多的猜测了｡
所以如果大于0 会留在循环内｡
我最不想 在for循环中修改第二个气候冒号后提供
循环控制变量｡
所以我打算做一个 减去减去猜测次数｡
你应该注意的是 在这个for循环中, 我开始...
我几乎要倒退了｡
我从5点开始, 然后到0点｡
对于我们在 讲座, 我们从0开始, 然后向上
但你可以两者兼顾, 这没关系｡
你还在这里重复5次｡
现在, 我想显示一个
消息告诉他们还剩下多少次尝试｡
所以我要说printf, 实际上我将把三元运算符
因为我们还没用过｡
不需要这样做, 但我会这样做只是为了让你们知道
可以使用三元运算符｡
我现在要打印出 % s还剩下% d次尝试｡
百分比d将为 猜的次数和百分之三相等, 它就会改变｡
要么是尝试 否则就要被审判了
所以我要改变 根据我剩下的猜测次数来决定显示的内容｡
如果数量 猜测数等于1｡
我不想计划出尝试, 一 try是左, 这说不通｡
我想打印出来一次试试｡
在这里, 我将使用 或者更精确地说是条件运算符｡
我会说如果猜测的次数 等于1, 则将猜测次数设置为等于y,
否则将其设置为IES｡
我要把它打印出来 percent s在做什么,
这里返回的内容｡
所以这将返回 选择IES并显示正确的信息｡
所以我这么做只是为了
一个小小的花式告诉你如何使用终端, 打印 提供正确的信息｡
在我把号码打印出来之后 最后一次尝试, 然后我想告诉他们输入一个猜测｡
所以我要忍受
输入一些信息, 然后输入printf, 然后 这将有一个换行符｡
输入一个猜测, 然后 要使用scanf读取猜测, 我们知道如何从键盘读取｡
它是一个整数, 所以我 我会把它放到guess变量中｡
所以我需要使用&符号｡
现在我得做我的检查｡
我得检查一下 我是我所关心的人｡
所以我们有 另一个退出条件｡
我将使用if语句｡
我要说如果我的 guess等于我的随机数, 我想做什么？
首先我想打印 然后告诉他们他们猜对了｡
所以我要打印出来, 恭喜你, 你猜对了｡
我还想做什么 如果他们猜对了呢
我想退出循环｡
那么, 如何才能退出循环呢？
我可以放休息｡
我可以休息一下 会跳出我的圈子｡
如果它不相等, 那么 我想添加一个else if｡
如果不相等, 我想检查 确保他们验证了号码｡
所以在我说你可以 嵌套循环进行验证,
以便它们再次进入, 我不需要这么做, 你可以用一个f语句｡
在这里我想验证这个数字｡
如果它不等于
一个随机数, 我想确保它在0到20之间｡
所以如果猜测值小于0或
我们使用了一个逻辑运算符或者两个平行杠或者猜测是 大于20, 这基本上是检查无效猜测｡
如果是这样而我不是 因为我只有一条语句
在这里, 如果只有一条语句, 则括号是可选的｡
所以如果他们输入了无效的猜测, 我所要做的就是printf｡
我要打印出来我说 该数字在0和20之间｡
而这里会发生什么都不算什么｡
它只会打印 然后进入下一个迭代｡
它会告诉他们 他们已经试过很多次了, 现在只能猜了
现在如果你不想有效
如果他们输入了有效的数字, 则不将其视为猜测, 那么就可以有一个嵌套循环｡
但如果他们输入到25, 那也只能算是猜测｡
所以我就说我设了个 0到20之间的数字｡
如果他们输入了有效数字 但它不正确, 那就是else子句
在这里, 我只想说, 抱歉打错了我会告诉他们
大于或小于｡
我可以用三进制 接线员, 但我不会｡
所以我们在这里也加上一个if｡
否则, 如果random大于 猜猜看, 那我想打印什么？
我想打印出抱歉, % d是 错, % d将是他们猜测｡
我的数字是% s是第一个单词｡
如果随机数较大, 我的数字更大｡
我的数字比那更大,
我不使用任何百分位数, 我只是换行｡
否则, 如果随机数 比你猜的要小, 那我就告诉他们它更低
这样我就可以复印 粘贴相同的内容｡
我可以说抱歉, 号码错了, 我的号码比那还少｡
同样, 你可以 写上这两个如果｡
你可以有一个其他的 你可以在这里做一个条件语句｡
你可以使用三元运算符 但我会用另外两个如果说它小于这个数｡
然后就这样了, 这将结束循环｡
如果我们脱离了这个圈子
我们猜错了, 超过了我们的尝试次数,
然后我会告诉他们他们试了5次 我没有猜到数字, 我要告诉他们数字｡
所以最后一个输出要告诉用户 告诉他们他们没有赢, 并告诉他们号码是多少｡
所以你已经试了5次都失败了, 该数字是随机数｡
好吧, 这样说得通吗？
我们在这里做了很多事情｡
我们使用if语句, else 语句, 我们实现的是数字游戏｡
最后一件事是 从主函数返回｡
让我们继续编译 在整个练习过程中,
你应该做些什么？
你应该测试一下 并以小块的方式工作｡
你也许应该
先开始工作, 然后让随机数开始工作 测试编译测试｡
然后开始循环｡
确保循环只运行 猜测的次数, 最多5次, 然后让它工作和测试｡
然后询问用户答案 一些信息, 让它工作和测试｡
然后比较何时退出, 如果 他们猜测正确, 测试, 然后编写if语句
测试, 这就是我实现方法
所以我们来建造这个 看看它是否能编译｡
希望我没有犯任何错误｡
我要说的是构建｡
我确实有错误, 我 具有无效号码｡
必须是随机数, 不是随机的因为这是变量的名字｡
而这次我有 0个错误, 2个警告｡
我有百分之d 需要一些匹配int｡
我忘了把蜡烛灭了｡ 随机数或猜测｡
这里的猜测和 猜一猜另一个｡
我想告诉他们他们的猜测 对不起, 猜错了, 没必要这样,
不过只是一件小小的好事｡
现在让我们来建造它, 因为 我总是想修正你的警告｡
您希望有0个警告0个错误｡
当我们运行这个程序的时候, 我们需要测试｡
有很多不同的测试 你想在这里办的案子｡
您需要运行多个测试 因为要记住, 只测试一件事是不好的｡
所以这里说这是一个猜测 游戏,
我选择了一个数字之间的0和20, 你必须 猜猜看, 你还有5次机会｡
所以我会放16个｡
对不起, 16是错误的, 数字小于该值｡
我想试试8岁｡
8是错的, 小于那个｡
我会做4个｡
4错了, 我的号码 比这还大｡
噢我犯了个错误, 我 我没先看过｡
所以它大于8｡
我们试试12号｡
我只剩两次机会了｡
我猜右边有12个｡
上面写着恭喜你｡
但你也要试验一次失败｡
你想测试几样东西 让我来测试一下我的猜测
我只输入0｡
0错误｡
我会继续输入0 我猜我错了5次｡
上面说你有过 5次尝试, 均失败｡
你的号码 我想猜是3
所以这是可行的｡
现在让我们测试一下 会发生这种情况｡
如果我输入45.
我说的数字是0和20｡
这是另一个测试案例 也算是一次尝试｡
如果我不想让这个账户成为 try, 则它可能具有嵌套循环｡
我想差不多了｡
我们已经测试了所有的案例｡
我们测试了 你猜对了｡
我们已经测试了 你猜错了
我们测试了 您输入的号码无效｡
也许唯一的另一个测试 就是要确保它说的是大于和小于 我认为我们在第一个测试中测试的结果会告诉我们
输入小于或大于｡
让我们试试看｡
所以当我输入20时, 它说的比哪一个更好｡
现在我要进入 我猜对了｡
所以我猜他们很快｡
但我们应该看到小于和 大于相同输出｡
再试一次, 随机 因为我生成了不同的数字
每次我运行程序时｡
20是错的｡
现在让我们试试19｡
让我们试试1, 它是 比那更大的｡
所以我看到了大于和小于｡
所以我很确定它起作用了｡
我觉得还不错｡
你应该注意到一件事 程序里有个小错误我在测试你.
所以当你运行它的时候因为我们有 这里的这个漏洞, 它仍然会打印出我失败了
即使我成功了｡
所以你应该注意到 在之前的输出中, 我猜的是正确的数字
这是打印出来的祝贺｡
但后来它也印出了我 失败了, 这似乎不对｡
所以解决这个问题的办法就是你 别有突破, 你要有回报｡
所以现在当它回来的时候 如果你赢了就不会在第39行打印出来｡
它不会被打印出来 你失败了｡
最后一个测试你应该
但当我们建造并且猜对了, 它不会显示错误｡
所以我们可以保存运行时间, 当我们 运行这个, 你有5个猜测｡
我会说10, 少于10｡
我们会说 6, 我猜对了｡
你会注意到 上面写着恭喜｡
我们看不到额外的输出 我也失败了｡
所以你要确保 在第30行添加回车符,
以便程序正确运行｡
您可以添加另一个if语句if
这样就不会打印出printf, 可能会有中断
在printf中, 您可以检查计数器猜测次数 你还必须确定它是否小于5, 那么恭喜你｡
但是有一个小虫子 希望你在测试中注意到了,
返回会修复它｡
所以一个简洁的小程序｡
我希望这能帮助您了解 很多关于循环和所有决策语句的信息
真正解决问题｡
希望你能把这个弄出来 在你开始写之前就设计好了 代码,
这总是很重要的｡
希望这对你有帮助｡
我会提供源代码 可以比较､ 观察和分析它｡
-谢谢—谢谢