c++猜数字游戏(电脑来猜)c++程序设计原理与实践习题4.4

来源:互联网 发布:阿里云是iaas还是saas 编辑:程序博客网 时间:2024/06/08 16:39

编写一个猜数游戏程序。用户给出一个 1 到 100 之间的整数,程序通过提问来猜测用户所想的数是什么(例如:”你的数小于50吗?“),程序应该能够用不超过7个问题来确定这个数。提示:使用 < 和 <= 运算符以及 if-else 语句编写程序。

以上是原题目,开始一直没思路,怎么在7个问题内让电脑猜出我心中所想的数字呢。由是打开了百度,心想看看别人的源码就行了(就是想快点看下一章)。结果查了半天都是让用户来猜程序设置的随机数,这不符合题意呀!也可能我搜索的方法不对,但就是找不到正确的答案。最后自己 误打误撞的写出了暂时满意的答案,在6个问题内就能求出你心中所想的数,下面是代码(如果大家发现错误或有更好的方法希望能留言提醒一下,谢谢了):

温馨提醒:一直没思路的时候不要烦躁,先让自己静下来, 可以先在网上提问,然后跳过这一题,去看后面的,说不定过了一会你就想出解决办法了,一直想不通的就到网上多处问一问,有时候只在一个地方问可能没人马上回答吧。

#include <iostream>#include <string>#include <vector>#include <algorithm>#include <cmath>using namespace std;  //这句以及上面包函的库文件,我不明白什么意思,有的库文件应该不用包涵进来,我只是照抄书上的。int main(){    cout<< "请在心中默想一个1——100的整数,我能在6个问题之内猜出这个数是什么:\n";    cout<< "想好了就输入y开始游戏吧,q退出。\n";    string zf;  //我声明了string类型来存放输入的字符,当然用char类型也行。    int number; //电脑猜测的数字,后面循环里有用到,当然也可以声明在循环体内。    while(cin>>zf)    {        int min_shu=1;  // 1是初始最小数。        int max_shu=100;  // 100是初始最大数。        if(zf == "q")        return 0;   // return 返回值0,退出了main()函数。        else if(zf == "y")        {            int jishu=1;  // 计数用的,6个问题以内嘛。            while(true)   // 条件一直为真,死循环,能用break跳出循环,或用return跳出整个函数。            {                number= (min_shu+max_shu)/2;  // 最小数和最大数的和除2 ,意思就是取它们的中间值。                cout<< "\n是"<<number<<"吗?(第"<<jishu<<"个问题)大了输入b,小了输入s,正确输入y。(输入无效字符不计次)";                cin>>zf;                if(zf == "b")                    {                        max_shu = number-1;  //如果是大了,那最大值至少比目前的数小1。                        jishu++;     //回答次数加1 ,如果你回答了电脑6次问题,电脑还没有猜对,那电脑就输了。                    }                if(zf == "s")                {                    min_shu = number+1;  //如果是小了,那最小值至少比目前的数大1。                    jishu++;     //同上面,计数加1                }                if(zf == "y")                {                    cout<< "\n哈哈,我猜到了吧!\n"                        << "输入y再玩一次,q退出\n";                    break;                }                if(jishu == 7)                {                    cout<< "\n你默想的数一定是"<<(min_shu+max_shu)/2                        << "\n输入y再玩一次,q退出\n";                    break;                }            }        }    else         cout<< "输入无效,请重新选择(y开始,q退出):\n";    }}

一段代码对大家也没什么意义,写出来只是想 提醒自己和 努力自学编程的小伙伴们 ,遇到问题要静下心,不要钻牛角尖。充分利用网络和一切自己能想到的资源,不求快,不求多,只要每天都进步一点点 就足够了。 我学这个也只是自娱自乐,并没有想短时间内就能靠这个吃饭,但理想总要是丰满的, 我坚信总有一天自己也能变成高手的,加油!

0 0