题目描述
猜数游戏。玩家想好了一个1~1000之内的整数,由计算机来猜这个数。如果计算机猜出的数比玩家想的数大,则玩家输入1;如果计算机猜出的数比玩家想的数小,则玩家输入-1;这个过程一直进行到计算机猜中为止,玩家输入0。
输入
在计算机猜出的数小于想的数值时,输入-1;在计算机猜出的数大于想的数值时,输入1;在计算机猜中时,输入0。
输出
1~1000之内的整数,当键盘输入-1时,输出大于上一个输出的数值;当键盘输入1时,输出小于上一个输出的数值;当键盘输入0时,输出“Bingo”。
这个题目思路很清晰啊,使用random函数加一个while循环就搞定了啊
2分法 ,第一个猜500 ,大了 就250 ,少了就 750.以此类推 ,直到猜出结果,但是显得太机械化
就是为了表示一些人性化。随机数。1-1000的随机数N,大了 1-N之间的随机数。有点意思,不会太死板。
首先定义两个数,一个是自己想的,假设为(myNumber)需要输入,另一个是接收电脑随机数的(随机数的写法见百度),假设为(computerNumber),定义一个flagNumber存自己上一个输出的数值,然后比较两个数
if(myNumber > computerNumber){
输出1
保存当前输出的数
}else if(myNunber<computerNumber){
输出-1
保存当前输出的数
}else if(myNumber == -1){
取flagNumber-1000的整数(不包含flagNumber)
保存当前输出的数
}else if(myNumber == 1){
取1-flagNumber之间的整数
保存当前输出的数
}else if(myNumber == 0){
输出Binggo
保存当前输出的数
}else if(myNumber == computerNumber){
输出0
保存当前输入的数
}
我是学java的 可能跟C的写法不一样,但是逻辑就是这么个逻辑,应该没有什么出入 当你输入-1,1,0的时候我觉得应该是没必要保存的,不然就没啥意思了
```int main()
{
int nRand = rand() % 1000;
int nNum = 0;
cin >> nNum;
while(1)
{
if (nNum == nRand)
{
cout <<"Bingo"<<endl;
break;
}
if (nNum < nRand)
{
cout << -1 <<endl;
}
else
{
cout << 1 <<endl;
}
cin >> nNum;
}
return 0;
}