当前位置:首页 » 编程语言 » c语言扑克牌编程题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言扑克牌编程题

发布时间: 2023-05-29 04:55:41

c语言程序设计扑克牌游戏

定义一个结构类型表示一张牌,结构包含3个成员,第一个成员char:取值2,3~K,A表示牌名字,第二个成员int:取值2~14表示牌真实大小。第三个成员:结构链表指针。
写一个初始化函数,定义52大小的结构数组,成员值初值分别和牌对应,遍历数组并将每个元素的链表指针依次指向下一个元素地址。这样得到一个初始链表。(相当于一盒新牌)
所有涉及随机数都用rand函数,洗牌分四份就是循环取随机数m=1~n,n是随循环自减,初值52,直到n变成0。每随一次循环就从初始链表中遍历取出对应第m个节点,并从初始链表中将这个节点断开(既前一个节点指针直接指向后一个节点指针)。每取13张就组成一个新的链表。这样获得4个新链表分别表示4个玩家。
最后出牌就是分别遍历自己的链表,利用循环取牌比较结构数值大小。(取出的牌要从链表断开和上面一样,你把取出节点写成独立函数就能反复使用)。

㈡ 求C语言大神解答,扑克牌

根号n下取整为答案
对于第k张牌,k的约数为奇数个为翻转状态,约数为偶数个为原状态。
对于k而言他有约数x,则有约数k/x。因此当x²≠k,都是成对出现的。也就是说只有完全平方数是有奇数个约数,我们只要找有几个完全平方数即可。

㈢ c语言编程题!!急求!! 关于扑克牌(要完整代码最好有解释)

#include<stdio.h>
int asc(char p[][3]);
intisError(char p1[][3],char p2[][3]);
void compare(char p3[][3],char p4[][3]);
int main()
{
char a[3][3],b[3][3],c;
int i,j,resulta,resultb,result,flag=0;
printf("请输入A的扑克牌,扑克牌之间以空格隔开,然后按下回车: ");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
c=getchar();
if(c!=' '&&c!=10)
{
if(j==0)
{
if(c=='H'||c=='S'||c=='D'||c=='C')
;
else
{
printf("Input Error! ");
return 0;
}
}
if(j==1)
{
if(c=='J'||c=='Q'||c=='K'||c=='A'||(c>='1'&&c<='9'))
{
if(c=='J')
c=59;
if(c=='Q')
c=60;
if(c=='K')
c=61;
if(c=='A')
c=62;
if(c=='1')
flag=1;
}
else
{
printf("Input Error! ");
return 0;
}
}
if(j==2)
{
if(c!='0')
{
printf("Input Error! ");
return 0;
}else
{
flag=0;
c=58;
a[i][1]=c;
break;
}

}
a[i][j]=c;
}else
{
if(flag==1)
{
printf("Input Error! ");
return 0;
}
if(j==2)
break;
j--;
}
}
}
printf("请输入B的扑克牌,扑克牌之间以空格隔开,然后按下回车: ");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
c=getchar();
if(c!=' '&&c!=10)
{
if(j==0)
{
if(c=='H'||c=='S'||c=='D'||c=='C')
;
else
{
printf("Input Error! ");
return 0;
}
}
if(j==1)
{
if(c=='J'||c=='Q'||c=='K'||c=='A'||(c>='1'&&c<='9'))
{
if(c=='J')
c=59;
if(c=='Q')
c=60;
if(c=='K')
c=61;
if(c=='A')
c=62;
if(c=='1')
flag=1;
}
else
{
printf("Input Error! ");
return 0;
}
}
if(j==2)
{
if(c!='0')
{
printf("Input Error! ");
return 0;
}else
{
flag=0;
c=58;
b[i][1]=c;
break;
}

}
b[i][j]=c;
}else
{
if(flag==1)
{
printf("Input Error! ");
return 0;
}
if(j==2)
break;
j--;
}
}
}
resulta=asc(a);
if(resulta==0)
return 0;
resultb=asc(b);
if(resultb==0)
return 0;
result=isError(a,b);
if(result==0)
return 0;
compare(a,b);
for(i=0;i<3;i++)
{
a[i][2]='';
b[i][2]='';
}
printf("A: ");
for(i=0;i<3;i++)
{
if(a[i][1]>'2'&&a[i][1]<'9')
printf("%s ",a[i]);
else
{
if(a[i][1]==58)
{
printf("%c",a[i][0]);
printf("10 ");
}
if(a[i][1]==59)
{
printf("%c",a[i][0]);
printf("J ");
}
if(a[i][1]==60)
{
printf("%c",a[i][0]);
printf("Q ");
}
if(a[i][1]==61)
{
printf("%c",a[i][0]);
printf("K ");
}
if(a[i][1]==62)
{
printf("%c",a[i][0]);
printf("A ");
}
}
}
printf(" B: ");
for(i=0;i<3;i++)
{
if(b[i][1]>'2'&&b[i][1]<'9')
printf("%s ",b[i]);
else
{
if(b[i][1]==58)
{
printf("%c",b[i][0]);
printf("10 ");
}
if(b[i][1]==59)
{
printf("%c",b[i][0]);
printf("J ");
}
if(b[i][1]==60)
{
printf("%c",b[i][0]);
printf("Q ");
}
if(b[i][1]==61)
{
printf("%c",b[i][0]);
printf("K ");
}
if(b[i][1]==62)
{
printf("%c",b[i][0]);
printf("A ");
}
}
}
printf(" ");
return 0;
}

