最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)隨機發(fā)撲克牌

 更新時間:2020年04月22日 16:08:42   作者:o_Charlie_o  
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)隨機發(fā)撲克牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)隨機發(fā)撲克牌的具體代碼,供大家參考,具體內(nèi)容如下

算法如下:

1、將1-10作為方塊、2-20作為梅花,3-30作為紅桃,4-40作為黑桃,JQK以及大小王分別排序共54張存放在一維數(shù)組中。
3、3個人用一個二維數(shù)組來存放三人的牌。
2、主要分為打散(亂序),分配,顯示三個操作

打散即洗牌:通過rand以及srand函數(shù)來獲得,為了避免相同的序列,使用標(biāo)準(zhǔn)時間來作為序列種子。

void shuffle(int *cards, int lenth)
{
 int temp, i, index;
  
 time_t t;
 srand((unsigned int)(&t)); 
  
 for (i = 0; i < lenth - 1; i++) //保證每一次交換都是和剩下的數(shù)進(jìn)行交換
 {
  index = rand() % (lenth - i) + i;

  if (index != i) 
  {
    temp = cards[i];
    cards[i] = cards[index];
    cards[index] = temp;
  }
 }
}

分配:將亂序的卡組分別依次排入一個二維數(shù)組中

void deal(int(*everycards)[18], int* cards)
{
 int i, j;
 
 for (i = 0; i < 3; i++)
 {
  for (j = 0; j < 18; j++)
  {
   everycards[i][j] = cards[i * 18 + j];
  }
 }
 }

顯示:數(shù)字卡用迭代的方法顯示,而JQK則用switch方法實現(xiàn)

void display(int(*everycards)[18], char *name1, char *name2, char *name3)
{
 int i, j;
 //方塊、梅花、紅桃、黑桃
 putchar('\n');
 printf("分配卡牌如下:\n");
 for (i = 0; i < 3; i++)
 {
 switch (i)
 {
 case 0: printf("%s手上的牌是: ", name1); break;
 case 1: printf("%s手上的牌是: ", name2); break;
 case 2: printf("%s手上的牌是: ", name3); break;
 }
 for (j = 0; j < 18; j++)
 {
 if (everycards[i][j] >= 1 && everycards[i][j] <= 10)
 {
 printf("方%d ", everycards[i][j]);
 }
 else if (everycards[i][j] >= 11 && everycards[i][j] <= 20)
 {
 printf("梅%d ", everycards[i][j] - 10);
 } 
 else if (everycards[i][j] >= 21 && everycards[i][j] <= 30)
 {
 printf("紅%d ", everycards[i][j] - 20);
 }
 else if (everycards[i][j] >= 31 && everycards[i][j] <= 40)
 {
 printf("黑%d ", everycards[i][j] - 30);
 }
 else
 {
 switch (everycards[i][j])
 {
 case 41: printf("方J "); break;
 case 42: printf("方Q "); break;
 case 43: printf("方K "); break;
 case 44: printf("梅J "); break;
 case 45: printf("梅Q "); break;
 case 46: printf("梅K "); break;
 case 47: printf("紅J "); break;
 case 48: printf("紅Q "); break;
 case 49: printf("紅K "); break;
 case 50: printf("黑J "); break;
 case 51: printf("黑Q "); break;
 case 52: printf("黑K "); break;
 case 53: printf("小王 "); break;
 case 54: printf("大王 "); break;
 }
 }
 }
 putchar('\n');
 putchar('\n');
 }
}

具體實現(xiàn)如下

主函數(shù)下方所示(由于是vs2019所以scanf用的是微軟自帶的scanf_s):

int main(void)
{
 char name1[MAX], name2[MAX], name3[MAX];
 int cards[54], everycards[3][18], lenth, i;
 char YorN;
 //初始化撲克牌
 for (int count1 = 0; count1 < 54; count1++)
 {
 cards[count1] = count1 + 1;
 }
 lenth = sizeof(cards) / sizeof(cards[0]);
 
 printf("請輸入1號玩家的名字:");
 scanf_s("%s", name1, MAX);
 int b1 = getchar();
 printf("請輸入2號玩家的名字:");
 scanf_s("%s", name2, MAX);
 int b2 = getchar(); 
 printf("請輸入3號玩家的名字:");
 scanf_s("%s", name3, MAX);
 int b3 = getchar();
 putchar('\n');
 printf("方塊 = 方,梅花 = 梅,紅桃 = 紅, 黑桃 = 黑\n");
 //先做一次洗牌
 shuffle(cards, lenth);
 deal(everycards, cards);
 display(everycards, name1, name2, name3);
 //尋問是否進(jìn)行再次洗牌
 while (1)
 {
 printf("\n請選擇是否重新洗牌(Y/N):");
 scanf_s("%c", &YorN);
 int b4 = getchar();
 //
 if (YorN == 'Y')
 {
 shuffle(cards, lenth);
 deal(everycards, cards);
 display(everycards, name1, name2, name3);
 }
 else if (YorN == 'N')
 {
 break;
 }
 }

 return 0;
}

