搜索
写经验 领红包
 > 育儿

鸡兔交换问题公式(交换值的变异范围)

导语:详解信息学奥赛 七.交换变量的值 鸡兔同笼

鸡兔交换问题公式(交换值的变异范围)

在C++中“=”作为赋值运算符,我们之前已经用过很多次了。

今天我们主要讲一下《信息学奥赛一本通》赋值语句这一节中的两道例题。

例一. 输入两个正整数a和b,试交换a和b的值。

这道题有一个陷阱,如果我们之前没接触过这种题,很容易被坑。写成这样:

但是我们发现,程序运行之后,完全不是我们要的结果:

到底是哪错了呢?

问题就出在这:

a=b;

b=a;

假如说我们输入a的值是1,b的值是2.

在a=b这步时,a的值就是2了

然后让b=a,b还是2 。

这就不是互换了,而是都变成b的值了。

我们要达到互换的 目的,我们需要一个用来中转的变量c。

这样,我们先把a的值赋给c,然后把b的值赋给a,再把c的值赋给b,这样就可以了。

看看运行结果,这回换过来了:

例三. 鸡兔同笼。

笼子里有若干只鸡和兔,头共30个,脚共90只。问笼中鸡和兔各有多少只?

在这道题里,我们可以定义4个变量,c r f h

c代表鸡,r代表兔,f代表脚,h代表头

根据题意,我们可以得到:

c+r=h

2c+4r=f

如果我们解数学题,可以将这两个等式列一个方程组,然后计算出来就可以了。

不过在C++中这样显然是不行的,因为我们不能把一个值赋给一个表达式。

所以需要我们稍微计算一下。经过计算我们得出:

c=h-r

2(h-r)+4r=f

r=(f-2h)/2

现在我们可以编写代码了:

本文内容由小涵整理编辑!