int asc(char p[][3])
{
int m,temp[2];
if(p[0][1]==p[1][1])
{
if(p[0][0]==p[1][0])
{
printf("Input Error! ");
return 0;
}
}
if(p[1][1]==p[2][1])
{
if(p[1][0]==p[2][0])
{
printf("Input Error! ");
return 0;
}
}
if(p[0][1]==p[2][1])
{
if(p[0][0]==p[2][0])
{
printf("Input Error! ");
return 0;
}
}
m=0;
if(p[m][1]<p[m+1][1])
{
temp[0]=p[m][0];
temp[1]=p[m][1];
p[m][0]=p[m+1][0];
p[m][1]=p[m+1][1];
p[m+1][0]=temp[0];
p[m+1][1]=temp[1];
}
if(p[m][1]<p[m+2][1])
{
temp[0]=p[m][0];
temp[1]=p[m][1];
p[m][0]=p[m+2][0];
p[m][1]=p[m+2][1];
p[m+2][0]=temp[0];
p[m+2][1]=temp[1];
}
m=1;
if(p[m][1]<p[m+1][1])
{
temp[0]=p[m][0];
temp[1]=p[m][1];
p[m][0]=p[m+1][0];
p[m][1]=p[m+1][1];
p[m+1][0]=temp[0];
p[m+1][1]=temp[1];
}
return 1;
}

intisError(char p1[][3],char p2[][3])
{
int n;
for(n=0;n<3;n++)
{
if(p1[n][0]==p2[0][0]&&p1[n][1]==p2[0][1])
{
printf("Input Error! ");
return 0;
}
if(p1[n][0]==p2[n][0]&&p1[1][1]==p2[1][1])
{
printf("Input Error! ");
return 0;
}
if(p1[n][0]==p2[n][0]&&p1[2][1]==p2[2][1])
{
printf("Input Error! ");
return 0;
}
}
return 1;
}

void compare(char p3[][3],char p4[][3])
{
int x;
for(x=0;x<3;x++)
{
if(p3[x][1]==p4[x][1])
continue;
if(p3[x][1]>p4[x][1]){
printf("Winner is A! ");
return;
}
if(p3[x][1]<p4[x][1]){
printf("Winner is B! ");
return;
}
}
printf("Winner is X! ");
}

这次对了。

