精品欧美无遮挡一区二区三区在线观看,中文字幕一区二区日韩欧美,久久久久国色αv免费观看,亚洲熟女乱综合一区二区三区

        ? 首頁 ? 百科知識 ?趣味火柴棍

        趣味火柴棍

        時間:2023-10-16 百科知識 版權反饋
        【摘要】:題目中要求模擬一個人機對戰(zhàn)游戲,對戰(zhàn)時要不斷修改一個“變量”的值,這個變量的初值為火柴棍的總根數(shù)———21。假設變量stickNum代表火柴棍的總根數(shù),最終stickNum的值為1且這個1應由甲方取得。程序中for循環(huán)的循環(huán)變量i從1變化至4正好對應這四輪。其中for循環(huán)的循環(huán)體中又包含一個while循環(huán),這個while循環(huán)也很重要,它的作用是過濾非法的取火柴棍個數(shù)。本題不僅只有一種方法,讀者可以嘗試其他解題思路來進行程序設計。

        趣味火柴棍

        生活中有許多小游戲,游戲中往往蘊含著智慧與“玄機”,譬如一根小小的火柴棍照樣可以玩出大樂趣。下面就以C語言為工具來開發(fā)一個小小的火柴棍游戲。

        一、需求分析

        兩人以火柴棍“對弈”:現(xiàn)共有21根火柴棍,兩人輪流取這些火柴棍,每人每次可取走1~4根(1、2、3、4根均可),但不可多取(大于4根),也不能不取,誰取到最后一根火柴棍則認定誰輸。編寫一個程序模擬人機對弈戰(zhàn)況,要求人先取,計算機后取,務必保證計算機每次都贏,使之成為“常勝將軍”。

        二、總體設計

        題目中要求模擬一個人機對戰(zhàn)游戲,對戰(zhàn)時要不斷修改一個“變量”的值,這個變量的初值為火柴棍的總根數(shù)———21。最難的地方在于務必使計算機取得最終的勝利,這就需要使用一定的方法和技巧來實現(xiàn)這個目標。

        限制條件有:(1)共21根火柴棍;(2)人先取,然后計算機取,依此順序進行下去;(3)每人每次取x根,其中x大于等于1,小于等于4;(4)計算機贏。我們不妨采用逆向思維,設甲乙雙方,甲方為對戰(zhàn)計算機的人,乙方為計算機。假設變量stickNum代表火柴棍的總根數(shù),最終stickNum的值為1且這個1應由甲方取得。21根中除了最后1根還有21-1共20根火柴,這里令甲乙各取一次為一輪,顯然這20根火柴必須經(jīng)過整數(shù)輪來取(保證下一輪是甲方取最后的一根)。

        根據(jù)每一輪甲乙取的火柴棍之和必然位于2與8之間(每人每次可取1、2、3或4根火柴),可以得到這樣一個結論:可能的整數(shù)輪取值范圍為2~10,接下來篩選符合條件的。第一次篩選的條件為能夠整除20,符合條件的有2、4、5、10。接下來再次篩選。

        (1)2輪:不符合條件,這要求每輪取的總根數(shù)為10根;

        (2)5輪:不符合條件,每輪取4根,若甲取4根,則乙只能取0根,與題意矛盾;

        (3)10輪:不符合條件,每次只能各取1根或一人取2根另外一人取0根。

        綜合上面的各種分析,只有進行4輪是最合理的解決辦法,每輪甲乙共取5根。若甲方取x根,則下一次乙方取5-x根。分析出這個結果,問題就迎刃而解了。只需要使用一個循環(huán)結構即可完成上述要求。

        三、案例源代碼

        img444

        img445

        四、系統(tǒng)運行

        (1)單擊【調(diào)試】工具欄中的編譯按鈕、鏈接按鈕和運行按鈕即可運行該游戲。系統(tǒng)運行后在命令行中顯示了游戲說明,并提示用戶輸入要取火柴棍的根數(shù),如圖2-1所示。

        img446

        圖2-1

        (2)根據(jù)游戲規(guī)則,用戶可以輸入1~4之間的一個整數(shù),例如3。按【Enter】后系統(tǒng)顯示對手(計算機)所取根數(shù)以及剩余總根數(shù),并再次提示用戶進行選擇。如圖2-2所示。

        img447

        圖2-2

        (3)根據(jù)游戲規(guī)則,用戶可以再次輸入1~4之間的一個整數(shù),例如2。按【Enter】后系統(tǒng)顯示對手(計算機)所取根數(shù)以及剩余總根數(shù),并再次提示用戶進行選擇。如圖2-3所示。

        img448

        圖2-3

        (4)根據(jù)游戲規(guī)則,用戶可以再次輸入1~4之間的一個整數(shù),例如4。按【Enter】后系統(tǒng)顯示對手(計算機)所取根數(shù)以及剩余總根數(shù),并再次提示用戶進行選擇。如圖2-4所示。

        img449

        圖2-4

        (5)根據(jù)游戲規(guī)則,用戶可以再次輸入1~4之間的一個整數(shù),例如4。按【Enter】后系統(tǒng)顯示對手(計算機)所取根數(shù),此時僅剩余1根火柴供用戶選擇,系統(tǒng)提示游戲結束。如圖2-5所示。

        img450

        圖2-5

        五、程序分析

        這個題目看似十分復雜,經(jīng)過分析之后可以發(fā)現(xiàn)其中的奧妙所在,即保證兩人所取火柴棍總和為5,共需要經(jīng)過甲乙、甲乙、甲乙、甲乙共四輪的取火柴棍順序,接下來留給甲的只有1根火柴棍。程序中for循環(huán)的循環(huán)變量i從1變化至4正好對應這四輪。其中for循環(huán)的循環(huán)體中又包含一個while循環(huán),這個while循環(huán)也很重要,它的作用是過濾非法的取火柴棍個數(shù)。因為題目中限定了每人每次只能取1~4根,所以凡是不在這個范圍內(nèi)的都會提示出錯信息,必須重新輸入數(shù)據(jù)。

        本題不僅只有一種方法,讀者可以嘗試其他解題思路來進行程序設計。如果題目中的條件之一改為每人每次可取走1~3根的話程序又該如何修改呢?

        六、小結

        本章利用C語言開發(fā)了一個趣味小游戲———火柴棍游戲,主要使用了循環(huán)以及循環(huán)的嵌套結構來實現(xiàn)。結構化程序設計中順序結構、選擇結構和循環(huán)結構是三種基本結構,因此掌握好這三種基本結構對于開發(fā)復雜的程序具有十分重要的意義。這就好比蓋樓房打地基一樣,只有基礎扎實了,樓房才能更高更穩(wěn)。進行程序設計也是一樣的道理,基礎知識掌握牢固、熟練,才會熟能生巧、融會貫通。

        免責聲明:以上內(nèi)容源自網(wǎng)絡,版權歸原作者所有,如有侵犯您的原創(chuàng)版權請告知,我們將盡快刪除相關內(nèi)容。

        我要反饋