猜数字,输入整数n,让程序猜,如果没有猜中,则提示太大或太小,程序通过二分法不断缩小范围,直到猜中
时间: 2024-10-08 13:01:43 浏览: 30
c语言编写的趣味菜单
猜数字游戏通常使用二分查找算法(Binary Search),其基本思路是将猜测的范围逐步缩小,直到猜中目标数字。以下是一个简单的C语言实现这个功能的例子:
```c
#include <stdio.h>
int guess_number(int low, int high, int target) {
if (low > high) {
printf("猜错了,数字不在范围内。\n");
return -1; // 没有猜中的标志
}
int mid = (low + high) / 2;
if (mid == target) {
printf("恭喜你,猜对了!\n");
return mid; // 猜测正确
} else if (mid < target) {
printf("猜的数字偏小,尝试更大的数:%d\n", mid);
return guess_number(mid + 1, high, target); // 继续缩小左侧范围
} else {
printf("猜的数字偏大,尝试更小的数:%d\n", mid);
return guess_number(low, mid - 1, target); // 继续缩小右侧范围
}
}
int main() {
int n, guess;
printf("请输入一个1到100之间的整数:");
scanf("%d", &n);
guess = guess_number(1, n, n); // 假设目标数字就是用户输入的n
if (guess == -1) {
printf("很遗憾,你没猜对,正确答案是%d。\n", n);
}
return 0;
}
```
在这个程序中,用户首先输入一个范围内的整数,然后我们开始猜。如果猜的数字等于目标,游戏结束;若猜小了,我们会继续在剩余的大数范围内猜测;若猜大了,我们会试着在剩下的小数范围内猜。这种递归的方式保证了每次猜测都能把范围减半,直到猜中为止。
阅读全文