㈣ C语言编程题:扑克牌排序问题

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

#defineColorshort
#defineRed0
#defineGreen1
#defineBlue2
#defineWhite3
#definePink4
#definePurple5

#defineSuitshort
#defineSpades1
#defineHearts0
#defineDiamonds2
#defineClubs3

#defineJ11
#defineQ12
#defineK13
#defineA1
#defineSmallJoker14
#defineBigJoker15

typedefstruct{
intranking;
Colorcolor;
Suitsuit;
}Card;

voidcreate_cards(Cardcards[],intsize){
inti,j;
Cardtemp;
for(i=0;i<size;i++){
cards[i].color=i/54;
cards[i].suit=i%54%4;
cards[i].ranking=i%拍好54>=52?i%54-53+BigJoker:i%54/4+1;
}
for(i=0;i<size;i++){
j=rand()%(size-i)+i;
if(j!=i){
temp=cards[i];
cards[i]=cards[j];
cards[j]=temp;
}
}
}

voidprint_card(Card*card,FILE*file){
constchar*color[]={"红","绿","蓝","白","粉","紫"};
constchar*suit[]={"红心","黑桃","方块","梅花"};
constchar*ranking[]={"mmy","A","2","3"袭槐铅,"4","5","6","7","8","9","10","J","Q","K","小王","大王"};
fprintf(file,"%s底的",color[card->color]);
if(card->ranking<SmallJoker){
fprintf(file,"%s",suit[card->suit]);
}
fprintf(file,"%s ",ranking[card->ranking]);
}

intcmp(constvoid*a,constvoid*b){
Card*ca=(Card*)a;
Card*cb=(Card*)b;
intranking[2]={ca->ranking,cb->ranking},i;
for(i=0;i<2;i++){
if(ranking[i]>=SmallJoker){
ranking[i]+=明绝2;
}
elseif(ranking[i]<=2){
ranking[i]+=13;
}
}
if(ranking[0]!=ranking[1]){
returnranking[0]-ranking[1];
}
if(ca->color!=cb->color){
returnca->color-cb->color;
}
returnca->suit-cb->suit;
}

voidsort_all_cards(Cardcards[],intsize){
qsort(cards,size,sizeof(cards[0]),cmp);
}

intmain(){
constintsize=54*6;
inti;
Cardcards[size];
FILE*before,*after;
srand((unsignedint)time(NULL));
create_cards(cards,size);
before=fopen("Before.txt","w");
if(before==NULL){
printf("ErroropenBefore.txt ");
exit(-1);
}
for(i=0;i<size;i++){
print_card(cards+i,before);
}
fclose(before);
sort_all_cards(cards,size);
after=fopen("After.txt","w");
if(before==NULL){
printf("ErroropenAfter.txt ");
exit(-1);
}
for(i=0;i<size;i++){
print_card(cards+i,after);
}
fclose(after);
return0;
}

Before.txt (仅供参考)

