辗转相除法
一种数学上的求最大公约数的方法,在编程中同样适用。
数学解释:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。
太抽象了,举例说明。
求24与18的最大公约数。
24 / 18 =1.........6;
将除数18换成被除数,将余数6换成除数:18 / 6 =3;
没有余数,证明24与18的最大公约数为6。
运用在编程中:
猜数字的小游戏
在编码之前想一下,编码流程:
1.我们需要一个登录页面。.结束游戏的按钮,重新开始的按钮。
2.进入游戏后,系统要随机分发一个数字。
3.游戏途中,如果猜错了的提示,如猜大了,猜小了,猜对了。
之后逐一击破。
1.
2.游戏函数:
游戏函数之前,我们先引进一个rand()的函数。
rand会随机返回一个数字。但是,需要用srand定义。
srand函数是什么?
说直白点,srand里的数,会在rand里面反应出来对应的数。加入srand(1),rand中会输出一个对应的不变的数字。
那么怎么让rand输出一个随机的数字。找一个每段时间都变化数字放在strand中,可以是时间。
在引进一个函数time()
引进个概念,时间戳。
时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。
所以这样srand中含有一个随机数,而sand也输出一个随机数。这样计算机随机数的输入就成立了。
解释下为什么要r=rand()%100+1;为了控制r的取值范围在1到100之间。
那,rand的范围是多少呢。需要一个指令RAND_MAX
那0x7fff又是多少呢?”0x“为十六位进制的表示。
所以rand()的范围 时0到32767,太大了所以把它缩小到1到100。
最后,测试:
成功。