C语言 不使用if判断求出最大值和最小值

作者 : 卿笃军

上次老师问我们,如果我给你两个整数,你们如何输出其中的较大数,或者较小数呢?

当然,一个if就搞定了,但是如果不能让你们用if判断,你还能找出来吗?

答案是当然的。

首先分析一下,加入给了我们2个数,分别是:5 和 2,这要如何找出来呢?

5 - 2 = 3  ,说明两数相差为3,我们可以从这里入手。

5 + 2 + 3 = 10 。 这不就是5的两倍吗?

5 + 2 - 3 = 4 。这是2的两倍。

哦,下面C语言实现一下:

#include <stdio.h>
#include <math.h>

int main()
{
	int a, b;
	scanf("%d%d",&a,&b);

	printf("Min = %d\n",(a+b-abs(a-b))/2); //较小数
	printf("Max = %d\n",(a+b+abs(a-b))/2); //较大数

	return 0;
}

C语言 不使用if判断求出最大值和最小值,布布扣,bubuko.com

时间: 2024-11-03 21:51:25

C语言 不使用if判断求出最大值和最小值的相关文章

【C++】输入8个数,求出最大值与最小值

//输入8个数,求出最大值与最小值 #include <iostream> using namespace std; int max(int b[],int n),min(int b[],int n); int main() { int a[8]; cout<<"输入8个int型数 :"; for(int i=0;i<8;i++) cin>>a[i]; cout<<"最大数为 "<<max(a,8)&

找出最大值和最小值的时间复杂度比较小的一种方法

       一般认为,对于给定的n个数,只要独立地找出最小值和最大值,各用n-1次比较,最多2(n-1)次就可以找出最大值和最小值.        实际上,至多3(n/2)次比较就足以同时找到最大值和最小值,具体做法是:成对的处理元素,先将一对元素互相比较,然后将最小者与当前最小值比较,将较大者与当前最大值比较,因此每两个元素需要3次比较.这里要注意n的奇偶,当n是奇数,就将最小值和最大值都设置为第一个元素,然后成对的处理剩下的元素:如果n是偶数,就对前两个元素做一次比较,以决定最大值和最小值

【c语言】输入一组整数,求出最大子序列的和

// 输入一组整数,求出最大子序列的和. // 例如:序列: - 2 11 - 4 13 - 5 - 2,则最大子序列和为20. // 序列: - 6 2 4 - 7 5 3 2 - 1 6 - 9 10 - 2,则最大子序列和为16 #include <stdio.h> int Max_Son(int *p, int len) { int Max_Sum = 0; int i, j; for (i = 0; i < len; ++i) { int sum = 0; for (j = i

Ruby求出数组中最小值及其下标

其实很简单 Ruby的Array类自带了min方法可以求出最小值,然后调用Array的index方法传入元素值就可以求出下标 1 a = [1, 2, 3, 4, 5, 6] 2 theMin = a.min #=> 1 3 theIndex = a.index(a.min) #=> 0

nyoj1185 最大最小值 (线段树求区间最大值和最小值)

对于不懂线段树的,先看为这篇文章理解下.点击打开链接 这道题普通方法 ,TLE. 最大最小值 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 给出N个整数,执行M次询问. 对于每次询问,首先输入三个整数C.L.R: 如果C等于1,输出第L个数到第R个数之间的最小值: 如果C等于2,输出第L个数到第R个数之间的最大值: 如果C等于3,输出第L个数到第R个数之间的最小值与最大值的和. (包括第L个数和第R个数). 输入 首先输入一个整数T(T≤100),表示有T组数据.

sql server求分组最大值,最小值,最大值对应时间,和最小值对应时间

先创建数据库 CREATE TABLE [dbo].[Students]( [Id] [int] IDENTITY(1,1) NOT NULL, [age] [int] NULL, [name] [nvarchar](50) NULL, [addTime] [datetime]  NULL) ON [PRIMARY] 插入几条测试数据 INSERT [dbo].[Students] ([age], [name], [addTime]) VALUES (22, N'李四', '2015-04-08

求数组最大值或最小值

1. 一维数组 const arr = [1, 5, 9, 0, 11] const maxValue = Math.max.apply(null, arr ) const minValue = Math.min.apply(null, arr ) console.log(maxValue ,minValue) 2. 多维数组 const arr1 = [2, 5, 8] const arr2 = [9, 5, 2] const convertArr = arr1.join(',').split

求数组最大值,最小值

Math.max.apply(this,[120,129,56,34,98]) //129 Math.max.call(this,120,129,56,34,98) //129 Math.min.apply(this,[120,129,56,34,98]) //34 Math.min.call(this,120,129,56,34,98) //34 原文地址:https://www.cnblogs.com/AnnieShen/p/9253638.html

求数组的最大值和最小值

求数组的最大最小值,可以遍历一遍数组,然后分别记录最大值和最小值,这种方法需要的比较次数为2N次.如果想要减少比较次数,可以采用的方法是遍历数组,然后比较相邻元素,把相邻元素的较大值放在后面,较小的放在前面.在从较大值中选取最大值即为整个数组的最大值,从较小值中选取最小值即为整个数组的最小值.这时,需要的比较次数为1.5*N次. void findmaxmin(int a[],int n) { if(a==NULL||n<0) return ; int i=0; int maxe=0x80000