白底的方块3
紫底的梅花K
绿底的方块9
红底的梅花10
绿底的黑桃K
白底的方块10
绿底的红心3
紫底的梅花A
蓝底的方块10
粉底的黑桃A
蓝底的黑桃A
蓝底的黑桃8
粉底的梅花7
紫底的黑桃4
紫底的梅花8
紫底的梅花2
白底的梅花K
蓝底的红心2
蓝底的黑桃6
红底的红心Q
粉底的方块K
蓝底的黑桃Q
绿底的红心10
红底的黑桃9
粉底的黑桃K
白底的方块J
紫底的红心10
紫底的梅花Q
红底的黑桃4
绿底的黑桃A
绿底的黑桃9
白底的方块8
蓝底的梅花6
白底的黑桃J
绿底的方块4
紫底的红心2
粉底的黑桃10
紫底的红心Q
红底的黑桃Q
粉底的黑桃6
绿底的梅花2
白底的方块K
蓝底的梅花J
红底的方块A
蓝底的梅花3
粉底的梅花4
紫底的红心4
紫底的红心5
白底的方块5
蓝底的大王
绿底的黑桃8
红底的黑桃5
绿底的红心9
绿底的方块7
白底的小王
蓝底的方块4
紫底的梅花5
绿底的方块J
紫底的梅花10
白底的红心2
紫底的黑桃6
白底的方块9
红底的方块7
绿底的大王
红底的红心5
粉底的红心J
蓝底的黑桃3
蓝底的红心10
白底的红心3
粉底的梅花6
绿底的黑桃7
白底的红心10
绿底的方块5
绿底的黑桃4
蓝底的红心3
白底的梅花8
红底的黑桃7
白底的梅花A
蓝底的方块2
紫底的梅花J
粉底的梅花A
紫底的方块Q
红底的黑桃A
绿底的红心8
绿底的红心J
白底的方块A
蓝底的方块5
粉底的方块2
粉底的黑桃7
蓝底的方块3
白底的方块6
红底的方块8
绿底的梅花A
蓝底的方块A
紫底的方块5
紫底的方块J
粉底的方块10
粉底的梅花8
粉底的梅花10
红底的红心K
白底的大王
粉底的红心Q
紫底的方块4
蓝底的红心Q
蓝底的梅花2
紫底的小王
白底的梅花J
绿底的红心7
蓝底的梅花Q
绿底的梅花10
红底的梅花3
粉底的红心7
紫底的方块10
绿底的黑桃6
红底的梅花4
蓝底的梅花A
红底的黑桃6
蓝底的黑桃9
绿底的小王
紫底的红心7
白底的红心K
粉底的梅花Q
白底的红心9
紫底的方块A
红底的红心4
白底的黑桃9
绿底的梅花4
红底的方块4
绿底的红心4
红底的黑桃8
红底的红心7
紫底的方块2
白底的黑桃3
蓝底的黑桃10
红底的梅花2
红底的方块J
白底的黑桃2
粉底的黑桃5
绿底的黑桃Q
紫底的黑桃8
绿底的红心K
蓝底的黑桃J
粉底的红心9
粉底的梅花J
紫底的黑桃7
白底的梅花4
蓝底的红心8
紫底的方块6
蓝底的黑桃2
蓝底的黑桃K
蓝底的黑桃7
蓝底的黑桃4
红底的方块10
红底的黑桃3
粉底的红心8
红底的梅花7
粉底的梅花5
粉底的红心2
绿底的方块8
红底的黑桃10
红底的梅花6
紫底的梅花7
白底的黑桃A
红底的梅花5
白底的黑桃4
粉底的梅花K
绿底的方块Q
红底的方块K
紫底的方块K
粉底的方块A
紫底的红心6
粉底的梅花3
粉底的黑桃4
绿底的黑桃2
绿底的方块10
绿底的梅花K
红底的红心3
粉底的黑桃8
红底的梅花8
粉底的黑桃Q
红底的大王
紫底的黑桃Q
绿底的黑桃5
蓝底的梅花8
白底的梅花6
红底的方块2
粉底的红心6
红底的黑桃J
绿底的红心5
绿底的红心2
蓝底的红心7
紫底的方块8
蓝底的方块8
白底的黑桃Q
蓝底的红心4
绿底的方块A
粉底的方块5
红底的梅花Q
紫底的黑桃A
粉底的方块9
紫底的梅花9
白底的黑桃5
蓝底的方块K
白底的黑桃7
蓝底的方块6
蓝底的黑桃5
白底的梅花3
粉底的黑桃2
粉底的方块8
绿底的梅花3
白底的黑桃10
紫底的黑桃2
红底的黑桃2
蓝底的梅花4
红底的梅花K
绿底的梅花Q
蓝底的方块Q
蓝底的梅花9
紫底的黑桃J
绿底的红心6
粉底的红心10
蓝底的梅花K
绿底的梅花J
红底的红心2
红底的红心6
粉底的黑桃9
蓝底的红心A
绿底的梅花8
红底的红心A
紫底的方块7
白底的红心4
紫底的大王
蓝底的红心5
绿底的黑桃J
紫底的红心3
粉底的方块Q
白底的红心A
白底的梅花10
蓝底的红心J
绿底的梅花5
白底的梅花7
白底的红心J
紫底的黑桃10
粉底的红心A
红底的红心8
紫底的梅花3
粉底的梅花2
绿底的红心Q
白底的黑桃K
蓝底的方块J
绿底的方块2
白底的梅花Q
绿底的方块K
粉底的黑桃3
绿底的梅花7
红底的方块6
紫底的黑桃9
红底的梅花A
紫底的红心A
粉底的红心5
粉底的红心4
粉底的红心3
蓝底的红心9
紫底的红心K
绿底的黑桃3
绿底的梅花6
红底的红心J
白底的方块Q
粉底的大王
白底的黑桃8
蓝底的梅花5
粉底的小王
白底的红心7
紫底的方块3
紫底的黑桃3
白底的梅花9
白底的方块2
红底的方块3
蓝底的方块9
粉底的方块6
红底的方块9
白底的方块7
紫底的红心9
白底的红心Q
粉底的方块7
绿底的梅花9
白底的方块4
紫底的黑桃5
白底的梅花5
粉底的梅花9
紫底的黑桃K
紫底的红心J
红底的梅花9
红底的方块5
白底的红心5
粉底的方块4
紫底的方块9
绿底的红心A
绿底的方块3
红底的方块Q
粉底的方块3
蓝底的红心K
蓝底的梅花7
红底的黑桃K
绿底的方块6
蓝底的方块7
白底的红心8
蓝底的小王
红底的红心10
白底的红心6
白底的梅花2
红底的梅花J
蓝底的梅花10
红底的红心9
绿底的黑桃10
蓝底的红心6
粉底的方块J
红底的小王
粉底的红心K
紫底的梅花6
白底的黑桃6
紫底的梅花4
粉底的黑桃J
紫底的红心8

