當前位置:首頁 » 編程語言 » c語言輸出撲克牌牌面
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言輸出撲克牌牌面

發布時間: 2022-12-25 20:09:06

c語言程序設計撲克牌游戲

定義一個結構類型表示一張牌,結構包含3個成員,第一個成員char:取值2,3~K,A表示牌名字,第二個成員int:取值2~14表示牌真實大小。第三個成員:結構鏈表指針。
寫一個初始化函數,定義52大小的結構數組,成員值初值分別和牌對應,遍歷數組並將每個元素的鏈表指針依次指向下一個元素地址。這樣得到一個初始鏈表。(相當於一盒新牌)
所有涉及隨機數都用rand函數,洗牌分四份就是循環取隨機數m=1~n,n是隨循環自減,初值52,直到n變成0。每隨一次循環就從初始鏈表中遍歷取出對應第m個節點,並從初始鏈表中將這個節點斷開(既前一個節點指針直接指向後一個節點指針)。每取13張就組成一個新的鏈表。這樣獲得4個新鏈表分別表示4個玩家。
最後出牌就是分別遍歷自己的鏈表,利用循環取牌比較結構數值大小。(取出的牌要從鏈表斷開和上面一樣,你把取出節點寫成獨立函數就能反復使用)。

⑵ 如何用c語言編寫紙牌發牌程序

發牌原程序見我的空間(http://hi..com/crazycola/blog/item/52402bd4b3f68705a08bb746.html),可選是否包含大小王,可選發牌列數。

以下為改過的版本,不包含大小王(即總數52張),只能發4堆。

另外附加了用戶菜單,原程序中不含菜單部分。

代碼如下:

---------------------------------------
#include <stdlib.h>
#include <time.h>
#include <stdio.h>

int menu()
{
int choice;
printf("1 發牌/0 退出:");
scanf("%d",&choice);
return choice;
}

void main( void )
{
int i1, j, total;
int *iArr;
int tag = 0;
char* pok_C[] = { "黑桃", "紅桃", "梅花", "方塊" };
char* pok_N[] = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };

if(!menu()) exit(0);

total = 52;
srand( (unsigned)time( NULL ) );
iArr = (int*)malloc(total*sizeof(int));

for( i1=0; i1<total; i1++ )
{
iArr[i1]=rand()%total;
if( i1==0 ) continue;
do {
tag = 0;
for( j=0; j<i1; j++ )
if( iArr[j] == iArr[i1] )
{
iArr[i1]=rand()%total;
tag = 1;
}
} while( tag==1 );
}

for( i1=0; i1<total; i1++ )
{
printf("%s%s\t",pok_C[iArr[i1]%4],pok_N[iArr[i1]%13]);
if(i1%4==3) printf("\n");
}

free(iArr);

}

⑶ 用簡單c語言,隨機輸出17張撲克牌,包括花色。大小王也要隨機。

1、C語言提供了一些庫函數來實現隨機數的產生。C語言中有三個通用的隨機數發生器,分別為 rand函數, random函數, randomize 函數
但是rand函數產生的並不是真意正義上的隨機數,是一個偽隨機數,是根據一個數,稱之為種子,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是定了的,除非破壞了系統,為了改變這個種子的值,C提供了srand()函數,它的原形是void srand( int a)。
在調用rand函數產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子為1。一般用for語句來設置種子的個數。


2、常式:

#include"stdio.h"
#include<stdlib.h>
#include<math.h>
intmain()
{
charstr[13][5]={{"A"},{"2"},{"3"},{"4"},{"5"},{"6"},{"7"},{"8"},{"9"},{"10"},{"J"},{"Q"},{"K"}};
intb[]={1,2,3,4};//1紅桃2黑桃3放片4梅花
charstr1[5][10]={{"紅桃"},{"黑桃"},{"方塊"},{"梅花"},{}};
srand(NULL);
inta,c,i;
intarr[17][2]={0};//記錄17個數字a[i][0]表示數字a[i][1]表示顏色一共54張牌,4張A--K1大王1小王1-4=>A5-8=>253=>小王54大王,產生不重復的17個數字
intk=0;
while(k<17)
{
a=rand()%54+1;//a<53時候a=(a-1)/4;//1-4=>05-8==>1
//printf("%3d",a);
if(a<53)
{
a=(a-1)/4;
c=rand()%4;
for(i=0;i<17;i++)
{
if(a==arr[i][0]&&c==arr[i][1])
break;
}
if(i<17)
{
arr[k][0]=a;
arr[k][1]=c;
k++;
}
}
if(a==53||a==54)
{
for(i=0;i<17;i++)
{
if(a==arr[i][0])
break;
}
if(i<17)
{
arr[k][0]=a;
arr[k][1]=4;
k++;
}

}
}
for(i=0;i<17;i++)
{
//printf("%s%s ",str1[arr[i][1]],str[arr[i][0]]);
printf("%d",arr[i][0]);
}
}

