C 練習02 魔術師發牌問題

2022-04-01 17:17:58 字數 1052 閱讀 7741

【問題描述】

魔術師利用一副牌中的13張黑牌,預先將他們排好後疊放在一起,牌面朝下。對觀眾說:「我不看牌,只數數就可以猜到每張牌是什麼,我大聲數數,你們聽,不信?現場演示。」

魔術師將最上面的那張牌數為1,把他翻過來正好是黑桃a,將黑桃a放在桌子上,然後順序從上到下數手上的餘牌,第二次數1,2,將第一張牌放在這些牌的下面,將第二章牌翻過來,正好是黑桃2,也將它放在桌子上,第三次數1,2,3,將前面兩張依次放在這些牌的下面,再翻第三章牌正好是黑桃3。這樣依次進行將13張牌全部翻出,準確無誤。

【問】:牌的開始順序是如何安排的?

【問題分析】

簡單題,直接上圖:

【**實現】

/*

** 魔術師發牌問題

* @author cocoonfan

* @date 2/28/2013**/

#include

using

namespace

std;

const

int max_poker = 13;//

撲克牌的張數

intmain()

;//定義13張撲克牌

int count(0);//

計數器int index(0);//

游標for(int i(1); i <= max_poker; ++i)

//構成迴圈

j = (j+1)%14

; index = j;//

記錄當前位置

//插入撲克牌

if(count ==i)}}

//列印結果

for(int i = 0; i < max_poker; ++i)

return0;

}

【結果】

1  8  2  5  10  3  12  11  9  4  7  6  13

魔術師發牌問題

說有乙個魔術師,他表演發牌的魔術,他將十三張黑桃牌放在一堆。然後開始數數,第一次,他數1,然後翻開第一張,果然是黑桃a,然後將黑桃a放到牌堆外。然後魔術師繼續數數,這次他數1,2,然後將數1的牌放到牌堆底,然後將數2的牌翻開,果然是黑桃2,然後將黑桃2放到一邊。繼續數1,2,3,果然每次都是對應的牌...

魔術師發牌問題

先搞清楚題意 注意按順序每翻到一張牌放到桌子上,不在手中了,其實是迴圈鍊錶的問題,可以在紙上模擬一下就可以得到牌開始的順序。1 一開始寫的比較麻煩 用兩個迴圈鍊錶,乙個放數字,乙個放序號,邊構造邊刪除,因為翻出來的牌已經放在一邊不在手上了,再用乙個card陣列存放開始的牌的順序。include st...

魔術師發牌問題

問題描述 魔術師手中有a 2 3 j q k十三張黑桃撲克牌。在表演魔術前,魔術師已經將他們按照一定的順序疊放好,有花色的一面朝下。魔術表演過程為 一開始,魔術師數1,然後把最上面的那張牌翻過來,是黑桃a 然後將其放到桌面上 第二次,魔術師數1 2 將第一張牌放到這些牌的最下面,將第二張牌翻轉過來,...