A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiezhongmin 中级黑马   /  2015-1-30 17:33  /  1662 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

花了一下午研究此算法,希望对你有帮助!有好的算法也发帖上来,请多多交流!
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef struct card{

   int hs;
   char Number;

}Card;

Card arrye[52];

void ShowCard()
{
        int i,j,sign;
        for (i=0, j=0; i<52; i++,j++)
        {
                if(!(j%13))
                {
                        printf ("\n");
                }
                switch (arrye[i].hs)
                {
                case 0:
                        sign=3;
                        break;
                case 1:
                        sign=4;
                        break;
        case 2:
                        sign=5;
                        break;
        case 3:
                        sign=6;
                        break;
        default:
                        ;
                }
                printf ("  %c%c",sign,arrye[i].Number);

        }

}



void Shuffle()
{
        int i,temp,hs;
        hs=-1;
        for(i=0; i<52;i++)
        {
                if(i%13==0)//改变花色
                {
                        hs++;
                }
                arrye[i].hs=hs;//保存花色
                temp=i%13;
                switch (temp)//特殊符号处理
                {
                  case 0:
                        arrye[i].Number='A';
                        break;

                  case 9:
                        arrye[i].Number='0';
                        break;

                  case 10:
                  arrye[i].Number='J';
                  break;

                  case 11:
                        arrye[i].Number='Q';
                        break;

          case 12:
                        arrye[i].Number='K';
                        break;

                  default:
                          arrye[i].Number=temp+'1';

                }
        }


        printf ("一副新牌的排列如下:\t");
         ShowCard();

    Card temporary;
        srand (time(NULL));
        for (i=0; i<52; i++)
        {
                int j=rand()%52;
                temporary=arrye[j];
                arrye[j]=arrye[i];
                arrye[i]=temporary;

        }
}

void main ()
{
  Shuffle();
  printf ("\n洗牌后的排列:\n");
  ShowCard();
  printf ("\n");
}

评分

参与人数 1黑马币 +3 收起 理由
张文文 + 3 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马