IF 没有 IF (由“不使用IF等条件判断,输出两个数中大的那个”产生的一些随想)

本文探讨了一个在不使用IF等判断语句的情况下,通过数学方法和位运算找到两个数中较大值的解决方案。通过实例代码展示,强调思想的重要性并开启新的博客类别。

        昨天偶然看到一道很有趣的题,题目是这样的:怎么样在不使用任何IF等判断语句以及三目运算符等判断方法,来输出两个数中大的那个数。

被这样突然一限制思维,觉得好像无从下手,心里想着,这怎么做?纠结了一会儿,然后静下心来开始用笔画,用最原始的数学方法去解决,然后很快想出了解决的方法,下面是代码:



		import java.util.Scanner;

		public class Main {
			public static void main(String args[]) {
				Scanner in = new Scanner(System.in);
				System.out.println("Please Input two number:");
				float a=in.nextFloat();
				float b=in.nextFloat();
				System.out.println((a+b+Math.abs(a-b))/2);
			}
		}
	


        虽然是一个小小的问题,觉得很有意思,提醒了我思想才是最重要的基础,不能因为学习了各种语言就把思想忘记了,所以我今天开了一个新的博客类别叫"Thinking In."。

        然后去看了一下答案,答案中提供了另一种方法,也很好理解,就是利用两个数相减的符号位来判断,我将它实现了一下,代码如下:



		import java.util.Scanner;

		public class Main {
			public static void main(String args[]) {
				Scanner in = new Scanner(System.in);
				System.out.println("Please Input two number:");
				float a = in.nextFloat();
				float b = in.nextFloat();
				float[] output = new float[2];
				output[0]=a;
				output[1]=b;
				int c = (int) (a-b) >>> 31;
				System.out.println(output[c]);
			}
		}
	


但是很遗憾的是,因为JAVA自身的位运算只支持int型的数,所以如果是整数部分相等的浮点数,则没办法判断出大小来。怎么样,没有IF的世界也可以很有趣吧!

<think>我们首先需要编写一个比较个整数大小的函数。这个函数可以返回比较结果,比如返回较大的数,或者返回比较的字符串结果。然后,我们需要生成个100以内的随机整数。接着,调用这个比较函数,并将结果输出。步骤:1.定义比较函数,比如命名为compare_numbers,它接受个参数,返回比较结果。2.使用rand()或mt_rand()函数生成个0到99之间的随机整数(100以内)。3.调用比较函数,传入这个随机整数。4.输出个随机整数以及比较的结果。我们可以设计比较函数返回一个字符串,例如:如果第一个数大于第二个数,返回“a大于b”如果第一个数小于第二个数,返回“a小于b”如果相等,返回“a等于b”但也可以返回一个数组包含比较结果,或者直接输出。根据题目要求,我们应该是输出结果,所以可以在函数中返回字符串,然后在主程序中输出。另外,注意随机数生成的范围:0到99(包括0和99)或者1到100?题目要求100以内,通常包括0和100?但一般100以内整数是指0到99或1到100?这里我们可以明确为0到99(包括0和99)的整数。但是,根据引用[4]中提到的随机数生成(虽然是用Python),但思路相同,我们也可以生成1到100的整数(包括1和100)?题目没有特别说明,我们可以自己定义。这里我们按照通常理解,100以内的整数可以包括0吗?为了避免歧义,我们可以生成1到100(包括1和100)的整数。过,在PHP中,rand()函数可以指定最小值和最大值,并且包括这个边界值。我们选择生成1到100的随机整数。代码结构:-定义函数compare($a,$b)-生成个随机整数-调用函数-输出个随机数和比较结果示例输出:假设随机数是10和20,那么输出可以是:a=10,b=20,结果:10小于20或者更灵活一些,在函数中直接返回一个描述性的字符串,然后主程序中输出。我们也可以让函数返回较大的那个数,但是题目要求比较大小,所以返回比较的字符串更直观。我们采用种方式都可以,这里我选择函数返回一个字符串。具体代码:*/</think>以下是一个用PHP编写的比较个整数大小的函数示例,结合随机数生成进行调用和输出结果: ```php <?php /** * 比较个整数大小 * @param int $a 第一个整数 * @param int $b 第二个整数 * @return string 比较结果的描述 */ function compareIntegers($a, $b) { if ($a > $b) { return "$a 大于 $b"; } elseif ($a < $b) { return "$a 小于 $b"; } else { return "$a 等于 $b"; } } // 生成个100以内的随机整数(1-100) $num1 = rand(1, 100); $num2 = rand(1, 100); // 调用比较函数并输出结果 echo "随机数1: $num1<br>"; echo "随机数2: $num2<br>"; echo "比较结果: " . compareIntegers($num1, $num2); ?> ``` ### 代码说明: 1. **比较函数** `compareIntegers()`: - 接受个整数参数 `$a` 和 `$b` - 使用条件语句比较大小 - 返回格式化的结果字符串(大于/小于/等于) 2. **随机数生成**: - 使用 `rand(1, 100)` 生成1-100范围内的随机整数 - 包含边界值1和100(与Python的 `randint` 行为一致[^4]) 3. **结果输出**: - 显示生成的随机数 - 调用比较函数并输出结果 ### 示例输出: ``` 随机数1: 37 随机数2: 89 比较结果: 37 小于 89 ``` ### 关键点说明: - **随机数范围**:`rand(1, 100)` 包含1和100(闭区间) - **比较逻辑**:处理了大于、小于和等于三种情况 - **函数封装**:比较逻辑独立为函数,提高代码复用性 - **安全输出**:直接输出整数无需额外过滤(在此场景下安全)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值