#include<stdio.h>#include<stdlib.h>#include<time.h>int outputacard(int a,int b) //输出一张扑克{if(b==11){printf("[%c",a); //Jprintf("%c]",b+63);}else if(b==12){printf("[%c",a); //Qprintf("%c]",b+69);}else if(b==13){printf("[%c",a); //Kprintf("%c]",b+62);}else if(b==1){printf("[%c",a); //Aprintf("%c]",b+64);}else if(b==88)printf("[%c%c]",a,b); //XXelse{printf("[%c",a); //随机输出8张扑克printf("%d]",b);}}int main(){int puke[8][2];int i,j,k;srand((unsigned int)time(NULL));printf("记住下面牌的顺序\n准备好了按<回车>,我会提问你的^-^\n");for(i=0; i<8; i++)for(j=0; j<2; j++){if(j==0)puke[i][j]=3+rand()%3; /*红心是003 方块004 梅花005 黑桃006*/elsepuke[i][j]=1+rand()%12; //A……K}for(k=0; k<8; k++)outputacard(puke[k][0],puke[k][1]); //随机输出8张扑克printf("\n");int puke2[8][2];int puke0[2];int t,rh;for(t=0; t<8; t++){puke2[t][0]=puke[t][0];puke2[t][1]=puke[t][1];}for(t=0; t<8; t++) /*把上面的8张扑克打乱顺序存入另一个数组*/{rh=rand()%7;if(rh!=t){puke0[0]=puke2[t][0];puke0[1]=puke2[t][1];puke2[t][0]=puke2[rh][0];puke2[t][1]=puke2[rh][1];puke2[rh][0]=puke0[0];puke2[rh][1]=puke0[1];}}for(k=0; k<8; k++)outputacard(puke2[k][0],puke2[k][1]); /*打乱顺序后重新输出8张扑克*/printf("\n");int puke3[8][2],puke4[8][2];for(i=0; i<8; i++) /*为把上面代表两组扑克的数组puke,puke2复制到另外*/for(j=0; j<2; j++) /*两个数组puke3、puke4中,以方便后面输出*/for(j=0; j<2; j++){puke3[i][j]=88;puke4[i][j]=88;}system("pause");system("CLS");int a,b,num=0;int alp1[8]= {0,0,0,0,0,0,0,0},alp2[8]= {0,0,0,0,0,0,0,0}; /* 记录各个位置的牌是否翻开*/while(alp1[0]==0||alp1[1]==0||alp1[2]==0||alp1[3]==0||alp1[4]==0||alp1[5]==0||alp1[6]==0||alp1[7]==0){printf("依次输入第一行、第二行两张相同的牌的位置\n");for(k=0; k<8; k++)outputacard(puke3[k][0],puke3[k][1]);printf("\n");for(k=0; k<8; k++)outputacard(puke4[k][0],puke4[k][1]);printf("\n");scanf("%d%d",&a,&b);num++;system("CLS");if(puke[a-1][0]==puke2[b-1][0]&&puke[a-1][1]==puke2[b-1][1]&&alp1[a-1]!=1&&alp2 [b-1]!=1&&a>=1&&a<=8&&b>=1&&b<=8){/*如果两张牌相同且没有被翻开过且输入的数字大于0小于8复制puke,puke2中这两个元素的数据到puke3,puke4中,并输出puke3,puke4*/puke3[a-1][0]=puke[a-1][0];puke3[a-1][1]=puke[a-1][1];alp1[a-1]++;puke4[b-1][0]=puke2[b-1][0];puke4[b-1][1]=puke2[b-1][1];alp2[b-1]++;printf("猜对了,厉害!\n");for(k=0; k<8; k++)outputacard(puke3[k][0],puke3[k][1]);printf("\n");for(k=0; k<8; k++)outputacard(puke4[k][0],puke4[k][1]);printf("\n");system("pause");system("CLS");}else if(alp1[a-1]!=1&&alp2[b-1]!=1&&a>=1&&a<=8&&b>=1&&b<=8){/*如果两张牌不相同但没有被翻开过且输入的数字大于0小于9输出原puke3,puke4并显示该位置正确的牌*/printf("你好像记错了,再想想,我相信你!\n");for(i=0; i<8; i++){if(i==a-1)outputacard(puke[i][0],puke[i][1]);elseoutputacard(puke3[i][0],puke3[i][1]);}printf("\n");for(k=0; k<8; k++){if(k==b-1){outputacard(puke2[k][0],puke2[k][1]);}elseoutputacard(puke4[k][0],puke4[k][1]);}printf("\n");system("pause");system("CLS");}else if(a>=1&&a<=8&&b>=1&&b<=8) /*如果这两张牌中任意一张已经被翻开,输出如下*/{printf("这两张牌中的某一张好像已经被你翻开了哦\n");for(k=0; k<8; k++)outputacard(puke3[k][0],puke3[k][1]);printf("\n");for(k=0; k<8; k++)outputacard(puke4[k][0],puke4[k][1]);printf("\n");system("pause");system("CLS");}else{printf("每行只有8张牌呦,请输入正确的位置,么么哒\n");for(k=0; k<8; k++)outputacard(puke3[k][0],puke3[k][1]);printf("\n");for(k=0; k<8; k++)outputacard(puke4[k][0],puke4[k][1]); printf("\n");system("pause");system("CLS");}}printf("你一共猜了%d次\n",num);if(num==8)printf("完美!!!\n");else if(num>8&&num<=10)printf("非常棒!\n");else if(num>10&&num<=16)printf("你的记忆力挺不错的!\n");elseprintf("你的记忆力一般般啦,再练练吧!\n"); system("pause");return 0;}。