本帖最后由 繁华落幕 于 2015-11-14 22:00 编辑
本宝宝刚学C语言,只能把这个程序做成这样了,附猜数秘诀。大牛勿喷,纯属新(po)手(shi)帖(shui)
其实,有了这个秘诀以后,猜1-100内的数只需要7次就可以猜出哦~
[C++] 纯文本查看 复制代码 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
system("title 非正常人类研究所开发的猜数游戏");//本宝宝程序的标题,我一定不会告诉你title后面的空格不能丢
srand(time(0));
int number = rand()%100+1;//随机产生的1-100之间变量 %100则是对100取余 x%n的结果是[0,n-1]的一个整数
int count = 0;//猜想的次数
int a = 0;//输入的数
printf("本宝宝已经想好一个1到100之间的整数。\n");
do{
printf("请猜想这个数:");
scanf("%d", &a);//输入的数(a)
count ++;//每输入一次则让count+1
if ( a > number ){//判断a是否大于number
printf("您所猜想的这个数大了\n");//如果大于则输出该行
} else if ( a < number ){//否则继续判断a是否小于number
printf("您所猜想的这个数小了\n");//如果小于则输出该行
}
} while ( a != number );//如果输入的数为随机产生的数则走出判定,执行下面的代码,反之将继续进行do-while循环
printf("恭喜,你用了%d次成功将本数[%d]猜出,游戏结束!\n", count, number);//输出猜想的次数以及正确答案
system("pause");//防止编译出来的exe文件在执行完后就一闪而"退",代码作用:按任意键继续...
return 0;
}
其实猜数秘诀就是“二分法”,也就是说对半分嘛,二分法,就是通过不断的分割(其实就是中分法),从而求出零点的近似值。
例如:先猜100的一半,猜出50:
如果大了就把50对半分,猜出50-25=25:
如果大了就把25对半分,得到12/13,猜出25-12/13=13/12
<以此类推>
如果小了就把25对半分,得到12/13,猜出25+12/13=37/38
<以此类推>
如果小了也把50对半分,猜出50+25=75:
如果大了就把25对半分,得到12/13,猜出75-12/13=63/62
<以此类推>
如果小了就把25对半分,得到12/13,猜出75+12/13=87/88
<以此类推>
|