有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...