c语言输入整数n,想让程序猜到的值,如果程序没有猜中,则提示太大或太小,并让程序接着猜,程序通过二分法不断缩小范围,直到猜中n,,并输出猜了几次
时间: 2024-10-07 20:04:44 浏览: 21
这是一个典型的二分查找问题,可以通过C语言实现。以下是一个可能的解决方案:
```c
#include <stdio.h>
int main() {
int n, guess, count = 0;
printf("请输入一个整数: ");
scanf("%d", &n);
while (1) {
int low = 1;
int high = n;
// 二分查找
while (low <= high) {
guess = low + (high - low) / 2;
count++;
if (guess == n) {
printf("恭喜你猜对了,用了 %d 次猜测。\n", count);
return 0;
} else if (guess > n) {
high = guess - 1; // 数值小了,上移高值
} else {
low = guess + 1; // 数值大了,下移低值
}
}
}
}
```
这段代码首先提示用户输入一个整数。然后在一个while循环中,它通过二分法不断猜测该整数。每次猜测,它都会通过除以2来移动猜测的范围。如果猜测的值比要找的数大,那么就向下移动范围;如果猜测的值比要找的数小,那么就向上移动范围。如果猜测的值正好是用户要找的数,那么程序就会输出“恭喜你猜对了,用了 x 次猜测。”,其中x就是猜测的次数。如果没有猜对,那么程序就会继续进行下一次猜测,直到猜对为止。
注意这个程序会无限循环下去,除非用户手动终止程序。如果你希望程序在一定次数内猜不到目标数就结束,你可以在while循环中加入一个计数器,当计数器达到某个值时跳出循环。
阅读全文