用c语言在1-1000之间,你在心里默想一个数字,计算机会用最少的步骤猜出你想的那个数,每次猜测后,你要告诉计算机错与否,如果计算机猜小了,你就输入1;猜大了,你就输入2;猜正确,输入3。用二分查找法设计并完成算法
时间: 2024-03-17 19:40:01 浏览: 59
以下是用C语言实现在1-1000之间,用二分查找法猜测用户心中想的数字的代码:
```c
#include <stdio.h>
int main() {
int left = 1;
int right = 1000;
int mid;
int response;
while (left <= right) {
mid = (left + right) / 2;
printf("计算机猜测的数字是 %d,如果猜小了请输入1,猜大了请输入2,猜对了请输入3:", mid);
scanf("%d", &response);
if (response == 1) {
left = mid + 1;
} else if (response == 2) {
right = mid - 1;
} else {
printf("计算机猜对了,这个数字就是 %d\n", mid);
break;
}
}
return 0;
}
```
程序从1-1000之间的中间位置开始猜测,根据用户的回答更新猜测的范围,最终在最少的步骤内猜出了用户想的数字。运行程序,可以看到计算机每次猜测后会等待用户的回答,根据回答更新猜测的范围,直到猜对为止。
注意,此程序假设用户输入的是合法的回答,即1、2或3。如果用户输入了其他的值,程序可能会出错。
相关问题
c语言生成1-40之间的任意一个数字
可以使用C语言中的rand()函数来生成一个随机数,然后通过取模运算限制在1-40之间。代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int rand_num;
srand(time(NULL)); // 随机数种子初始化
rand_num = rand() % 40 + 1; // 生成1-40之间的随机整数
printf("生成的随机数为:%d\n", rand_num);
return 0;
}
```
上述代码中,rand()函数生成的随机数是0-39之间的整数,通过%40操作实现了将其限制在1-40之间。需要注意的是,srand()函数只需要在程序中调用一次即可,可以放在程序的开头进行初始化。
做一个基于c语言的可以在数字1-38固定范围之间随机抽数并且不会重复的程序
以下是一个基于C语言的可以在数字1-38固定范围之间随机抽数并且不会重复的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_NUM 38
int main()
{
int nums[MAX_NUM] = {0};
int count = 0;
int num;
srand((unsigned)time(NULL));
while (count < MAX_NUM) {
num = rand() % MAX_NUM + 1;
if (nums[num - 1] == 0) {
nums[num - 1] = 1;
count++;
printf("%d ", num);
}
}
return 0;
}
```
该程序使用了一个长度为38的数组来记录已经生成的数字,初始值全部为0。每次生成一个随机数后,若该数未被使用过,则将对应数组元素置为1,同时计数器加1,并输出该数。若该数已经被使用过,则直接跳过不进行处理,直到生成了38个不重复的数字为止。
注意:由于程序使用了rand()函数来生成随机数,因此每次运行结果可能会不同。