C++怎样随机输出两个5*5的矩阵,输出数字的范围是1至25,并且矩阵中的数字不能有重复。

 我来答
bdlanyu
2011-01-14 · TA获得超过550个赞
知道小有建树答主
回答量:378
采纳率:0%
帮助的人:522万
展开全部
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int main()
{
int n,i,j,k,a[25];
time_t cc;
time(&cc);
srand(cc);//随机种子
//计算机不能产生绝对的随机数,我们只好用时间作为随机数种子凑和下了
for(int n=0; n<2; n++)
{
for(int i=0;i<25;i++)a[i]=0;
for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
for(k=rand()%25; a[k]!=0; k=rand()%25);//判断是否重复
cout<<k+1<<"\t";
a[k]=1;
}
cout<<endl;
}
cout<<endl;
}
return 0;
}
tobetterlife
2011-01-14 · TA获得超过741个赞
知道小有建树答主
回答量:188
采纳率:0%
帮助的人:251万
展开全部
程序如下,已测试通过
#include <ctime>
#include<iostream>
using namespace std;

const array_size=25;

int getValue(int y[])
{

int m=rand()%array_size+1;
int diff=0;

while(diff==0)
{
diff=1;
for(int i=0;i<array_size;i++)
{
if (m==y[i])
{
m=rand()%array_size+1;
diff=0;
break;
}

}

if (diff==1)
return m;
}
return 0;

}

void main()
{

int x[array_size];
int m;
cout<<"请输入想生成几个矩阵:"<<endl;
cin>>m;

srand( (unsigned)time( NULL ) );
for (int n=1;n<=m;n++)
{

for(int i=0;i<array_size;i++)
x[i]=0;

for( i=0;i<array_size;i++)
x[i]=getValue(x);

for(i=0;i<array_size;i++)
{
if (i % 5==0)
{
cout<<endl;
}
cout<<x[i]<<" ";
}
cout<<endl<<"-------------------------------------";
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
address2
2011-01-14 · TA获得超过202个赞
知道答主
回答量:414
采纳率:0%
帮助的人:208万
展开全部
用一个25的数组,然后填入1-25,再用stl的random_shuffle

#include <algorithm>
#include <time.h>
using namespace std;

int main(int argc, char* argv[])
{
int a[25] = {0};
int i = 0;
for (i = 0; i < 25; i++)
{
a[i] = i;
}

srand(time(NULL));

printf("第一个\n");
random_shuffle(&a[0], &a[24]);

for (i = 0; i < 25; i++)
{
printf("%d\t", a[i]);
if ((i % 5) == 4)
{
printf("\n");
}
}

printf("第二个\n");
random_shuffle(&a[0], &a[24]);

for (i = 0; i < 25; i++)
{
printf("%d\t", a[i]);
if ((i % 5) == 4)
{
printf("\n");
}
}

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mileelove
2011-01-14 · TA获得超过454个赞
知道小有建树答主
回答量:183
采纳率:0%
帮助的人:325万
展开全部
/*
生成一个随机的5X5矩阵并输出
*/

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

/*
获得随机数
limit 限制生成的随机数在某个范围内
*/
int getRandNumber(int limit)
{
return rand()%limit;
}
/*
采用当前的时间加上一个偏移量offset作为随机数的种子;
生成一个5X5的矩阵,然后存储在数组array中
num代表数组元素的个数
*/
void matrixGenerator(int* array,int num,int offset)
{
int count = 0;
int* p = array;

srand(time(NULL)+offset);

while(count != num)
{
if(count == 0)
{
int randNum = getRandNumber(25);
p[count] = randNum;
count++;
}
else
{
while(true)
{
int randNum = getRandNumber(25);
int i;
for(i=0 ; i<count ;i++)
{
if(randNum == p[i])
{
break;
}
}
if( i == count)
{
p[count] = randNum;
break;
}
}
count++;
}

}
}

void printMatrix(int* matrix,int num)
{
int* p = matrix;
cout<<"随机生成的矩阵如下:\n";
for(int i=0 ; i<num ; i++)
{
cout <<p[i]<<"\t";
if((i+1)%5 == 0)
cout <<"\n";
}
}

int main()
{
//申请内存空间
int* matrixA = new int[25];
int* matrixB = new int[25];

//生成矩阵A
matrixGenerator(matrixA,25,1);
//输出矩阵A
printMatrix(matrixA,25);
//生成矩阵B
matrixGenerator(matrixB,25,2);
//输出矩阵B
printMatrix(matrixB,25);

//释放内存
delete [] matrixA;
delete [] matrixB;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式