1. 程式人生 > >不用if比較兩個數大小

不用if比較兩個數大小

最近去面試遇到一個很新鮮的題目和大家分享下:

一、題目:有兩個變數a,b,不用“if”,“? :”,switch或者其它判斷語句,找出兩個數中間比較大的?

二、

/*
方法1:取平均值法
大的為 ((a+b)+abs(a-b)) / 2
小的為 (a+b - abs(a-b)) / 2
*/
int fMax1(int a, int b)
{    
    return  ((a+b)+Math.abs(a-b)) / 2; 
}
/*
方法2:不使用abs()
a<b時,a/b=0,所以前面為b*(b/a),後面為b/a,那麼結果就是b
a=b時,a/b=1,所以前面為a+b=2a,後面為2,那麼結果就是a
a>b時,b/a=0,所以前面為a*(a/b),後面為a/b,那麼結果就是a
*/
int fMax2(int a, int b)
{
    int larger = (a*(a/b) + b*(b/a))/(a/b + b/a);
    //long smaller = (b*(a/b) + a*(b/a))/(a/b + b/a);
    return larger;
}

還有很多方法,參考:http://blog.csdn.net/xiaocha2008/article/details/6786989

相關推薦

不用if比較個數大小

最近去面試遇到一個很新鮮的題目和大家分享下: 一、題目:有兩個變數a,b,不用“if”,“? :”,switch或者其它判斷語句,找出兩個數中間比較大的? 二、/* 方法1:取平均值法 大的為 ((a+b)+abs(a-b)) / 2 小的為 (a+b - abs(a-b

位運算之不使用任何比較判斷比較個數大小問題

【題目】 對於兩個32位整數a和b,請設計一個演算法返回a和b中較大的。但是不能用任何比較判斷。若兩數相同,返回任意一個。 給定兩個整數a和b,請返回較大的數。 測試樣例: 1,2 返回:2 【分析】 不用分析了,直接給程式碼,我第一次沒有仔細讀題,實際上用了判斷的,解

通過條件運算子比較個數大小比較個數大小

程式碼如下: #include<stdio.h> int main() { int a,b; int max; scanf("%d %d",&a,&b); max=

比較個數大小彙編解析

比較兩個數的大小, 用C語言寫很容易 int compare1(int x, int y) { if (x > y) { return 1; } else if (x == y) { retu

Java學習---比較個數大小

import javax.swing.JOptionPane; public class Compare{ public static void main(String[] args){ String s1,s2; s1=JOptionPane.show

比較個數大小

題目要求 寫一個shell指令碼,比較兩個數的大小,支援浮點數,兩個數通過shell引數的形式提供。 參考答案 #!/bin/ba

比較個數a、b的大小,不能使用大於/小於、if、switch,?:等判斷語句

本文摘自:http://tangyuan1314.iteye.com/blog/1485559 今天面試碰到了這個問題,知道是位操作,不過當時沒想起來,回來查了查總結一下。其實方法很簡單,就是相減後看符號位,將減的結果的符號位移位到末尾,再和1與操作,或者直接和0x8000

【C++】3.比較個數大小

names main return copyright argc right har div ++ // // main.cpp // 2_3 // // Created by T.P on 2018/3/4. // Copyright ? 2018年 T.P. A

C語言函式的呼叫——比較個數大小

今天我們要寫的是用呼叫函式的方法來 比較兩個數字的大小 我們先看看程式的執行效果   一、先寫好框架 #include<stdio.h> void main() { }   二、然後定義我們需要的變數 int i,j;//只有兩個

shell 程式設計入門 比較個數大小

shell 程式設計入門#!/bin/sh #The function used to compare the two numbers vara=$1 varb=$2 if [ -z $vara ] || [ -z $varb ] then echo "please inp

switch比較個數大小

#include <stdio.h> int main(void) {     int a,b;     printf("please input two number:\n");     scanf("%d %d",&a,&b);     swi

比較個數大小,交換個數的 方法總結

面試寶典中看到的,記錄下來,與大家共勉 1、比較兩個數的大小 /*比較兩個數的大小,不要使用if判斷*/ #include <stdio.h> #include <math.h> int main() { int a, b; pri

Python 比較個數大小(三元表示式)

利用三元表示式來比較Python中兩個數的大小: 尤其注意最後面沒有冒號。 def f(a,b): # 在此處需要加return來作返回值,也可以將結果賦值給一變數 # 如: x = (a,b) if a>b else (b,a) return (a,b) if

比較個數大小

#include <iostream> using namespace std; int main() { int x,y; cout<<"Enter x and y: "; cin>>x>>y;

Java中如何比較個數大小

在Java中,經常會進行兩個數之間的比較,當被比較的兩個數均為整數時,按如下程式碼進行比較即可: int a=2; int b=5; System.out.println(a==b); 執行的結果為false。 當兩個數為浮點數時,若直接進行比較,可能會產

Java對數組的操作(三)—比較個數組中的元素是否同樣的最簡單方法

con data println test popu pan equal main spa 呵呵呵,實現Java比較兩個數組中的元素是否同樣的功能你是怎麽做的?看以下最簡單方法: import java.util.Arrays;

Python 比較個數組的元素的異同

section pri 異同 blog nio 兩個 set diff int 通過set()獲取兩個數組的交/並/差集: print set(a).intersection(set(b)) # 交集 print set(a).union(set(b)) #

ios開發之--比較個數組裏面的值是否相同

相同 obj sco break nsa iso img ios開發 mut 比較兩個數組裏面的內容是否相同,代碼如下: NSArray *array1 = [NSArray arrayWithObjects:@"a", @"b", @"c", nil]; NSA

輸入個長度相同的字串,比較個數在相同位置的字元是否相同

#include<iostream> #include<string.h>//因為要測字串長度,所以要加標頭檔案; using namespace std; int main() { char a[10],b[10];//根據題意而設定字串大小; int i,j=0,

比較N個數大小

比較N個數大小 程式碼如下: #include <stdio.h> int main() { int n; printf("Please input n:\t"); scanf("%d",&n); int i,t,j,a[n];