2 weixin 34250340 weixin_34250340 于 2016.03.18 17:17 提问

随机产生六个不重复的数字
c++

如何在1到22这22个数字中随机产生六个不重复的数字,并把它们存放到一个数组int a[6]中

3个回答

lx624909677
lx624909677   Ds   Rxr 2016.03.18 18:40
int a[6]]
int nowNum = 0;
bool bFlag = false;
memeset(a,0,sizeof(a));
while(1)
{
    int n = rand()%21+1;
    bFlag = false;
    for(int i =0; i<nowNum; i++)
    {
        if(n == a[i])
        {
            bFlag = true;
            break;
        }
    }

    if(!bFlag)
    {
        a[nowNum++] = n;
    }
} 
huibin2010
huibin2010 while(numNum < 6)
一年多之前 回复
huibin2010
huibin2010 while语句要作退出检查
一年多之前 回复
huibin2010
huibin2010 好像会死循环
一年多之前 回复
huibin2010
huibin2010 好像会
一年多之前 回复
weixin_34250340
weixin_34250340
一年多之前 回复
qq_25280063
qq_25280063   2016.03.18 18:15

#include
#include
#include
#define MAX 21
using namespace std;
int main()
{
int arr[6];
int i=0;
bool ret=false;
srand((unsigned)time(NULL));
while(1)
{
arr[i]=rand()%MAX+1;
for(j=0;j<i;j++)
{
if(arr[j]==arr[i])
{
ret=true;
}
}
if(!ret)
{
i++;
ret=false;
}
if(i==10)
{
break;
}
}
while(--i)
{
cout<<arr[i]<<" ";
}
}

huibin2010
huibin2010   2016.03.19 08:32

修改lx624909677同学的:

const int COUNT=6;
int a[COUNT];
int nowNum = 0;

memeset(a,0,sizeof(a));
srand(time(NULL));

while(**nowNum < COUNT**)
{
int n = rand()%21+1;
bool bFlag = false;

    for(int i =0; i<nowNum; i++)
{
    if(n == a[i])
    {
        bFlag = true;
        break;
    }
}

if(!bFlag)
{
    a[nowNum++] = n;
}

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!