数组随机打乱问题

opposever 2009-02-24 03:21:53
实现把一个数组的值打乱,比如a[]={1,2,3,4,5}
打乱后得到 a[]={2,4,3,5,1}或者其他随机的,我用rand产生随机数,但结果还是没有打乱,请高手指点哪里出错了!



/*定义结构体拼图*/
struct pintu
{
int x;
int y;
};

/*初始化结构体*/
struct pintu pintupt[9]={{57,57},{57,99},{57,141},{99,57},{99,99},{99,141},{141,57},{141,99},{141,141}};

/*数值交换*/
void myswap(int *a,int *b) //形参是引用类型
{ int* temp;
temp=a;
a=b;
b=temp;
}
/*打乱数组的数值*/
srand(time(NULL));//系统不同使用不同的种子
for(j=1;j<10;j++)
{

k=(int)rand()%8;
myswap(&pintupt[j].x,&pintupt[k].x);
myswap(&pintupt[j].y,&pintupt[k].y);
}




...全文
145 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
waizqfor 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 opposever 的帖子:]
实现把一个数组的值打乱,比如a[]={1,2,3,4,5}
打乱后得到 a[]={2,4,3,5,1}或者其他随机的,我用rand产生随机数,但结果还是没有打乱,请高手指点哪里出错了!



C/C++ code
/*定义结构体拼图*/
struct pintu
{
int x;
int y;
};

/*初始化结构体*/
struct pintu pintupt[9]={{57,57},{57,99},{57,141},{99,57},{99,99},{99,141},{141,57},{141,99},{141,141}};

/*数值交换*/
void myswap(int *a,int *…
[/Quote]
参数传递的时候 注意类型的选取 要不达不到 交换的目的

void myswap(int *a,int *b) //形参是引用类型
{ int temp;
temp=*a;
*a=*b;
*b=temp;
}

LZ应该看看 值传递 和 引用 指针传递的区别
  • 打赏
  • 举报
回复
void myswap(int *a,int *b) //形参是引用类型
{ int* temp;
temp=a;
a=b;
b=temp;
}
你这有问题,你传的是指针,不是引用.
然后交换的时候应该交换指针指向的对象,不应该交换指针.
太乙 2009-02-24
  • 打赏
  • 举报
回复


*数值交换*/
void myswap(int *a,int *b) //形参是引用类型
{ int* temp;
temp=a;
a=b;
b=temp;
}

myswap(&pintupt[j].x,&pintupt[k].x);
myswap(&pintupt[j].y,&pintupt[k].y);


给你画个图:

在调用myswap的时候:

a---->printupt[0].x

b---->pritupt[1].x

然后:

变成了:


b---->printupt[0].x

a---->pritupt[1].x

但是,你的pritupt[0]还是以前的,printupt[1]也没变 !

明白??







opposever 2009-02-24
  • 打赏
  • 举报
回复
谢了,原来是这样,想了两个小时楞是没想出来

基础重要啊~~~
pengzhixi 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fhtingtian 的回复:]
C/C++ code
void myswap(int *a,int *b) //形参是引用类型
{ int temp;
temp=*a;
*a=*b;
*b=temp;
}



temp应该是int型
[/Quote]

up
bfhtian 2009-02-24
  • 打赏
  • 举报
回复

void myswap(int *a,int *b) //形参是引用类型
{ int temp;
temp=*a;
*a=*b;
*b=temp;
}

temp应该是int型
diannaomingong 2009-02-24
  • 打赏
  • 举报
回复
好像引用应该是
&

/*数值交换*/
void myswap(int &a,int &b) //形参是引用类型

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