⑷ c語言撲克牌

  1. 定義個字元數組,存放A-K牌面的字母 char ch[][3]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};

  2. 牌的大小從A-K分別為 0-12

  3. 在輸出牌的牌面字元時,輸出ch數據中牌面值下標的字元串。如某牌數值是9,輸出時如下:

    printf("%s", ch[9]);

  4. 「%d\%c」是格式輸出字元串,表示要輸出一個整數(%d)一個字元(%c) ,後面的兩個參數分別是整數,字元,和格式化字元串相對應。是轉義符,對於要輸出特殊字元時,需要在前面加上,比如輸出時,就寫成\;再如 " ,應寫成";輸出換行寫成 ,輸出回車寫成 等。在這個題目中,和後面的%構不成特殊字元轉義,所以不輸出,刪掉它也是一樣的。

⑸ 如何在C語言中輸出撲克牌的黑桃,梅花,方塊,紅心

#include"stdio.h"
#include"conio.h"
#include"math.h"
main()
{intx1=3,x2=4,x3=5,x4=6;
printf("%c%c%c%c",x1,x2,x3,x4);
getch();
}


或者

#include"stdio.h"
#include"conio.h"
#include"math.h"
main()
{charx1,x2,x3,x4;
x1=3;x2=4;x3=5;x4=6;
printf("%c%c%c%c",x1,x2,x3,x4);
getch();
}

⑹ c語言 撲克牌問題 請解答

(這表明A --- K卡的順序)

(1)首先創建一個數組str1的詮釋[13] / /使用每張卡中的原始位置相反的順序。

(2)建立一個字元數組str_card [13];保存降撲克位置

(2)建立一個單獨的列表內容從頭尾int數據值為1 --- 13頭澆節點,* next指針到下一個節點,最後一個點為NULL;(

(3)(i_str計數器陣列,i_card_order = 0(鏈標識符,0為A,B(AB是下面的步驟)),還一個特殊的指向尾節點的指針,然後移動節點在同一時間結束時)

(4)操作:A:第一點,轉變到最後i_card_order的值= 1

B:成為第一個節點的下一個節點,把數據保存到str1的[i_str]; i_str + +;

i_card_order = 0。

刪除當前節點。
( 5)重復步驟3和4,最後是A ---- K為0 --- 12(兩個數組),結果就出來了。

⑺ 撲克牌問題(C語言)

其實這是典型的利用鏈表求解的問題,但是此題用鏈表的話還需要應用一個長度為13的數組做輔助,所以我直接用數組來進行演示,將在手中的牌進行標記,將放到桌子上的牌進行賦值。
我在很小的時候我的姥爺就曾給我表演過這個魔術,當時我自己用撲克牌弄了將近兩個小時才終於知道了這13張牌的順序是什麼,有興趣的話你可以自己試一試,很有意思。
下面的代碼你可以進行調試來幫助理解整個過程
#include <stdio.h>
void main()
{
int poker[13];//十三張撲克牌
for(int i = 0;i<13;i++)//初始化
poker[i] = 0;//0代表牌還在手中,不為0代表放到了桌子上
int remain = 13;//手中剩餘的撲克數
int j = 12;//從最下邊開始抽牌
int order = 1;//當order為2時,將此時的牌放到桌子上
int number = 1;//從A開始
while(remain != 0)
{
if(j == -1)
{
j = 12;//返回最後一張牌
continue;
}
if(poker[j] != 0)//如果牌已不在手中,則到下一張牌
{
j--;
continue;
}
if(order == 2)
{
poker[j]= number++;//將撲克賦值
remain--;//手中剩餘的牌數減1
order = 1;
continue;
}
order++;
j--;
}
//輸出一開始小明手中撲克牌的順序
for(i = 0; i < 13;i++)
printf("%d ",poker[i]);
}
想要寫出一個程序重點在於理解這個過程,只有對這個過程熟悉了才有可能把它用代碼來演示出來。

⑻ 求C語言大神解答,撲克牌

根號n下取整為答案
對於第k張牌,k的約數為奇數個為翻轉狀態,約數為偶數個為原狀態。
對於k而言他有約數x,則有約數k/x。因此當x²≠k,都是成對出現的。也就是說只有完全平方數是有奇數個約數,我們只要找有幾個完全平方數即可。

⑼ 大學初學c語言,作業,c程序編寫出撲克牌黑桃A的圖案

#include<stdio.h>
int main()

{
printf("%c\n",6);

return 0;
}
把ASCII碼對應的字元顯示出來,其中,6為黑桃,5為草花,4為方片,3為紅桃。