软大头 发表于 2021-10-16 22:54:00

扑克牌发牌

相当于从54张牌中不放回抽取,每次一张,直至抽完。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
                int i,j=0,k=0;
                time_t t;
        int str1={0};                //0-54,一共55个数
        int str2={0};
      for(i=0;i<55;i++);
      {
              str1=i;
                }
                i=0;                        //重置i
    srand((unsigned)time(&t));
    do   
        {
      j=rand() % 55;
      if(str1!=0&&j!=0)
      {
              k=j;
              str1=0;                        //抽过的数字直接改为0方便判断是否抽过
              str2=k;                       
              i++;
                }
        }while(i<54);
        for(i=0;i<54;i++)
        {
                printf("%d",str2);
        }
        return 0;
}

可是为啥我运行后总是卡住?

jhq999 发表于 2021-10-18 15:55:31

本帖最后由 jhq999 于 2021-10-18 16:00 编辑

for(i=0;i<55;i++);


      i=0;                        //重置i
        srand((unsigned)time(&t));
        k=55;
        do   
        {
                j=rand() % k;
                str2=str1;
                str1=str1;                     
                k--;
                i++;

        }while(i<54);

软大头 发表于 2021-10-19 09:07:39

jhq999 发表于 2021-10-18 15:55
for(i=0;i

感谢,抽到的数改成零这样太增加电脑工作量了,还是把它放到最后不再抽取好
页: [1]
查看完整版本: 扑克牌发牌