M__________c 2019-12-18 12:08 采纳率: 100%
浏览 717
已采纳

望大家帮忙求解c++洗牌问题

编写一个函数,对二维数组的全部元素实现随机打乱其位置(洗牌)。函数原型为: void MatShuffle(intarr[],introw,intcol);

  • 写回答

2条回答 默认 最新

  • 我是小白白白白白 2019-12-18 15:35
    关注

    https://blog.csdn.net/m0_38082783/article/details/79579116 这上面有

    #include<stdlib.h>
    #include<stdio.h>
    #include<time.h>
    #define random(x) (rand()%x)
    
    void MatShuffle(int intarr[],int introw,int intcol) //intarr[]数组,introw数组长度,intcol洗牌次数。
    {
      int s1,s2,z1,z2,i;
      srand((int)time(0));
      for(i=0;i<intcol;i++)
      { 
        s1=random(introw);
        s2=random(introw); 
        z1=intarr[s1];
        z2=intarr[s2];
        intarr[s2]=z1;
        intarr[s1]=z2;
      }
      for(i=0;i<introw;i++)
      printf("%d ",intarr[i]);
    }
    
    
    void main()
    { int i;
      int intarr[8]={1,2,3,4,5,6,7,8};  //可以自己添加输入数组,然后改参数
      for(i=0;i<8;i++)
      printf("%d ",intarr[i]);
      printf("\n");
      MatShuffle(intarr,8,10);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?