2015-09-11 97 views
-7

我們如何編寫一個程序來檢查c是否是偶數或奇數,而不使用任何運算符。支票號碼是偶數還是奇數

+6

你的意思是_arithmetic_ operator?在沒有任何操作員的情況下,在C中做一些有用的事情真的很難。 –

+3

沒有運營商????? – LPs

+0

通常我們會使用mod 2 == 0來做到這一點。但是,如果這是一種類挑戰,你可以將它轉換爲一個字符串,抓住最後一個數字,然後在數組映射中查找它,如果奇數返回true或false。 – Ultimater

回答

4

我認爲你是在談論沒有算術運算符

在這種情況下,你可以問問自己,在二元什麼表示至少顯著位(0)?

所以,你可以測試一下才知道,如果一個數是奇數還是偶數:

if (number & 0x01) 
{ 
    // odd number 
} 
else 
{ 
    // even number 
} 
+0

很確定Bitwise - 並且被認爲是一個算術運算符,因爲它對數字進行處理並返回數字。 – Ultimater

+1

@Paul R:編輯的Thx。愚蠢的錯誤:D – LPs

+1

@LPs C標準調用'&'a *按位*運算符(參見ISO 9899:2011§6.5.10「按位AND運算符」)。邏輯運算符是'&&','||'和'!'。 – fuz

-1

這個怎麼樣襯

#define ISODD(x) (x&0x01)?"Yes":"No" 

好了之後有點想法的,我想出了這個

typedef struct { 
    unsigned int bit:1; 
} bitwise_t; 

int main(int argc, char **argv) { 
    bitwise_t x ; 
    x.bit = atoi(argv[1]); 
    printf("%d", x.bit); 
    return 0; 
} 

還有一個編輯:

typedef struct { 
    unsigned int bit:1; 
} bitwise_t; 

int isodd(int x) 
{ 
    bitwise_t a; 
    memcpy (&a, &x , sizeof(a)) ; 
    return a.bit; 
} 
+0

這個使用兩個運算符:按位AND運算符'&'和條件運算符'?:'。 – fuz

+0

好吧它是一種煩人的,但爲什麼下降投票和接下來的兩個編輯有什麼錯? –

+0

請參閱https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B – BLUEPIXY

4

這是一個實際工作的函數,它雖然有點作弊。結果被封裝在結構與一個構件,它是1如果數字爲奇數和0否則:

struct oddness { 
    unsigned int oddness : 1; 
} isodd(int x) { 
    struct oddness o = { x }; 
    return o; 
} 

此操作,因爲一個值,一個位域的分配引起截斷時超出範圍。感謝kkk作爲一般方法。該代碼中的令牌=不是運算符,它是C編程語言的聲明語法的一部分,參見參考資料。 ISO 9899:2011§6.7「聲明」。

看!沒有操作員媽媽!

+0

我該如何使用它?我得到錯誤[this](http://ideone.com/G4SlYV) – BLUEPIXY

+0

@BLUEPIXY結果在結果的一個結構成員中。所以像這樣使用它:'isodd(x).oddness' – fuz

+0

啊,我明白了... – BLUEPIXY

相關問題