猫掌柜拿出一张纸,正面对着自己,反面对着八戒,然后猫掌柜在纸的正面写一个数字k,1<=k<=100,数字k只有他自己可以看到,八戒是看不到的。八戒会猜一个数字 mid,有以下三种情况: 1、如果mid和k相等,则猜中 2、如果mid>k,则猫掌柜会告诉八戒:你猜大了 3、如果mid<k,则猫掌柜会告诉八戒:你猜小了 八戒和猫掌柜会重复执行2、3两步,直到猜中。不过,猫掌柜最多允许八戒猜7次,若7次以内猜中,八戒会赢一两银子,若猜7次还未猜中,则游戏结束,且八戒会输掉一两银子。请问,八戒最多猜几次就能猜中这个数字?用c++代码写出
时间: 2023-12-02 22:03:39 浏览: 145
下面是用 C++ 语言实现的代码:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void guess_number(int k) {
int low = 1, high = 100;
for (int i = 0; i < 7; i++) {
int mid = (low + high) / 2;
if (mid == k) {
cout << "恭喜你,猜中了!" << endl;
return;
} else if (mid > k) {
cout << "你猜大了" << endl;
high = mid - 1;
} else {
cout << "你猜小了" << endl;
low = mid + 1;
}
}
cout << "很遗憾,你没有在7次内猜中。" << endl;
}
int main() {
srand(time(NULL));
int k = rand() % 100 + 1;
cout << "猫掌柜已经写好了一个数字,八戒开始猜吧!" << endl;
guess_number(k);
return 0;
}
```
代码中用 `srand` 和 `rand` 函数生成一个随机数作为猫掌柜所写的数字 `k`,然后通过 `guess_number` 函数实现八戒猜数字的过程。函数中使用二分查找的思想,每次根据猜测结果缩小猜的范围,最多猜7次。如果在7次内猜中,则输出恭喜信息,否则输出失败信息。
阅读全文