一个C语言的小问题,把一个数组随机打乱的代码,代码如下
#include"stdio.h"#include"stdlib.h"#include"time.h"intswap(inta,intb)//调换两个数{inttemp;...
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
int swap(int a,int b)//调换两个数
{
int temp;
temp=a;
a=b;
b=temp;
}
int _rand(int a,int b)//产生一个随机数(有范围约束)
{
int i;
srand((int)time(NULL));
Y:i=rand()%b;
if(i<a)
goto Y;
return i;
}
int main(){
int i;
int a[10]={1,2,3,4,5,6,7,8,9,10};
printf("转变前:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
for(i=0;i<10;i++)
{
int j=_rand(i,9);
swap(a[i],a[j]);
}
printf("转变后:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;}代码调试的时候没错误,但是只能显示转换前的数组,转换后的数组无法显示,我知道有其他简单的方法实现数组的打乱,但是我想知道上面的代码哪里出现了错误,不知哪位前辈能解答一下,实在没有财富值了。。 展开
#include "stdlib.h"
#include "time.h"
int swap(int a,int b)//调换两个数
{
int temp;
temp=a;
a=b;
b=temp;
}
int _rand(int a,int b)//产生一个随机数(有范围约束)
{
int i;
srand((int)time(NULL));
Y:i=rand()%b;
if(i<a)
goto Y;
return i;
}
int main(){
int i;
int a[10]={1,2,3,4,5,6,7,8,9,10};
printf("转变前:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
for(i=0;i<10;i++)
{
int j=_rand(i,9);
swap(a[i],a[j]);
}
printf("转变后:");
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;}代码调试的时候没错误,但是只能显示转换前的数组,转换后的数组无法显示,我知道有其他简单的方法实现数组的打乱,但是我想知道上面的代码哪里出现了错误,不知哪位前辈能解答一下,实在没有财富值了。。 展开
展开全部
具体没看出来,
不过我想,一定是_rand()这个函数里goto用
法不当。
不了解goto 的实际用法,所以无法给你修改。
一般编程下,goto基本已经放弃不用了。
你仔细看下goto部分的问题吧
不过我想,一定是_rand()这个函数里goto用
法不当。
不了解goto 的实际用法,所以无法给你修改。
一般编程下,goto基本已经放弃不用了。
你仔细看下goto部分的问题吧
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询