编写一个猜数字游戏。用户给出一个1到100之间的整数,程序通过提问来猜测用户所想的数是什么

(例,你的数小于50吗?),程序应该能够用不超过7个问题来确定这个数。提示:使用<和<=运算符以及if-else语句编写程序。这是一个编写C++的程序……大家帮忙编写下一... (例,你的数小于50吗?),程序应该能够用不超过7个问题来确定这个数。提示:使用< 和<=运算符以及if-else语句编写程序。
这是一个编写C++ 的程序……大家帮忙编写下一个完整的程序……
展开
 我来答
loyant
2011-03-22 · TA获得超过645个赞
知道小有建树答主
回答量:555
采纳率:0%
帮助的人:308万
展开全部
就1个折半查找嘛。。。。
简单写了个,貌似不太合题意,但7步以内能猜到任何1-100的数字,因为我要求回答电脑的答案是3个,1,是,2,等,0,不是。可能不和要求,你看了后具体提下问题该怎么问,反正我觉得这种要求3种答案的像是作弊,呵呵。因为涉及是否等于边界的问题,50、25(75)、38(63、87)……我觉得还非得加入“等于”这个答案才解得出来。另外,我每行基本上都有tab键让格式美观的……到了网页上貌似tab这个纠结的键的原因让代码。。。你编译之前Cril+A全选然Alt+F8整理格式吧。C++源码:
#include<iostream>
using namespace std;
int main()
{
int Num[100];
int i,n = 0,mid,high = 99,low = 0,flag1 = 0,flag2; //flag1代表找没找到,flag2表示电脑问题答案的与否
int goal;
for(i = 0;i < 100;i ++)
{
Num[i] = i + 1;
}
cout<<"当电脑提问后请输入1代表大于,2代表等于,0代表小于"<<endl;
while(!flag1 && high > low && n < 7)
{
goal = (Num[high] + Num[low]) / 2;
mid = (high + low) / 2;
cout<<"你要找的数大于"<<goal<<"么?"<<endl;
n ++;
cin>>flag2;
if(n == 7 && goal == 99 && flag2 == 1) //对100特殊处理,没有这个if语句,当你想着100时
{ //你会输入7个1,然后程序告诉你输入错误或者在耍他。
flag1 = 2; //对应的如果连续输入7个0的话你想着的数字绝对是
break; //小于1的,程序可以判断,这个if只是针对100这个特殊数字
} //可能是因为你要找1-100,而建立数组是0-99的原因吧
if(flag2 == 1) //写程序测试的时候就要注意边界问题。
{
low = mid;
}
else if(flag2 == 0)
{
high = mid;
}
else
{
flag1 = 1;
break;
}
}
if(flag1 == 1)
{
cout<<"你的数字是"<<goal<<endl;
}
else if(flag1 == 2) //对100特殊处理的结果输出
{
cout<<"你的数字是"<<100<<endl;
}
else
{
cout<<"你输入错误或者你在耍我"<<endl;
}
return 0;
}
13764198383
2011-03-22 · TA获得超过894个赞
知道小有建树答主
回答量:228
采纳率:50%
帮助的人:65.3万
展开全部
9
更多追问追答
追问
这是一个编写C++ 的程序……大家帮忙编写下一个完整的程序……
追答
你的数小于50吗?(是,不是)你的数小于25(75)吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式