C C 深入位運算之比賽順序

2021-07-14 12:39:03 字數 1399 閱讀 5347

有5個人參加比賽,有人讓他們**比賽結果

a選手說:b第一,我第三。

b選手說:我第二,e第四。

c選手說:我第一,d第二。

d選手說:c最後,我第三。

e選手說:我第四,a第一。

比賽結束後,每位選手都說對了一半,請程式設計確定比賽的名次。

定義五個變數a,b,c,d,e,分別代表五個選手的名次;

用5個for迴圈進行巢狀,讓他們各個從1開始遞增。

最內層for迴圈用乙個if判斷語句

當符合題目要求時,輸出他們各個人的名次

}這裡面有很多不符合的結果,從第二個開始

a=2 b=1 c=5 d=2 e=4 這裡有兩個第二,沒有第三,卻又第四第五

所以,現在這個程式是有問題的!

我們需要進行的是檢查是否存在跨名次的情況

比如 1 2 2 4 5

但不代表所有的數字各不相同

因為,仔細觀察你就會發現,根本沒有不重複的名次!

增加乙個變數num進行判斷

這裡我們用的是位運算

具體方法是根據名次的大小把num(0)的第x位置為1(x為名次的具體大小)

num = 0;

num |= 1 <

num |= 1 <

num |= 1 <

num |= 1 <

num |= 1 <

具體事例看下圖:

if (num == 0)//利用改進的條件進行判斷輸出

printf("a = %d b = %d c = %d d = %d e = %d\n", a, b, c, d, e);}}

}}} }system("pause");

return 0;

}(1)要慢慢深入位運算,這是計算機最喜歡的運算

理解位運算會逐步提高我們的程式設計能力 

(2)提高將問題轉換成程式設計能力,也就是閱讀題目的能力

多想辦法來將乙個實際問題轉化為程式設計問題

------------->>>

利用位運算來計算二進位制中1的個數

C C 位操作 位運算

在c語言中,可以單獨操控變數的位 bit 一般高階語言不會處理這級別的細節,c在提供高階語言便利的同時,還能為組合語言所保留的級別上工作,這使其成為編寫裝置驅動程式和嵌入式 的首選語言。目錄 二進位制整數 binary 有符號整數 八進位制 octal 十六進製制 hex 位運算子 按位與 的用途 ...

C C 常見位運算

左移運算子 右移運算子 無符號右移運算子 按位與 按位或 按位非 按位異或,相同位為0,不相同為1 判斷x是奇數還是偶數 x 1 0 x乘以乙個2的n次方的數 x n 消去x最後一位的1 x x 1 求x的相反數 x 1 或者 x 1 x的異或操作 x x 1 把x從右邊數第n位變1 x 1 n 1...

c c 位運算妙用

在vc 程式設計中,會發現微軟的很多api裡面都用到了位運算,比如這個函式 createwindowexa in dword dwexstyle,in opt lpcstr lpclassname,in opt lpcstr lpwindowname,in dword dwstyle,in intx...