如何用c++从一组数组里面随机选择一个数出来和已有的数比较。

2024-12-28 11:01:28
推荐回答(2个)
回答1:

静态数组长度确定不能彻底删除,我是通过下标的移动覆盖实现删除,代码如下:
#include
#include
#include
void main()
{
int x,y,t,a[10];
int b[5]={1,2,3,4,5}; //已有数组随便选取
int n=0; //当做标志数使用
srand(time(0));
for(int i=0;i<10;i++) //随机产生a组数据,也就是a组元素未知
{
x=rand()%10+1;
for(int j=0;j<=i;j++)

if (a[j]==x)
{
x=rand()%10+1;
j=-1;
}
a[i]=x;
}
cout<<"a数组的所以元素:"< for(i=0;i<10;i++)
cout< cout< y=rand()%10; //随机产生a组元素的下标,也就可以随机选择一个元素
cout<<"随机选择的a数组中元素是:"< for(int k=0;k<5;k++)
{
if(b[k]==a[y]) //随机在a组产生的这个元素和b组相等
{
n+=1; //标志数加1
for(int l=y;l<10;l++)
{
t=a[l];
a[l]=a[l+1];
a[l+1]=t;
}
}
}
cout<<"经过处理后的a数组元素:"< for(i=0;i<10-n;i++)
cout< cout<}

回答2:

# include
# include
# include
# define SIZEA 5
# define SIZEB 6

int * del(int *a, int n)
{
int *temp;
int i;
int j=0;
for(i=0;i {
if(i==n)
{
continue;
}
else
{
temp[j++]=a[i];
}
}
return temp;
}
void main()
{
int j;
int a[SIZEA]={1,2,3,4,5};
int b[SIZEB]={3,4,5,6,7,8};
int *c;
int random;
int flag=0;
srand((unsigned)time(NULL));
random=rand()%(SIZEA-1);
printf("random is : %d\n",random);
for(j=0;j {
if(a[random]==b[j])
{
flag=1;
c=del(a,random);
break;
}
}
if(!flag)
{
printf("数组b中没有a[%d]=%d\n",random,a[random]);
return;
}
for(j=0;j {
printf("%d\n",c[j]);
}
}

random is : 3
1
2
3
5
Press any key to continue

random is : 0
数组b中没有a[0]=1
Press any key to continue