不用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];