//xk> 例題
【題目】不用if, ?: , switch等判斷語句,找出兩個給定變數中的最大值和最小值
【解答】要注意直接a + b可能導致溢位。
下面的解答來自《程式設計師面試寶典》第二版,很明顯存在溢位問題。不過這種思路有點意思。
int max = (a + b + abs(a - b)) >> 1;
int min = (a + b - abs(a - b)) >> 1;
這個題純粹是奇淫技巧,沒多大意義。下面的解更好一些,不過異號運算時a - b也可能會溢位!
int max = a - (((a - b) >> 31) & (a - b));
int min = a + (((b - a) >> 31) & (b - a));
//xk> 例題
【題目】不用第3個變數,交換兩個中存放的值。
【解答】這就是程式設計中常用的小技巧鳥。下面的解答形式優美好記,三個^=運算子中間交替填上兩個變數名
a ^= b ^= a ^= b;
NYOJ 最大值和最小值
最大值和最小值 時間限制 1000 ms 記憶體限制 65535 kb 難度 1 描述 小明在上c語言課時老師布置了一道程式設計作業,要求是給你乙個數 數的長度小於100 讓你求出由該數的數字組成的最大值和最小值,由於小明程式設計學的不好但為了完成作業,想請你幫助他。輸入第一行輸入乙個數n 0輸出 ...
交換最小值和最大值
本題要求編寫程式,先將輸入的一系列整數中的最小值與第乙個數交換,然後將最大值與最後乙個數交換,最後輸出交換後的序列。注意 題目保證最大和最小值都是唯一的。輸入格式 輸入在第一行中給出乙個正整數n 10 第二行給出n個整數,數字間以空格分隔。輸出格式 在一行中順序輸出交換後的序列,每個整數後跟乙個空格...
交換最小值和最大值
此題使用函式做法 7 4 交換最小值和最大值 15分 本題要求編寫程式,先將輸入的一系列整數中的最小值與第乙個數交換,然後將最大值與最後乙個數交換,最後輸出交換後的序列。注意 題目保證最大和最小值都是唯一的。輸入格式 輸入在第一行中給出乙個正整數n 10 第二行給出n個整數,數字間以空格分隔。輸出格...