C语言课程设计之自动发牌.docx
- 文档编号:5700808
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:14
- 大小:17.27KB
C语言课程设计之自动发牌.docx
《C语言课程设计之自动发牌.docx》由会员分享,可在线阅读,更多相关《C语言课程设计之自动发牌.docx(14页珍藏版)》请在冰豆网上搜索。
C语言课程设计之自动发牌
/*C语言程序设计课题自由发牌*/
#include
#include
#include
intM[52],P1[13],P2[13],P3[13],P4[13];
intN[104],P1a[26],P2a[26],P3a[26],P4a[26];
intS1(intP1[]);/*将52个随机产生的数字数字转化为牌*/
intS2(intP1a[]);/*将104个随机产生的数字数字转化为牌*/
intmeun(intx);
intchansheng_52_integer(intM[]);
intfenpei_52(intM[]);/*将产生的52个数依次分给四个人*/
intpaixu_52(intP1[],intP2[],intP3[],intP4[]);/*对这四个人的牌进行排序*/
intzh_h1(intP1[],intP2[],intP3[],intP4[]);/*把数字转换为牌*/
intchansheng_104_integer(intN[]);
intfenpei_104(intM[]);/*将产生的104个随机数依次分给四个人*/
intpaixu_104(intP1a[],intP2a[],intP3a[],intP4a[]);/*对四个人的牌进行排序*/
intzh_h2(intP1a[],intP2a[],intP3a[],intP4a[]);/*把数字转换为牌*/
main()
{
intf,x;
charans;
do{
f=meun(x);
if(f==1)
{
chansheng_52_integer(M);
fenpei_52(M);
paixu_52(P1,P2,P3,P4);
zh_h1(P1,P2,P3,P4);
}
if(f==2)
{
chansheng_104_integer(N);
fenpei_104(N);
paixu_104(P1a,P2a,P3a,P4a);
zh_h2(P1a,P2a,P3a,P4a);
}
printf("请输入Y或y选择继续发牌:
");
scanf("%c",&ans);
}while(ans=='y'||ans=='Y');
return0;
}
intchansheng_52_integer(intM[])
{
inti,j;
srand((unsigned)time(NULL));/*产生一个从此时开始的随机数*/
for(i=0;i<52;i++)
{
M[i]=rand()%52+1;/*随机取数在1—52之间,并用循环输出*/
for(j=0;j
{
if(M[i]==M[j])/*如果产生相同的数值,则退出*/
{
i=i-1;break;
}
}
}
return0;
}
intfenpei_52(intM[])
{
intp,q;
for(p=0;p<13;p++)
{for(q=0;q<52;q=q+4)
{
P1[p]=M[q];
p++;}
break;
}
for(p=0;p<13;p++)
{for(q=1;q<52;q=q+4)
{
P2[p]=M[q];
p++;}
break;
}
for(p=0;p<13;p++)
{for(q=2;q<52;q=q+4)
{
P3[p]=M[q];
p++;}
break;
}
for(p=0;p<13;p++)
{for(q=3;q<52;q=q+4)
{
P4[p]=M[q];
p++;}
break;
}
return0;
}
intpaixu_52(intP1[],intP2[],intP3[],intP4[])
{
inti,j,t;
for(i=0;i<12;i++)
{
for(j=i+1;j<13;j++)
{
if(P1[j]>P1[i])
{
t=P1[j];
P1[j]=P1[i];
P1[i]=t;
}
if(P2[j]>P2[i])
{
t=P2[j];
P2[j]=P2[i];
P2[i]=t;
}
if(P3[j]>P3[i])
{
t=P3[j];
P3[j]=P3[i];
P3[i]=t;
}
if(P4[j]>P4[i])
{
t=P4[j];
P4[j]=P4[i];
P4[i]=t;
}
}
}
return0;
}
intS1(intP1[])
{FILE*fp;
inta[9]={2,3,4,5,6,7,8,9,10};
charb[4]={'J','Q','K','A'};
inti;
if((fp=fopen("c.txt","a+"))==NULL)
{printf("cannotopenfile!
\n");
exit
(1);}
printf("4个人玩1副牌按P1-P4从上到下\n");
fprintf(fp,"4个人玩1副牌按P1-P4从上到下\n");
printf("S");fprintf(fp,"S");
for(i=0;i<13;i++)
{
if(P1[i]<10&&P1[i]>0)
{
printf("%2d",a[(P1[i]%13)-1]);
fprintf(fp,"%2d",a[(P1[i]%13)-1]);
}
if(P1[i]<14&&P1[i]>9)
{
printf("%2c",b[(P1[i]+3)%13]);
fprintf(fp,"%2c",b[(P1[i]+3)%13]);
}
}printf("\n");fprintf(fp,"\n");
printf("H");fprintf(fp,"H");
for(i=0;i<13;i++)
{
if(P1[i]<23&&P1[i]>13)
{
printf("%2d",a[P1[i]%13-1]);
fprintf(fp,"%2d",a[P1[i]%13-1]);
}
if(P1[i]<27&&P1[i]>22)
{
printf("%2c",b[(P1[i]+3)%13]);
fprintf(fp,"%2c",b[(P1[i]+3)%13]);
}
}printf("\n");fprintf(fp,"\n");
printf("D");fprintf(fp,"D");
for(i=0;i<13;i++)
{
if(P1[i]<36&&P1[i]>26)
{
printf("%2d",a[P1[i]%13-1]);
fprintf(fp,"%2d",a[P1[i]%13-1]);
}
if(P1[i]<40&&P1[i]>35)
{
printf("%2c",b[(P1[i]+3)%13]);
fprintf(fp,"%2c",b[(P1[i]+3)%13]);
}
}printf("\n");fprintf(fp,"\n");
printf("C");fprintf(fp,"C");
for(i=0;i<13;i++)
{
if(P1[i]<49&&P1[i]>39)
{
printf("%2d",a[P1[i]%13-1]);
fprintf(fp,"%2d",a[P1[i]%13-1]);
}
if(P1[i]<53&&P1[i]>48)
{
printf("%2c",b[(P1[i]+3)%13]);
fprintf(fp,"%2c",b[(P1[i]+3)%13]);
}
}
printf("\n");fprintf(fp,"\n");fclose(fp);
return0;
}
intzh_h1(intP1[],intP2[],intP3[],intP4[])
{
S1(P1);
S1(P2);
S1(P3);
S1(P4);
return0;
}
intchansheng_104_integer(intN[])
{
inti,j;
srand((unsigned)time(NULL));/*产生一个从此刻开始的随机数*/
for(i=0;i<104;i++)
{
N[i]=rand()%104+1;/*随机取数在1—104,并用循环输出*/
for(j=0;j
{
if(N[i]==N[j])/*如果产生相同的数值,则退出*/
{
i=i-1;
break;
}
}
}
return0;
}
intfenpei_104(intN[])
{
intp,q;
for(p=0;p<26;p++)
{for(q=0;q<104;q=q+4)
{
P1a[p]=N[q];
p++;}
break;
}
for(p=0;p<26;p++)
{for(q=1;q<104;q=q+4)
{
P2a[p]=N[q];
p++;}
break;
}
for(p=0;p<26;p++)
{
for(q=2;q<104;q=q+4)
{
P3a[p]=N[q];
p++;
}
break;
}
for(p=0;p<26;p++)
{for(q=3;q<104;q=q+4)
{
P4a[p]=N[q];
p++;
}
break;
}
return0;
}
intpaixu_104(intP1a[],intP2a[],intP3a[],intP4a[])
{
inti,j,t;
for(i=0;i<104;i++)
{
if(P1a[i]>52)
{
P1a[i]=P1a[i]-52;
}
if(P2a[i]>52)
{
P2a[i]=P2a[i]-52;
}
if(P3a[i]>52)
{
P3a[i]=P3a[i]-52;
}
if(P4a[i]>52)
{
P4a[i]=P4a[i]-52;
}
}
for(i=0;i<25;i++)
{
for(j=i+1;j<26;j++)
{
if(P1a[j]>P1a[i])
{
t=P1a[j];
P1a[j]=P1a[i];
P1a[i]=t;
}
if(P2a[j]>P2a[i])
{
t=P2a[j];
P2a[j]=P2a[i];
P2a[i]=t;
}
if(P3a[j]>P3a[i])
{
t=P3a[j];
P3a[j]=P3a[i];
P3a[i]=t;
}
if(P4a[j]>P4a[i])
{
t=P4a[j];
P4a[j]=P4a[i];
P4a[i]=t;
}
}
}
return0;
}
intS2(intP1a[])
{FILE*fp;
inta[9]={2,3,4,5,6,7,8,9,10};
charb[4]={'J','Q','K','A'};
inti;
if((fp=fopen("a.txt","a+"))==NULL)
{printf("cannotopenfile!
\n");
exit
(1);}
printf("4个人玩2副牌按P1a-P4a从上到下\n");
fprintf(fp,"4个人玩2副牌按P1a-P4a从上到下\n");
printf("S");fprintf(fp,"S");
for(i=0;i<26;i++)
{
if((P1a[i]<10&&P1a[i]>0)||(P1a[i]>52&&P1a[i]<62))
{
printf("%2d",a[(P1a[i]%13)-1]);
fprintf(fp,"%2d",a[(P1a[i]%13)-1]);
}
if((P1a[i]<14&&P1a[i]>9)||(P1a[i]>61&&P1a[i]<66))
{
printf("%2c",b[(P1a[i]+3)%13]);
fprintf(fp,"%2c",b[(P1a[i]+3)%13]);
}
}printf("\n");fprintf(fp,"\n");
printf("H");fprintf(fp,"H");
for(i=0;i<26;i++)
{
if((P1a[i]<23&&P1a[i]>13)||(P1a[i]>65&&P1a[i]<75))
{
printf("%2d",a[P1a[i]%13-1]);
fprintf(fp,"%2d",a[P1a[i]%13-1]);
}
if((P1a[i]<27&&P1a[i]>22)||(P1a[i]>74&&P1a[i]<79))
{
printf("%2c",b[(P1a[i]+3)%13]);
fprintf(fp,"%2c",b[(P1a[i]+3)%13]);
}
}printf("\n");fprintf(fp,"\n");
printf("D");fprintf(fp,"D");
for(i=0;i<26;i++)
{
if((P1a[i]<36&&P1a[i]>26)||(P1a[i]>78&&P1a[i]<88))
{
printf("%2d",a[P1a[i]%13-1]);
fprintf(fp,"%2d",a[P1a[i]%13-1]);
}
if((P1a[i]<40&&P1a[i]>35)||(P1a[i]>87&&P1a[i]<92))
{
printf("%2c",b[(P1a[i]+3)%13]);
fprintf(fp,"%2c",b[(P1a[i]+3)%13]);
}
}printf("\n");fprintf(fp,"\n");
printf("C");fprintf(fp,"C");
for(i=0;i<26;i++)
{
if((P1a[i]<49&&P1a[i]>39)||(P1a[i]>91&&P1a[i]<101))
{
printf("%2d",a[P1a[i]%13-1]);
fprintf(fp,"%2d",a[P1a[i]%13-1]);
}
if((P1a[i]<53&&P1a[i]>48)||(P1a[i]>100&&P1a[i]<105))
{
printf("%2c",b[(P1a[i]+3)%13]);
fprintf(fp,"%2c",b[(P1a[i]+3)%13]);
}
}printf("\n");fprintf(fp,"\n");
return0;
}
intzh_h2(intP1a[],intP2a[],intP3a[],intP4a[])
{
S2(P1a);
S2(P2a);
S2(P3a);
S2(P4a);
return0;
}
intmeun(intx)
{intf;
printf("选择f==1副牌或者f==2副牌\n");
printf("输入数字f:
\n");
printf("如果输入Y或y则继续发牌:
\n");
printf("输入数字f:
\n");
scanf("%d",&f);
returnf;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 自动 发牌