C語言實現(xiàn)發(fā)牌洗牌
本文實例為大家分享了C語言實現(xiàn)發(fā)牌洗牌的具體代碼,供大家參考,具體內容如下
1.模擬發(fā)牌程序
通過寫兩個函數(shù)模塊來編寫洗牌程序和打印的發(fā)牌程序
2.編寫洗牌程序
void shuffle(char cards[][10],int n){ ?? ?int i=54; ?? ?char ca,cb,ct[10]; ?? ?srand((unsigned)time(NULL)); ?? ? ?? ?while(i--){ ?? ??? ?ca=rand()%54; ?? ??? ?cb=rand()%54; ?? ??? ? ?? ??? ?strcpy(ct,cards[ca]); ?? ??? ?strcpy(cards[ca],cards[cb]); ?? ??? ?strcpy(cards[cb],ct);?? ??? ? ?? ?} ?? ??? ? }
3.編寫打印的發(fā)牌程序
void printCard(char cards[][10],int n){ ?? ?int i,rn=0; ?? ?printf("第一個人:\n"); ?? ?for(i=0;i<17;i++){ ?? ??? ?if(rn%5==0) ?? ??? ??? ?printf("\n"); ?? ??? ?rn++; ?? ??? ?printf("%s ? ? ?",cards[i]);?? ??? ? ?? ?} ?? ?printf("\n\n第二個人:\n"); ?? ?rn=0; ?? ?for(i=17;i<33;i++){ ?? ??? ?if(rn%5==0) ?? ??? ??? ?printf("\n"); ?? ??? ?rn++; ?? ??? ?printf("%s ? ? ?",cards[i]);?? ??? ? ?? ?} ?? ?printf("\n\n第三個人:\n"); ?? ?rn=0; ?? ?for(i=33;i<50;i++){ ?? ??? ?if(rn%5==0) ?? ??? ??? ?printf("\n"); ?? ??? ?rn++;?? ? ?? ??? ?printf("%s ? ? ?",cards[i]);?? ? ?? ?} ?? ?printf("\n\n底牌:\n"); ?? ?for(i=51;i<54;i++){ ?? ??? ?printf("%s ? ? ?",cards[i]);?? ??? ? ?? ?} ?? ?printf("\n"); ?? ?getchar(); }
4.在主函數(shù)預定義和調用
main(){ ?? ?system("color 0f"); ?? ?char cards[][10]={ ?? ?"紅桃 2","紅桃 3","紅桃 4","紅桃 5","紅桃 6","紅桃 7","紅桃 8","紅桃 9","紅桃 10","紅桃 J","紅桃 Q","紅桃 K","紅桃 A", ?? ?"方塊 2","方塊 3","方塊 4","方塊 5","方塊 6","方塊 7","方塊 8","方塊 9","方塊 10","方塊 J","方塊 Q","方塊 K","方塊 A", ?? ?"梅花 2","梅花 3","梅花 4","梅花 5","梅花 6","梅花 7","梅花 8","梅花 9","梅花 10","梅花 J","梅花 Q","梅花 K","梅花 A",?? ??? ? ?? ?"黑桃 2","黑桃 3","黑桃 4","黑桃 5","黑桃 6","黑桃 7","黑桃 8","黑桃 9","黑桃 10","黑桃 J","黑桃 Q","黑桃 K","黑桃 A", ?? ?"大王","小王"? ?? ?}; ?? ?int n = 54; ? ?? ?shuffle(cards,n); ?? ?printCard( cards, n); ?? ??? ? return 0; }
5.最終程序
#include<stdio.h> #include<string.h> #include<stdlib.h>? #include<time.h> void shuffle(char cards[][10],int n); void printCard(char cards[][10],int n); main(){ ?? ?system("color 0f"); ?? ?char cards[][10]={ ?? ?"紅桃 2","紅桃 3","紅桃 4","紅桃 5","紅桃 6","紅桃 7","紅桃 8","紅桃 9","紅桃 10","紅桃 J","紅桃 Q","紅桃 K","紅桃 A", ?? ?"方塊 2","方塊 3","方塊 4","方塊 5","方塊 6","方塊 7","方塊 8","方塊 9","方塊 10","方塊 J","方塊 Q","方塊 K","方塊 A", ?? ?"梅花 2","梅花 3","梅花 4","梅花 5","梅花 6","梅花 7","梅花 8","梅花 9","梅花 10","梅花 J","梅花 Q","梅花 K","梅花 A",?? ??? ? ?? ?"黑桃 2","黑桃 3","黑桃 4","黑桃 5","黑桃 6","黑桃 7","黑桃 8","黑桃 9","黑桃 10","黑桃 J","黑桃 Q","黑桃 K","黑桃 A", ?? ?"大王","小王"? ?? ?}; ?? ?int n = 54; ? ?? ?shuffle(cards,n); ?? ?printCard( cards, n); ?? ??? ? return 0; } void shuffle(char cards[][10],int n){ ?? ?int i=54; ?? ?char ca,cb,ct[10]; ?? ?srand((unsigned)time(NULL)); ?? ? ?? ?while(i--){ ?? ??? ?ca=rand()%54; ?? ??? ?cb=rand()%54; ?? ??? ? ?? ??? ?strcpy(ct,cards[ca]); ?? ??? ?strcpy(cards[ca],cards[cb]); ?? ??? ?strcpy(cards[cb],ct);?? ??? ? ?? ?} ?? ??? ? } void printCard(char cards[][10],int n){ ?? ?int i,rn=0; ?? ?printf("第一個人:\n"); ?? ?for(i=0;i<17;i++){ ?? ??? ?if(rn%5==0) ?? ??? ??? ?printf("\n"); ?? ??? ?rn++; ?? ??? ?printf("%s ? ? ?",cards[i]);?? ??? ? ?? ?} ?? ?printf("\n\n第二個人:\n"); ?? ?rn=0; ?? ?for(i=17;i<33;i++){ ?? ??? ?if(rn%5==0) ?? ??? ??? ?printf("\n"); ?? ??? ?rn++; ?? ??? ?printf("%s ? ? ?",cards[i]);?? ??? ? ?? ?} ?? ?printf("\n\n第三個人:\n"); ?? ?rn=0; ?? ?for(i=33;i<50;i++){ ?? ??? ?if(rn%5==0) ?? ??? ??? ?printf("\n"); ?? ??? ?rn++;?? ? ?? ??? ?printf("%s ? ? ?",cards[i]);?? ? ?? ?} ?? ?printf("\n\n底牌:\n"); ?? ?for(i=51;i<54;i++){ ?? ??? ?printf("%s ? ? ?",cards[i]);?? ??? ? ?? ?} ?? ?printf("\n"); ?? ?getchar(); }
6.1程序結果
6.2
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C語言實現(xiàn)在數(shù)組A上有序合并數(shù)組B的方法
這篇文章主要介紹了C語言實現(xiàn)在數(shù)組A上有序合并數(shù)組B的方法,包含了數(shù)組操作的完整實現(xiàn)過程以及相應的代碼分析與改進,具有不錯的借鑒價值,需要的朋友可以參考下2014-09-09深入探討:main函數(shù)執(zhí)行完畢后,是否可能會再執(zhí)行一段代碼?
本篇文章是對main函數(shù)執(zhí)行完畢后,是否可能會再執(zhí)行一段代碼,進行了詳細的分析介紹,需要的朋友參考下2013-05-05C語言多種方法實現(xiàn)一個函數(shù)左旋字符串中K個字符
這篇文章主要為大家介紹了C語言多種方法實現(xiàn)一個函數(shù),可以左旋字符串中K個字符,文中附含詳細的示例講解,有需要的朋友可以借鑒參考下2021-10-10C++編譯錯誤variable-sized?object?may?not?be?initiali問題
這篇文章主要介紹了C++編譯錯誤variable-sized?object?may?not?be?initiali問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05