龙空技术网

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

码上起飞 171

前言:

今天朋友们对“鸡兔同笼c语言算法”可能比较看重,姐妹们都需要学习一些“鸡兔同笼c语言算法”的相关资讯。那么小编也在网络上搜集了一些关于“鸡兔同笼c语言算法””的相关内容,希望各位老铁们能喜欢,各位老铁们快快来了解一下吧!

在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

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

标签: #鸡兔同笼c语言算法