學(xué)生黨,初學(xué)習(xí)編程,第一次發(fā)博客,望各位大佬指正錯誤和不足。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++?Cmake使用詳細(xì)教程(看這一篇就夠了!)

    C++?Cmake使用詳細(xì)教程(看這一篇就夠了!)

    CMake是一個比make更高級的編譯配置工具,它可以根據(jù)不同平臺、不同的編譯器,生成相應(yīng)的Makefile或者vcproj項目,下面這篇文章主要給大家介紹了關(guān)于C++?Cmake使用的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • C語言實現(xiàn)像素鳥游戲

    C語言實現(xiàn)像素鳥游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)像素鳥游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C語言實現(xiàn)socket簡單通信實例

    C語言實現(xiàn)socket簡單通信實例

    這篇文章主要介紹了C語言實現(xiàn)socket簡單通信的方法,是學(xué)習(xí)C語言網(wǎng)絡(luò)編程非?;A(chǔ)而又實用的實例,需要的朋友可以參考下
    2014-09-09
  • C/C++中獲取重載函數(shù)地址的方法

    C/C++中獲取重載函數(shù)地址的方法

    函數(shù)重載是函數(shù)的一種特殊情況,C++允許在同一作用域中聲明幾個功能類似的同名函數(shù),這 些同名函數(shù)的形參列表不同,常用來處理實現(xiàn)功能類似數(shù)據(jù)類型不同的問題,本文給大家介紹了C/C++中獲取重載函數(shù)地址的方法,需要的朋友可以參考下
    2024-04-04
  • C語言判定一棵二叉樹是否為二叉搜索樹的方法分析

    C語言判定一棵二叉樹是否為二叉搜索樹的方法分析

    這篇文章主要介紹了C語言判定一棵二叉樹是否為二叉搜索樹的方法,結(jié)合實例形式綜合對比分析了C語言針對二叉搜索樹判定的原理、算法、效率及相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • OpenCV利用對比度亮度變換實現(xiàn)水印去除

    OpenCV利用對比度亮度變換實現(xiàn)水印去除

    OpenCV中去除水印最常用的方法是inpaint,通過圖像修復(fù)的方法來去除水印。本文將介紹另一種方法:利用對比度亮度變換去除水印,需要的朋友可以參考一下
    2021-11-11
  • C++代碼實現(xiàn)掃雷游戲

    C++代碼實現(xiàn)掃雷游戲

    這篇文章主要為大家詳細(xì)介紹了C++代碼實現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 深入理解卡特蘭數(shù)及其應(yīng)用

    深入理解卡特蘭數(shù)及其應(yīng)用

    本篇文章是對卡特蘭數(shù)及其應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++ 實現(xiàn)哈希表的實例

    C++ 實現(xiàn)哈希表的實例

    這篇文章主要介紹了C++ 實現(xiàn)哈希表的實例的相關(guān)資料,這里使用C++實現(xiàn)哈希表的實例幫助大家徹底理解哈希表的原理,需要的朋友可以參考下
    2017-08-08
  • Qt增加版本公司等信息兩種方式

    Qt增加版本公司等信息兩種方式

    在項目中生成exe或者動態(tài)庫過程中可能需要加入公司信息、版本號、說明等等,下面這篇文章主要給大家介紹了關(guān)于Qt增加版本公司等信息的兩種方式,需要的朋友可以參考下
    2024-01-01

最新評論

荔波县| 古浪县| 云林县| 抚顺县| 鸡泽县| 遂溪县| 宜春市| 柏乡县| 平塘县| 台安县| 宁都县| 定结县| 柳江县| 颍上县| 惠东县| 名山县| 乌恰县| 离岛区| 西城区| 抚顺市| 乾安县| 鞍山市| 锦州市| 通河县| 潜山县| 茂名市| 吉安县| 元朗区| 阳西县| 县级市| 扶绥县| 合阳县| 松溪县| 湾仔区| 新丰县| 瑞昌市| 衡水市| 海阳市| 元氏县| 三明市| 蓝田县|