本文目录一览:
- 1、c语言纸牌发牌程序源代码(附注释)
- 2、魔术师的纸牌编程算法
- 3、简单的纸牌游戏,C++
- 4、求c语言的“纸牌游戏”代码
- 5、java题目 小明左右手分别拿两张纸牌 黑桃10和红心8, 现在交换手中的牌 用程序模拟这一过程
c语言纸牌发牌程序源代码(附注释)
其实发牌问题里有个随机的问题,就是模拟洗牌的问题,我来尝试下这个程序吧(每个花色的代码分别是:红桃 \x3,方块\x4,梅花\x5,黑桃\x6
#include stdio.h
#include time.h
char hua_se[4]={'\x3','\x4','\x5','\x6'}; //定义一个数组来存放花色
char *dight[14]={"Ace","two","three","four","five","six","seven","eight","nine","ten","jack","queen","king"};//定义一个指针型的数组来存放数字
int fa_pai[4][13]={0};//定义一个二维数组来发牌
void move(int fa_pai[4][13]);
void deal(int fa_pai[4][13],char huase[4],char *dight[4][13]);
int main(void){srand(time(NULL));
move(fa_pai);
deal(hua_se,dight,fa_pai);
printf("你是否想结束发牌?Y/N");
getch();return 0;}void move(int fa_pai[4][13]){int r,card,row,column;
for(card=1;card=52;card++)
{
r=rand();
row=r%4;
r=rand();
column=r%13;
while(fa_pai[4][13]!=0)
{
r=rand();
row=r%4;
r=rand();
column=r%13;
}
fa_pai[row][column]=card;
}
}
void deal(int fapai[4][13],char hua_se[3],char *dight[13])
{
char c;int card,row,column;
for(card=1;card=52;card++)
{
for(row=0;row=3;row++)
{
for(column=0;column=12;column++)
{
if(fapai[row][column]==card)
{
if(card%3=0)c='\n';
elsec='\t';
printf("%5sof%-8s%c",hua_se[row],dight[column],c);
}
}
}
}
}
魔术师的纸牌编程算法
我的理解是第1张是A,然后把第2张放到最后,然后第3张是2,然后把第4张放到最后,第5张放到最后,然后第6张是3,然后把7、8、9张依次放到最后,然后第8张是4……
是这样吧?
按照你说的话,牌由上到下的顺序是(T代表10):A825T3QJ9476K
c语言实现的话用倒推的思想应该会相对比较简单一些,你自己拿13张牌自己倒推着试试看,然后按照自己倒推的思路编程就会容易许多。
具体的代码就不给你编了,实现的时候可能多层循环比较麻烦,一步一步来就会轻松些,最好先画个流程图。
简单的纸牌游戏,C++
#include "StdAfx.h"
#include stdio.h
void fenxi();
void shuchu();
void main(){
int m;
printf("\n\n\n");
printf("\t\t\t******纸牌游戏******\n");
printf("游戏规则如下:\n\n\n");
printf("\t编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,\n");
printf(" 直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后\n");
printf(" 一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;\n");
printf(" 再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向\n");
printf(" 上的牌有哪些?");
while(1){
printf("\n\t*1.游戏分析:\n\t*2.输出结果:\n\t*3.退出:\n");
printf("\t请输入你的选择:");
scanf("%d",m);
switch(m){
case 1:
fenxi();
break;
case 2:
shuchu();
break;
default:
return;
}
}
return;
}
void fenxi(){
int i,j;
printf("游戏分析:\n\n");
printf("\t如下列数组,游戏开始时,所有牌面朝上,每张牌翻一下,则该张牌出现一次,若");
printf("出现偶数次的牌为正反抵消,依然为朝上的,所以朝上的为1和以下偶数次出现的数。\n");
for(i=1;i=52;i++){
for(j=2;j=52;j++)
if(i%j==0){
printf("%d ",i);
}
printf("\n");
}
return;
}
void shuchu(){
int a[52]={0};
int i,j;
printf("\n\n第五十二次翻牌过后正面向上的有:\n\n");
for(i=0;i=51;i++) {
a[i]=-1;
}
for(i=1;i=52;i++) {
for(j=2;j=52;j++){
if(i%j==0){
a[i-1]=a[i-1]*-1;
}
}
}
for(i=1;i=52;i++){
if(a[i-1]*-1==1)
printf("%d ",i);
}
getchar();
}
求c语言的“纸牌游戏”代码
原来帮人编过一个,在,把代码复制过来,你可以参考一下。(问一下,不会这个还是Leehomloveyaya你发的吧?
#includestdio.h
void main()
{
int i,j,flag[52];
for(i=0;i52;i++)//52张牌所有状态均为1,即均为正面
flag[i]=1;
for(j=2;j=52;j++) //对52张牌(序号放在i里)对2,3...52(放在j里)按i+1是否是j的倍数进行状态翻转。
for(i=0;i52;i++)
if((i+1)%j==0)
flag[i]=flag[i]?0:1;
printf("positive card are:");
for(i=0;i52;i++)//对翻转处理后状态仍然是正面的(flag保持为1)的将其编号输出。
{
if(flag[i])
printf("%d ",i+1);
}
printf("\n");
}
java题目 小明左右手分别拿两张纸牌 黑桃10和红心8, 现在交换手中的牌 用程序模拟这一过程
交换牌的话只需:1.设一个中间变量赋值为左手中的纸牌10 2.把右手中的纸牌8赋值给左手中的纸牌10 3.把中间变量中的10赋值给右手中的纸牌8 就可以了
int j=10;左手中的纸牌
int k=8;右手中的纸牌
开始交换:
int i=j;
j=k;
k=i;