C Primer Plus(第六版编程练习)8.11 编程练习 第5题

/*
5.修改程序清单8.4的猜数字程序,使用更智能的猜测策略。例如,程序
最初猜50,询问用户是猜大了、猜小了还是猜对了。如果猜小了,那么下一
次猜测的值应是50和100中值,也就是75。如果这次猜大了,那么下一次猜
测的值应是50和75的中值,等等。使用二分查找(binary search)策略,如
果用户没有欺骗程序,那么程序很快就会猜到正确的答案。
*/

#include<stdio.h>

char getfirst(void);

int main(void)
{
    
    
	int guess=50,max=100,min=0;
	char ch;
	printf("1到100的数字在心理默念一个,让我来猜猜看。\n如果我猜对了就按y,猜小了按a,猜大了按b\n\n");
	printf("你心里的数字是%d吗?\n",guess);
	while((ch=getfirst())!='y')
	{
    
    
		switch(ch)
		{
    
    
			case 'a':
				min=guess;
				guess=guess+(max-guess)/2;
				printf("你心里的数字是%d吗?\n",guess);
				break;
			case 'b':
				max=guess;
				guess=guess-(guess-min)/2;
				printf("你心里的数字是%d吗?\n",guess);
				break;
			default:
				printf("输入了错误的选项,请重新输入!\n");
				break;
		}
	}
	printf("我就知道我能猜到!\n");
	return 0; 	
} 
char getfirst(void)     //只读取首字母 
{
    
    
	char first;
	first=getchar();
	while(getchar()!='\n')
	continue;
	return first;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_49859755/article/details/111013492
今日推荐