⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 暗记扑克牌.cpp

📁 软件课程设计(1) 是一些非常经典的程序
💻 CPP
字号:
//计算机从一副扑克牌(54张)中任意抽出27张,摆放在不同的三行上(每行9张),
//用户"暗记"某张纸牌,而后告诉计算机所"暗记"的那张纸牌处于哪一行中;之后计算机再两次将纸牌重新摆放,
//并让用户再回答两次相同的提问(那张纸牌在重新摆放后又处在哪一行上);此时计算机会将用户所"暗记"的
//那张纸牌给挑出来。
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <cmath>
#include <process.h>
#include<time.h>

int v1,v2;
int b[27];    //全局变量
char * mapping( int x)    //随机数映射为字符
{
	/*char c[4][15];
	for(int i=0;i<14;i++)
	   for(int j=0;j<4;j++)
		   c[i][j]=*/
	switch(x) 
	{
	    case 1:return  "a-1";break;         //太繁了,可当时就没想到别的方法,编程太少了!
	    case 2:return  "b-1";break;
	    case 3:return  "c-1";break;
	    case 4:return  "d-1";break;
		case 5:return  "a-2";break;
		case 6:return  "b-2";break;
		case 7:return  "c-2";break;
		case 8:return  "d-2";break;
		case 9:return  "a-3";break;
		case 10:return  "b-3";break;
		case 11:return  "c-3";break;
		case 12:return  "d-3";break;
		case 13:return  "a-4";break;
		case 14:return  "b-4";break;
		case 15:return  "c-4";break;
		case 16:return  "d-4";break;
		case 17:return  "a-5";break;
	    case 18:return  "b-5";break;
        case 19:return  "c-5";break;
		case 20:return  "d-5";break;
		case 21:return  "a-6";break;
		case 22:return  "b-6";break;
		case 23:return  "c-6";break;
		case 24:return  "d-6";break;
		case 25:return  "a-7";break;
		case 26:return  "b-7";break;
		case 27:return  "c-7";break;
		case 28:return  "d-7";break;
		case 29:return  "a-8";break;
		case 30:return  "b-8";break;
		case 31:return  "c-8";break;
		case 32:return  "d-8";break;                
		case 33:return  "a-9";break;
		case 34:return  "b-9";break;
		case 35:return  "c-9";break;
		case 36:return  "d-9";break;
		case 37:return  "a-10";break;
		case 38:return  "b-10";break;
		case 39:return  "c-10";break;
		case 40:return  "d-10";break;
		case 41:return  "a-J";break;
		case 42:return  "b-J";break;
		case 43:return  "c-J";break;
		case 44:return  "d-J";break;
		case 45:return  "a-Q";break;
		case 46:return  "b-Q";break;
		case 47:return  "c-Q";break;
		case 48:return  "d-Q";break;
		case 49:return  "a-K";break;
		case 50:return  "b-K";break;
		case 51:return  "c-K";break;
		case 52:return  "d-K";break;
		case 53:return  "KING1";break;
		case 54:return  "KING2";break;
		default:exit(1);
	}

} 


void show1()          //	输出初态
{
    int a[27];
	srand( (unsigned)time( NULL ) );

	
	a[0]=rand()%54;
	cout<<"Line 1      "<<mapping(a[0])<<"  ";
	for (int i=1;i<27;i++)
	{
        a[i]=rand()%54;
	     int bool1=1;
		for (int t=i-1;t>=0;t--)
		{
			if (a[i]==a[t])
			{
				bool1=0;
				i=i-1;break;
			}
		}
		while(bool1)
		{   int x =a[i];
			cout<<mapping(x)<<"    ";                   
			bool1=0;                                     
		}
		if(i==8) cout<<endl<<"Line 2      ";
		if(i==17) cout<<endl<<"Line 3      ";

	}
	for(int k=0;k<27;k++)
	{
		b[k]=a[k];
	}

  cout<<endl;

}



void show2(int n,  int *a)//按某种算法重排列,输出
{
	int temp;
	switch(n)
	{
	case 1:{for(int i=0;i<3;i++)
		   {temp=a[i];a[i]=a[i+15];a[i+15]=temp;}
		    for(int j=3;j<6;j++)
			{temp=a[j];a[j]=a[j+24];a[j+24]=temp;}
			}
		   break;
	case 2:{for(int k=9;k<12;k++)
		   {temp=a[k];a[k]=a[k-3];a[k-3]=temp;}
		    for(int l=12;l<15;l++)
			{temp=a[l];a[l]=a[l+12];a[l+12]=temp;}
		   }
	    break;
	case 3:{for(int m=18;m<21;m++)
		   {temp=a[m];a[m]=a[m-12];a[m-12]=temp;}
		for(int t=21;t<24;t++)
		{temp=a[t];a[t]=a[t-6];a[t-6]=temp;}
		   }
	    break;
	default:exit(1);
	    break;
	}
    
    cout<<"Line1     ";
	for(int r=0;r<27;r++)
	{  
		cout<<mapping(a[r])<<"    ";
		if(r==8)cout<<endl<<"Line2     ";
		if(r==17)cout<<endl<<"Line3     ";
    }

    cout<<endl;
}


void show3(int n,int *a)//再按某种算法重排列,输出
{   int h;
	if(v1==1&&n==1)h=1;
	else if(v1==1&&n==2)h=2;
	else if(v1==1&&n==3)h=3;
	else if(v1==2&&n==1)h=4;
	else if(v1==2&&n==2)h=5;
	else if(v1==2&&n==3)h=6;
	else if(v1==3&&n==1)h=7;
	else if(v1==3&&n==2)h=8;
	else if(v1==3&&n==3)h=9;
	int temp;
	switch(h)
	{
	case 1:
	case 4:
	case 7:
		{
		   temp=a[6];a[6]=a[17];a[17]=temp;
		   temp=a[7];a[7]=a[26];a[26]=temp;
		 }break;
	case 2:
	case 5:
	case 8:
		{
		   temp=a[15];a[15]=a[8];a[8]=temp;
		   temp=a[16];a[16]=a[26];a[26]=temp;
		   }break;
	case 3:
	case 6:
	case 9:
		{
		   temp=a[24];a[24]=a[8];a[8]=temp;
		   temp=a[17];a[17]=a[25];a[25]=temp;
		   }break;
	default:break;
	}

 cout<<"Line1     ";
	for(int r=0;r<27;r++)
	{  
		cout<<mapping(a[r])<<"    ";
		if(r==8)cout<<endl<<"Line2     ";
		if(r==17)cout<<endl<<"Line3     ";
    }

    cout<<endl;


}

int show4(int n,int *a)//得出最后的结果;
{
 if(n==1) return a[8];
 if(n==2) return a[17];
 if(n==3) return a[26];
	return 0;
}



void main()
{ 
	show1();
	int n;
	cout<<"Remember a card, and tell me what line it reside in(1/2/3):";
	cin>>n;
	v1=n;
	show2(n,b);
	cout<<"What line the card you remembered reside in now (1/2/3) :";
	cin>>n;
	v2=n;
	show3(n,b);
	cout<<"What line the card you remembered reside in now (1/2/3) : ";
	cin>>n;
	
	int u;
    u=show4(n,b);
	cout<<"Your remembered card is :"<<mapping(u)<<endl;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -