171114—程序学习:猜数游戏。
2017-11-14 20:38
225 查看
这题自己折腾很久了。没搞出来。看了参考的程序,当时学习了,存点自己的考虑。
原题:
猜数游戏。玩家想好了一个 1~1000 之内的整数,由计算机来猜这个数。如果计算机猜出的数比 玩家想的数大,则玩家输入1;如果计算机猜出的数比玩家想的数小,则玩家输入-1;这个过程一直进行到 计算机猜中为止,玩家输入0。
一针见血的问题:
怎么实现多次输入数值加回车?你之前写的程序可是只能玩一次就挂掉了。。!
答:
由此便可实现,while语句的循环条件永远成立,可多次读取新的输入数值,并完成计算。
而“break”则承担着跳出循环,终结程序的作用。(详见转向语句。另有continue可从此次循环中跳出,进行下一次循环。)
另外,猜数的主要算法如何实现?
而且,显然这个程序需要纠错机制:
保证输入值合乎范围(0,1,-1)
保证所猜的值在合理范围【1,1000】
防止出现赖皮操作。(猜500嫌大,猜499嫌小。或者命名猜中却刻意继续)
看参考的代码:
原题:
猜数游戏。玩家想好了一个 1~1000 之内的整数,由计算机来猜这个数。如果计算机猜出的数比 玩家想的数大,则玩家输入1;如果计算机猜出的数比玩家想的数小,则玩家输入-1;这个过程一直进行到 计算机猜中为止,玩家输入0。
一针见血的问题:
怎么实现多次输入数值加回车?你之前写的程序可是只能玩一次就挂掉了。。!
答:
while(1) { cin>>....; if(。。。)break; }
由此便可实现,while语句的循环条件永远成立,可多次读取新的输入数值,并完成计算。
而“break”则承担着跳出循环,终结程序的作用。(详见转向语句。另有continue可从此次循环中跳出,进行下一次循环。)
另外,猜数的主要算法如何实现?
而且,显然这个程序需要纠错机制:
保证输入值合乎范围(0,1,-1)
保证所猜的值在合理范围【1,1000】
防止出现赖皮操作。(猜500嫌大,猜499嫌小。或者命名猜中却刻意继续)
看参考的代码:
#include<iostream> using namespace std; int guess(int k=0); int main() { int feedback,t=1; cout<<"请你想好一个1~1000之内的整数,别告诉我,让我来猜猜!\n"; cout<<"猜中了,请输入0;若猜的数小了,请输入-1;若猜的数大了,请输入1\n"; cout<<"开始猜了……\n"; cout<<"是 "<<guess()<<" 吗?\t"; while(1) //用while(1)和break来实现多次操作。 { cin>>feedback; if(feedback==0) //主函数只完成对反馈值的初步判断和计数。追求低耦合度。 { //自己写的时候发现很容易写得很多很多层。。自己搞晕自己。 cout<<"我猜中啦!只猜了 "<<t<<" 次,很强吧!\n"; break; } cout<<"是 "<<guess(feedback)<<" 吗?\t"; t++; } } //算法的主要思想是,利用二分法,其中,left和right给出了猜数的区间端点,每次猜数即去区间中值,而在每次反馈之后,按反馈结果将上次所猜的数值g赋给left或right,得到新的区间。重复进行。很好的用Cpp描述了这个方法的过程,佩服佩服。 int guess(int k) { static int left=1; static int right=1000; static int g = 500; switch(k) { case 0: break; case 1: right=g-1; break; case -1: left=g+1; break; default : cout<<"你输入错了,请再输入。\n"; return g; } //switch语句只负责了判断输入值并赋值的准备工作,没有直接输出.很智慧。 //如果不这样的话,在完成赋值之后,最起码赖皮操作就没法判断。。因为你还要输出,读都费劲,写更容易出错! if(right<=left) { cout<<"你耍赖…不跟你玩了!\n"; //防赖皮通过在一次反馈之后,输出新值之前判断区间是否符合left《right来达到。(我这是严格小于号!) exit(0); } g=(left+right)/2; return g; }
相关文章推荐
- 从0开始学Python--0x04. 第二个Python程序之猜数游戏
- Jim's游戏外挂学习笔记2—适时编写个读取状态的小程序增加一下士气
- C++一个猜数游戏程序
- 【Python学习笔记】《和孩子一起学编程》之 猜数游戏
- C++一个猜数游戏程序
- 【程序11】猜数游戏
- Jim's游戏外挂学习笔记2—适时编写个读取状态的小程序增加一下士气
- 今天在CSDN注册了这个blog,同时开始自己的游戏程序学习的旅程
- c/c++程序之_猜数游戏
- 树莓派学习系列5——使用python编写简单的游戏程序
- 自学C++游戏程序开发学习顺序(转)
- 网络游戏服务器开发::学习了两天python写了一个linux下自动安装程序的脚本
- Head First Java (第二版)学习记录 5 - 编写程序 DotCom 初级游戏
- Amazed游戏学习一 程序框架
- Java视频学习笔记:基础(二)之猜数游戏
- python 学习记录(4)—本金+利息计算及简单的游戏猜测程序
- Jim's游戏外挂学习笔记2——适时编写个读取状态的小程序增加一下士气
- 【转】 游戏程序开发学习流程(学习无止境乎)
- JAVA从菜鸟【入门】到新手【实习】一一Python学习历程:游戏学Python:文字猜数游戏
- 程序测试程序(配合游戏及学习控制管理器使用)