亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于C語言的斗地主發(fā)牌程序的實現(xiàn)

        2014-01-01 00:00:00錢學(xué)林
        計算機光盤軟件與應(yīng)用 2014年4期

        摘 要:斗地主發(fā)牌程序是撲克牌發(fā)牌程序的一種,本程序由C語言編寫,主要涉及一維二維數(shù)組、全局變量、隨機數(shù)的生成、排序、函數(shù)的定義等基本知識。本程序由五個函數(shù)模塊來實現(xiàn)功能,分別為洗牌、發(fā)牌、排序、打印四個子函數(shù)和主函數(shù),分別使用到了隨機數(shù)的生成、數(shù)組、選擇排序、switch語句等知識。另外,程序還使用了全局變量來簡化程序內(nèi)容。

        關(guān)鍵詞:子函數(shù);隨機變量;排序;數(shù)組

        中圖分類號:TP311.1

        1 問題說明

        1.1 在編寫斗地主發(fā)牌程序過程中,主要實現(xiàn)以下功能

        計算機能生成一副54張的牌,并且按照斗地主的規(guī)則,能隨機打亂牌的順序(洗牌),并且分牌給3名玩家(發(fā)牌),并分出3張牌作為底牌。每位玩家的手牌和底牌都應(yīng)按照大小、花色排列好(排序)。最后,計算機能顯示出每位玩家的手牌以及底牌(打?。?。

        1.2 在編寫斗地主發(fā)牌程序過程中,主要遇到的問題

        (1)如何實現(xiàn)牌的打亂;(2)如何將牌發(fā)給玩家,一次性還是一個一個的發(fā)等等;(3)如何將按既按照大小,又按照花色進(jìn)行排序;(4)如何將花色進(jìn)行打印。

        2 程序內(nèi)容

        2.1 程序流程圖

        圖1

        2.2 算法描述

        本程序主要使用了兩個算法:隨機數(shù)的生成和選擇排序法。

        2.2.1 隨機數(shù)的生成

        隨機數(shù)的生成主要使用了srand(time(0))和r=rand()%(54-i)+i兩段代碼,先從1-54中隨機選擇一個數(shù)與1交換,再從2-54中隨機選擇一個數(shù)與2交換……依次類推,從而達(dá)到了洗牌的目的。其復(fù)雜度為O(N),N=54。

        2.2.2 選擇排序。選擇排序主要用到的算法程序為:

        for(i=0;i

        {

        for(j=i+1;j

        {

        if(S[i]>S[j])

        {

        temp=S[i];

        S[i]=S[j];

        S[j]=temp;

        }

        }

        }

        既將數(shù)組中,每一位的數(shù)都與其后面的數(shù)進(jìn)行比較,若比后面的大,則交換數(shù)的位置,直到最后,將這組數(shù)組按從小到大的順序排序。在本程序中,也運用選擇排序,將每位玩家的手牌和底牌都進(jìn)行排序,不同的是進(jìn)行了兩次排序,分別對牌的大小和花色進(jìn)行排序。其復(fù)雜度為2*O(N^2),N=54,空間復(fù)雜度為2*1。

        2.3 變量說明

        全局變量:程序中定義了多了全局變量,大大簡化了程序的復(fù)雜程度和繁瑣的定義以及函數(shù)實參的調(diào)用,具體有存放三玩家手牌的數(shù)組player[][],存放底牌的數(shù)組LastCard[],以及循環(huán)計數(shù)量i,j,k。

        2.4 函數(shù)說明

        2.4.1 void shuffle()——洗牌函數(shù)

        洗牌函數(shù)的思路是先定義數(shù)組poker[],用來存放54張撲克牌,然后運用隨機數(shù)的生成,從1-54中隨機抽取一個數(shù),與1交換;從2-54中隨機抽取一個數(shù),與2交換……從i-54中抽取一個數(shù),與i交換,再借助于循環(huán)語句,從而數(shù)組poker[]中的54個定義撲克牌的數(shù)隨機打亂交換,達(dá)到了類似洗牌的目的,并且仍舊存放在poker[]中。

        2.4.2 void deal()——發(fā)牌函數(shù)

        發(fā)牌函數(shù)定義時使用了形參a[],在實際調(diào)用時,傳遞進(jìn)去的是之前已經(jīng)隨機打亂的數(shù)組poker[]。此函數(shù)的目的是將撲克牌發(fā)給3位玩家,并留3張牌最為底牌。因為從概率上來講,對于隨機打亂的牌,一次發(fā)一張和一次發(fā)一沓是一樣的,并且這次程序最終是顯示玩家手牌,不顯示發(fā)牌過程。所以,在發(fā)牌時,滿足公平的情況下,側(cè)重于編程的簡單,不考慮實際規(guī)則,選擇一次發(fā)一沓的發(fā)牌方式。運用循環(huán)語句以及player[j][i%17]=a[i]語句,將牌“發(fā)”給每位玩家,并取最后3張牌最為底牌。

        2.4.3 void sort()——排序函數(shù)

        排序函數(shù)主要運用循環(huán)語句,if語句以及選擇排序算法對每位玩家以及底牌進(jìn)行排序。由于之前對54張撲克牌進(jìn)行定義,分別另花色紅桃、方塊、草花、黑桃為1、2、3、4;另A-k為1-13,從而每一張牌定義成一個3位數(shù),大小王分別定義為613和513。在排序過程中,先不考慮百位,僅對十位和個位構(gòu)成的數(shù)進(jìn)行比較,既對牌的大小進(jìn)行排序;若出現(xiàn)牌大小一樣,則再為百位的數(shù)進(jìn)行比較排序。

        2.4.4 void print()——打印函數(shù)

        打印函數(shù)主要是將排序好的數(shù)組player[][]和LastCard[]進(jìn)行輸出(既顯示玩家的手牌以及底牌),主要運用了switch語句來實現(xiàn),并用了ASCLL碼表中的003、004、005、006來輸出四種花色。

        3 程序執(zhí)行結(jié)果

        第一次執(zhí)行:

        圖2

        第二次執(zhí)行:

        圖3

        第三次執(zhí)行

        圖4

        4 結(jié)束語

        由多次執(zhí)行結(jié)果可以看出,本程序思路正確,結(jié)果準(zhǔn)確,符合題目要求,可以作為斗地主發(fā)牌程序來執(zhí)行。

        同時,在編寫程序過程中,也發(fā)現(xiàn)了一些缺陷和有待改進(jìn)的地方,如排序和打印函數(shù)相對比較繁瑣,有待進(jìn)一步的簡化;另外,對于完美的斗地主發(fā)牌程序,發(fā)牌的方式也有待改進(jìn)和提高。因為對指針和結(jié)構(gòu)體的不熟悉,所以在編寫程序時相對套路和方法比較麻煩。

        參考文獻(xiàn):

        [1]譚浩強.C程序設(shè)計(第三版)[M].北京:清華大學(xué)出版社,2005(07).

        [2]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社,2008(10).

        [3]殷建平.算法導(dǎo)論[M].北京:機械工業(yè)出版社,2013(01).

        作者簡介:錢學(xué)林(1992.02-),男,浙江紹興人,在校三年級本科生,研究方向:數(shù)學(xué)與應(yīng)用數(shù)學(xué)。

        作者簡單:西安電子科技大學(xué),西安 710126

        国产三级精品三级国产| 免费国产线观看免费观看| 久久精品国产亚洲av无码娇色 | 亚洲国产欧美在线观看| 亚洲欧洲精品成人久久曰影片 | 亚洲天堂色婷婷一区二区| yw193.can尤物国产在线网页 | 日本系列中文字幕99| 免费无码中文字幕a级毛片| 在线看片无码永久免费aⅴ| 日本少妇爽的大叫高潮了| 亚洲一区二区三区视频免费 | 久久精品麻豆日日躁夜夜躁| 精品爆乳一区二区三区无码av| 99福利在线| 色婷婷综合一区二区精品久久| 国产天堂av在线一二三四| 国产精品国产三级国产专播| 麻豆成人精品国产免费| 最新无码国产在线播放| 久久AⅤ天堂Av无码AV| 中文字幕日本五十路熟女| 日本成人精品在线播放| 国产无遮挡又爽又刺激的视频老师| 亚洲国产精品无码久久电影| 蜜桃视频中文字幕一区二区三区| 自拍偷自拍亚洲一区二区| 熟女体下毛毛黑森林| 成年男女免费视频网站| 亚洲欧美日韩精品高清| 视频区一区二在线观看| 欲女在线一区二区三区| 久久天天躁狠狠躁夜夜不卡| 国产成人av一区二区三区无码| 手机av男人天堂免费网址| 日韩亚洲精品国产第二页| 四虎影视4hu4虎成人| 中文字幕无码免费久久99| 日韩精品一区二区三区含羞含羞草 | 免费无码又爽又刺激高潮的视频网站 | 又长又大又粗又硬3p免费视频|