After.txt

红底的红心3
红底的黑桃3
红底的方块3
红底的梅花3
绿底的红心3
绿底的黑桃3
绿底的方块3
绿底的梅花3
蓝底的红心3
蓝底的黑桃3
蓝底的方块3
蓝底的梅花3
白底的红心3
白底的黑桃3
白底的方块3
白底的梅花3
粉底的红心3
粉底的黑桃3
粉底的方块3
粉底的梅花3
紫底的红心3
紫底的黑桃3
紫底的方块3
紫底的梅花3
红底的红心4
红底的黑桃4
红底的方块4
红底的梅花4
绿底的红心4
绿底的黑桃4
绿底的方块4
绿底的梅花4
蓝底的红心4
蓝底的黑桃4
蓝底的方块4
蓝底的梅花4
白底的红心4
白底的黑桃4
白底的方块4
白底的梅花4
粉底的红心4
粉底的黑桃4
粉底的方块4
粉底的梅花4
紫底的红心4
紫底的黑桃4
紫底的方块4
紫底的梅花4
红底的红心5
红底的黑桃5
红底的方块5
红底的梅花5
绿底的红心5
绿底的黑桃5
绿底的方块5
绿底的梅花5
蓝底的红心5
蓝底的黑桃5
蓝底的方块5
蓝底的梅花5
白底的红心5
白底的黑桃5
白底的方块5
白底的梅花5
粉底的红心5
粉底的黑桃5
粉底的方块5
粉底的梅花5
紫底的红心5
紫底的黑桃5
紫底的方块5
紫底的梅花5
红底的红心6
红底的黑桃6
红底的方块6
红底的梅花6
绿底的红心6
绿底的黑桃6
绿底的方块6
绿底的梅花6
蓝底的红心6
蓝底的黑桃6
蓝底的方块6
蓝底的梅花6
白底的红心6
白底的黑桃6
白底的方块6
白底的梅花6
粉底的红心6
粉底的黑桃6
粉底的方块6
粉底的梅花6
紫底的红心6
紫底的黑桃6
紫底的方块6
紫底的梅花6
红底的红心7
红底的黑桃7
红底的方块7
红底的梅花7
绿底的红心7
绿底的黑桃7
绿底的方块7
绿底的梅花7
蓝底的红心7
蓝底的黑桃7
蓝底的方块7
蓝底的梅花7
白底的红心7
白底的黑桃7
白底的方块7
白底的梅花7
粉底的红心7
粉底的黑桃7
粉底的方块7
粉底的梅花7
紫底的红心7
紫底的黑桃7
紫底的方块7
紫底的梅花7
红底的红心8
红底的黑桃8
红底的方块8
红底的梅花8
绿底的红心8
绿底的黑桃8
绿底的方块8
绿底的梅花8
蓝底的红心8
蓝底的黑桃8
蓝底的方块8
蓝底的梅花8
白底的红心8
白底的黑桃8
白底的方块8
白底的梅花8
粉底的红心8
粉底的黑桃8
粉底的方块8
粉底的梅花8
紫底的红心8
紫底的黑桃8
紫底的方块8
紫底的梅花8
红底的红心9
红底的黑桃9
红底的方块9
红底的梅花9
绿底的红心9
绿底的黑桃9
绿底的方块9
绿底的梅花9
蓝底的红心9
蓝底的黑桃9
蓝底的方块9
蓝底的梅花9
白底的红心9
白底的黑桃9
白底的方块9
白底的梅花9
粉底的红心9
粉底的黑桃9
粉底的方块9
粉底的梅花9
紫底的红心9
紫底的黑桃9
紫底的方块9
紫底的梅花9
红底的红心10
红底的黑桃10
红底的方块10
红底的梅花10
绿底的红心10
绿底的黑桃10
绿底的方块10
绿底的梅花10
蓝底的红心10
蓝底的黑桃10
蓝底的方块10
蓝底的梅花10
白底的红心10
白底的黑桃10
白底的方块10
白底的梅花10
粉底的红心10
粉底的黑桃10
粉底的方块10
粉底的梅花10
紫底的红心10
紫底的黑桃10
紫底的方块10
紫底的梅花10
红底的红心J
红底的黑桃J
红底的方块J
红底的梅花J
绿底的红心J
绿底的黑桃J
绿底的方块J
绿底的梅花J
蓝底的红心J
蓝底的黑桃J
蓝底的方块J
蓝底的梅花J
白底的红心J
白底的黑桃J
白底的方块J
白底的梅花J
粉底的红心J
粉底的黑桃J
粉底的方块J
粉底的梅花J
紫底的红心J
紫底的黑桃J
紫底的方块J
紫底的梅花J
红底的红心Q
红底的黑桃Q
红底的方块Q
红底的梅花Q
绿底的红心Q
绿底的黑桃Q
绿底的方块Q
绿底的梅花Q
蓝底的红心Q
蓝底的黑桃Q
蓝底的方块Q
蓝底的梅花Q
白底的红心Q
白底的黑桃Q
白底的方块Q
白底的梅花Q
粉底的红心Q
粉底的黑桃Q
粉底的方块Q
粉底的梅花Q
紫底的红心Q
紫底的黑桃Q
紫底的方块Q
紫底的梅花Q
红底的红心K
红底的黑桃K
红底的方块K
红底的梅花K
绿底的红心K
绿底的黑桃K
绿底的方块K
绿底的梅花K
蓝底的红心K
蓝底的黑桃K
蓝底的方块K
蓝底的梅花K
白底的红心K
白底的黑桃K
白底的方块K
白底的梅花K
粉底的红心K
粉底的黑桃K
粉底的方块K
粉底的梅花K
紫底的红心K
紫底的黑桃K
紫底的方块K
紫底的梅花K
红底的红心A
红底的黑桃A
红底的方块A
红底的梅花A
绿底的红心A
绿底的黑桃A
绿底的方块A
绿底的梅花A
蓝底的红心A
蓝底的黑桃A
蓝底的方块A
蓝底的梅花A
白底的红心A
白底的黑桃A
白底的方块A
白底的梅花A
粉底的红心A
粉底的黑桃A
粉底的方块A
粉底的梅花A
紫底的红心A
紫底的黑桃A
紫底的方块A
紫底的梅花A
红底的红心2
红底的黑桃2
红底的方块2
红底的梅花2
绿底的红心2
绿底的黑桃2
绿底的方块2
绿底的梅花2
蓝底的红心2
蓝底的黑桃2
蓝底的方块2
蓝底的梅花2
白底的红心2
白底的黑桃2
白底的方块2
白底的梅花2
粉底的红心2
粉底的黑桃2
粉底的方块2
粉底的梅花2
紫底的红心2
紫底的黑桃2
紫底的方块2
紫底的梅花2
红底的小王
绿底的小王
蓝底的小王
白底的小王
粉底的小王
紫底的小王
红底的大王
绿底的大王
蓝底的大王
白底的大王
粉底的大王
紫底的大王

