对于比较三个未知数大小的题目,往往都有不同的解法,以下我将为读者讲两种方法,并且每种方法都详细地进行讲解,如果能为你解决问题提供帮助,就请点赞、收藏、分享,废话不多说,让我们开始。
题目:输入三个整数,写代码将三个整数按照由大到小的顺序打印到屏幕上。
输入:2 3 1
输出:3 2 1
解析:本题考察的是运用计算机语言来讨论大小的能力,说到底就是考数学在计算机中的运用。
方法一:分类讨论
首先我们可以将三个整数设为a,b,c,但大小关系我们尚未得知,但我们可以假设三个数中存在一个最大值(或许多个,例如两个最大值相等时),接着再讨论另外两个值的大小(如果有两个最大值就剩下一个垫底的)。
根据上面的提示我们应该能想到用if语句将最大值限定出来,接着再用if else语句嵌套再里面进行讨论。我们可以得到如图所示的代码:
需要注意的是,为了避免出现输入相同元素时无法打印的情况,需要在最外层判断时用>=号!
方法二:交换数值
运用这种这种方法的核心是将未知关系的三个数转换成大小关系确定的三位数。让我们看例子:由上题我们知道我们要比较a,b,c三个未知数,并将其由大到小排列,那么我们可以将未知关系大小的a,b,c转换为确定的a>b>c。并将其按顺序排列即可。由此我们得知我们的首要目的是将a,b,c的值互相交换,以达到a>b>c 这个形式。
在计算机里我们要交换两个变量的数值,单有两个变量是行不通的,这就好比两个杯子,一杯是果汁一杯是醋,我们不可能两杯倒在一起,这样交换肯定是不行的。所有我们可以引入一个新杯(变量),这样才能达到我们想要的效果。于是我们可以写出下图所示代码:
如图max就是我们新引入的变量。
我们来先分析一下第一个代码块,被if语句扩起来的就是所要交换数值的变量,这样我们就能将a和b的值进行交换了(第一个代码块),这样被交换完后就能得到a>b,接着逐一进入下一个if语句中进行比较,我们就能得到a>b>c,经过printf()打印后就能很好地打印出来
有一点需要注意的是,这里必须写三个if语句,切勿写成if else或者if else if else这两种形式,因为在这两种情况下,if语句只能执行一次,没办法做到逐一比较,这点很重要!不然很有可能出现比较不全打印出错的情况。