假如我们不知道两个数的大小,那么该怎样让计算机帮我们输出较大的数或较小的数呢?

关于数的比较大小,我们通常情况下会习惯于利用if语句去帮我们判断并输出我们想要得到的结果,现在需求是不知道两个数的大小,去输出较大数或较小数,其实也就是限制了使用if语句去判断.
这个题目其实就是一个小的思维拓展,换角度去思考一个看似很简单的问题.
这样来思考,给出两个数,前提是我们无法判断这两个数的大小,需要另辟蹊径,这时我们就要从两个数所具有的关系出发,不论两数谁大谁小,我们可以确定的是两个数的差值是不会变的,这也就是说,较小数加上这个差值就会等于较大数,相反,较大数减去这个差值就会等于较小数.
有了这个关系,我们对两个数的差值进一步分析,由于两数大小未知,所以两数的差值正负不确定,所以我们可以用绝对值来表示,假如这两个数是a,b,那么这两个数的差值就是abs(a - b).这样我们就可以不判断两数大小转而利用这些关系去完成我们的题目需求了,代码如下:

#include <stdio.h>
#include <stdlib.h>
int Judge_BigNumber(int a, int b){
	return ( a + b + abs(a - b) ) / 2;
	//无论a还是b为较小数,加上差值的绝对值,就为较大数,再加上另一个数(即为较大数),就为较大数的2倍,所以需要再除以2
}
int Judge_SmallNumber(int a, int b){
	return ( a + b - abs(a - b) ) / 2;
	//无论a还是b为较大数,减去差值的绝对值,就为较小数,再加上另一个数(即为较小数),就为较小数的2倍,所以需要再除以2
}
int main(){
	int a = 10;
	int b = 20;
	int max, min;
	max = Judge_BigNumber(a, b);
	min = Judge_SmallNumber(a, b);
	printf("max = %d, min = %d\n", max, min);
	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值