㈤ C语言 关于扑克牌的编程调试问题

printf的时候第二个数是ptNumber[i]啦......

只写ptNumber的话就相当于ptNumber[0]的地址了,所以这五个输出都孙核一样,都是数组辩闭首则灶掘位地址。

㈥ 用c语言创建一个数组用来表示52张扑克牌,然后洗牌后输出,要求每行输出13张

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<ctime>
#include<cstdlib>;
usingnamespacestd;
inta[55];
voidpt(intid){//printacardbyid
//printcolor
if(id%4==0)printf("A-");
if(id%4==1)printf("B-");
if(id%4==2)printf("C-");
if(id%4==3)printf("D-");
//printnumber
if(id/4==0)printf("A");
elseif(id/4+1<=10)printf("%d",id/4+1);
if(id/4==10)printf("J");
if(id/4==11)printf("Q");
if(id/4==12)printf("K");
}
voidshuffle(){
for(inti=0;i<52;i++)
swap(a[i],a[rand()%(i+1)]);//randomshuffle
}
intmain(){
srand((unsignedint)time(NULL));
for(inti=0;i<52;i++)
a[i]=i;
shuffle();
for(inti=0;i<52;i++){
pt(a[i]);
if(i%13==12)printf(" ");
}
return0;
}

为每张牌定义id

