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

📄 playing card.cpp

📁 自编汉诺塔,自己改进,很好用,很好理解.
💻 CPP
字号:
//缺点是不止52次随机
/*#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

using namespace std;

void playing(int *, int);

int main()
{
	int a[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};
	int b[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};	
	int c[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};
	int d[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};
    int cn0=0, cn1=0, cn2=0, cn3=0;

	srand( time(0) );

    for (int count=0; count<52; count++){
		int rn;

		rn=rand()%4;
        switch (rn){
		case 0://每个case下的语句完全可以再实现成一个函数
			if(cn0 < 13){
                cout<<"第 "<<setw(2)<<(count+1)<<" 张牌是红桃: ";
			    playing(a, cn0);
			}
			else
				count--;
			cn0++;
			break;
		case 1:
			if(cn1 < 13){
			    cout<<"第 "<<setw(2)<<(count+1)<<" 张牌是方块: ";
			    playing(b, cn1);
			}
			else
				count--;
			cn1++;
            break;
		case 2:
			if(cn2 < 13){
			    cout<<"第 "<<setw(2)<<(count+1)<<" 张牌是黑桃: ";
			    playing(c, cn2);
			}
			else
				count--;
			cn2++;
            break;
		case 3:
			if(cn3 < 13){
		        cout<<"第 "<<setw(2)<<(count+1)<<" 张牌是梅花: ";
			    playing(d, cn3);
			}
			else
				count--;
			cn3++;
            break;
		}		
	}

    system( "PAUSE" );

    return 0;
}

void playing(int *card,int count)
{//这里面不能循环
    int rn, t;

	rn=rand()%(13-count);
	t=card[rn+count];
	card[rn+count]=card[count];
    card[count]=t;
	cout << setw(2) << card[count]<<endl;
}*/

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>

using namespace std;

void playing(int *, int, int *);

int main()
{
	int a[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};
	int b[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};	
	int c[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};
	int d[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};
    int cn0=0, cn1=0, cn2=0, cn3=0, count=0;
	int *countPtr=&count;

	srand( time(0) );

    for (; count<52; count++){
		int rn;

		rn=rand()%4;
        switch (rn){
		case 0:
	        if(cn0 < 13)
                cout<<"第 "<<setw(2)<<(count+1)<<" 张牌是红桃: ";
			playing(a, cn0, countPtr);//如果按值传递count,则在playing函数中修改不了它的值
			cn0++;
			break;
		case 1:
	        if(cn1 < 13)
			    cout<<"第 "<<setw(2)<<(count+1)<<" 张牌是方块: ";
			playing(b, cn1, countPtr);
			cn1++;
            break;
		case 2:
	        if(cn2 < 13)
			    cout<<"第 "<<setw(2)<<(count+1)<<" 张牌是黑桃: ";
			playing(c, cn2, countPtr);
			cn2++;
            break;
		case 3:
	        if(cn3 < 13)
		        cout<<"第 "<<setw(2)<<(count+1)<<" 张牌是梅花: ";
			playing(d, cn3, countPtr);
			cn3++;
            break;
		}		
	}

    system( "PAUSE" );

    return 0;
}

void playing(int *card,int count, int *ac)
{//这里面不能循环
    int rn, t;

	if(count < 13){
		rn=rand()%(13-count);
		t=card[rn+count];
		card[rn+count]=card[count];
        card[count]=t;
		cout << setw(2) << card[count]<<endl;
	}
	else 
		*ac=*ac-1;
}

⌨️ 快捷键说明

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