随机洗牌

㈦ C语言:52张扑克牌问题

调试好,答案是7张

#include<stdio.h>
main()
{
int pk[53],i,j,count;
for(i=1;i<=52;i++)
pk[i]=0;/*0 up*/
for(i=2;i<=52;i++)
{
for(j=i;j<=52;j++)
if(j%i==0)
if(pk[j]==0)pk[j]=1;
else pk[j]=0;
}
count=0;
for(i=1;i<=52;i++)
if(pk[i]==0) count++;

printf("%d",count);
}

㈧ 编写C语言程序,模拟将一副扑克牌54张随机分给4个人 (如何表达不同花色和大小,如何高效洗牌)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int poke[13][4],joker[2],last_four_card[4]; //定义四类十三张牌、双王
int i,j,card,count,tank[54],player[20],computer[2][20];
bool flag;
srand(time(NULL)); //初始化随机种子
for(i=0;i<54;i++)
tank[i]=-1; //初始化容器
for(i=0;i<54;i++)
{
flag=1;
while(flag)
{
flag=0;
card=rand()%54;
for(j=0;j<=i;j++)
if(card==tank[j]) flag=1;
}
tank[i]=card;
}

count=0;
for(i=0;i<54;i++)
{
if(tank[i]==52) printf("jok ");
else if(tank[i]==53) printf("JOK ");
else if(tank[i]%13==0) printf("%c%c ",tank[i]/13+3,'A');
else if(tank[i]%13==10) printf("%c%c ",tank[i]/13+3,'J');
else if(tank[i]%13==11) printf("%c%c ",tank[i]/13+3,'Q');
else if(tank[i]%13==12) printf("%c%c ",tank[i]/13+3,'K');
else if(tank[i]%13<10) printf("%c%-2d ",tank[i]/13+3,tank[i]%13+1);
count++;
if(count%20==0) printf("\n");
}
count=0;
for(i=0;i<16;i++)
{
player[i]=tank[i];
computer[0][i]=tank[i+16];
computer[1][i]=tank[i+32];
}
for(i=0;i<4;i++)
last_four_card[i]=tank[53-i];
printf("\n\n你的牌是:\n\n");
for(i=0;i<16;i++)
{
if(player[i]==52) printf("jok ");
else if(player[i]==53) printf("JOK ");
else if(player[i]%13==0) printf("%c%c ",player[i]/13+3,'A');
else if(player[i]%13==10) printf("%c%c ",player[i]/13+3,'J');
else if(player[i]%13==11) printf("%c%c ",player[i]/13+3,'Q');
else if(player[i]%13==12) printf("%c%c ",player[i]/13+3,'K');
else if(player[i]%13<10) printf("%c%-2d ",player[i]/13+3,player[i]%13+1);
count++;
if(count%20==0) printf("\n");
}
getchar();
getchar();
return 0;
}

以前无聊写的 给你作参考吧

㈨ C语言编程题:扑克牌排序问题

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

typedefstructcard{
inttype;//type0:梅花,1:方片,2:红桃,3:黑桃,4:王
intpoint;//type=0--3时,point=2--14,type=4时,point=0--1
}CARD;

voidsort(CARDa[],intn){
inti,j,k;
CARDt;
for(i=0;i<n-1;++i){
k=i;
for(j=i+1;j<n;++j){
if(a[k].point>a[j].point)
k=j;
}
if(k!=i){
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}

voidshow(CARDa[],intn){
inti;
chartype[4][5]={"梅花","方片","红桃","黑桃"};
charpoint[]="JQKA";
for(i=0;i<n;++i){
if(a[i].type>=0&&a[i].type<=3){
printf("%s",type[a[i].type]);
if(a[i].point<11)printf("%d",a[i].point);
elseprintf("%c",point[a[i].point-11]);
}
else{
if(a[i].point)printf("大王");
elseprintf("小王");
}
}
printf(" ");
}

intHas(CARDa[],intn,CARDCard){
inti;
for(i=0;i<n;++i){
if(a[i].type==Card.type&&a[i].point==Card.point)
return1;
}
return0;
}

intmain(){
CARDarr[5],t;
inti,n=5,m;
srand((unsigned)time(NULL));
for(i=0;i<n;++i){
t.type=rand()%5;
if(t.type==4)t.point=rand()%2;
elset.point=rand()%13+2;
if(Has(arr,i,t))--i;
elsearr[i]=t;
}
m=n;
for(i=0;i<m;++i){//如果有大王,则排在最后
if(arr[i].type==4&&arr[i].point){
t=arr[i];
arr[i]=arr[m-1];
arr[m-1]=t;
--m;
}
}
for(i=0;i<m;++i){//如果有小王,也排在最后
if(arr[i].type==4){
t=arr[i];
arr[i]=arr[m-1];
arr[m-1]=t;
--m;
}
}
sort(arr,m);
show(arr,n);
return0;
}

㈩ 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) ,后面的两个参数分别是整数,字符,和格式化字符串相对应。是转义符,对于要输出特殊字符时,需要在前面加上,比如输出时,就写成\;再如 " ,应写成";输出换行写成 ,输出回车写成 等。在这个题目中,和后面的%构不成特殊字符转义,所以不输出,删掉它也是一样的。