⑴ 一个c语言的小问题,把一个数组随机打乱的代码,代码如下

因为i=9的时候,执行_rand(i,9);时,在函数_rand里,a为9,b为9,由于i=rand()%b; 所以i最大为8,所以在 if(i<a) goto Y; 这个地方会永远跳专回到Y。就这么死循环属了。

⑵ c语言如何随机打乱数组

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main()
{
int a[] = {3,5,7,1,4};
int n=5;
int i,j,T=1000,tmp;
srand(unsigned(time(NULL)));
while(T--)
{
i=rand()%n;
j=rand()%n;
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
for(i=0;i<n;i++)printf("%d ",a[i]);
puts("");
return 0;
}

⑶ C语言将汉字打乱

扔到数组里. 然后随机取数组的下标值. 然后排序.然后输出新的字符串.

⑷ 用C语言随机打乱一个数列

//稍改动一下
structPOKER
{
intnum;//A:1,J:11,Q:12,K:13小王:14大王:15
intcolor;//黑1,红2,梅3,方4
}s[54];
.....
voidshift()
{
inti,num,color;
memset(s,0,sizeof(structPOKER)*54);
intcount=0;
while(count<54)
{
num=rand()%15+1;
color=rand()%4+1;
intflag_skip=0;
for(i=0;i<54;i++)
{
if((s[i].num==num&&s[i].color==color)||(s[i].num==14&&num==14)||(s[i].num==15&&num==15))
{
flag_skip=1;
break;
}
}
if(flag_skip==1)
{
continue;
}
while(1)
{
i=rand()%54;
if(s[i].num==0)
{
s[i].num=num;
s[i].color=color;
count++;
break;
}
else
{
continue;
}
}
}
}

⑸ C语言有什么办法把一定范围里的数子打乱顺序

1,你先建或者产生<从小到大排的>的数放一个数组中.原牌x个.
2,产生0到x-1的随机值x个,不要重复.用来做原数组的下标取对应的值,再放入新数组中,
3,输出新组.洗的新牌.

⑹ 怎样用C语言打乱一个已排序的数组

//使用随机数交换的形式打乱数组。随机生成一个随机数组下表,然后进行交换,达到打乱的目的。
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<time.h>
usingnamespacestd;
intmain()
{
inta[10];
for(inti=0;i<10;i++)
{
a[i]=i+1;
}
printf("顺序输出:");
for(inti=0;i<10;i++)
{
printf("%d",a[i]);
}
srand((int)time(NULL));
for(inti=0;i<10;i++)
{
swap(a[i],a[rand()%10]);
}
printf(" 打乱顺序后:");
for(inti=0;i<10;i++)
{
printf("%d",a[i]);
}
//system("pause");
}

⑺ 有一个c语言程序题,求怎么把这四个字打乱并做解析

你这个代码好多地方看起来很奇怪。
什么把4个字打乱是什么意思

⑻ c语言编写一个选择题,怎么打乱选项,下面是个例子,帮忙改一下,

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
structwenti{
charwen[100];
charA[50];
charB[50];
charC[50];
charD[50];
intdan;

}list[]={
{"继承者中男女主角第一次相遇是在哪个国家?","韩国","美国","英国","法国",1}
};

char*xuaxiang(inti){
switch(i){
case0:
returnlist[0].A;
break;
case1:
returnlist[0].B;
break;
case2:
returnlist[0].C;
break;
case3:
returnlist[0].D;
break;
default:
return"";
break;
}
}intmain()
{
intdat[4];
inti,k,j;
charxz,danN;

do{


printf("%s ",list[0].wen);

srand(time(0));
for(i=0;i<4;i++){

do{
k=1;
dat[i]=rand()%4;
for(j=0;j<i;++j){
if(dat[j]==dat[i]){
k=0;
break;
}
}
}while(k==0);

if(dat[i]==list[0].dan){
danN='A'+i;
}

printf("%c.%s ",'A'+i,xuaxiang(dat[i]));
}
printf("请选择:");
scanf("%c",&xz);
if(xz==danN){
printf("恭喜你,答对了,厉害! ");
}else{
printf("答错了,没关系,再接再厉! ");
}
scanf("%c",&xz);}while(1);


return0.0;
}

⑼ c语言 输入一串字符 然后打乱顺序随机输出

两种方法.大致就是这样了.你也可以自己想.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void func1(char *a,int len)
{
int t;
srand(time(NULL));
for(len=strlen(a);len>0;len--)
{
t=rand()%len;
printf("%c",a[t]);
a[t]=0;
strcat(a,a+t+1);
}
printf("\n");
}
void func2(char *a,int len)
{
char *b=(char *)calloc(sizeof(char),len);
int i,t;
srand(time(NULL));
for(i=len;i>0;)
{
t=rand()%len;
if(b[t]==0)
{
b[t]=-1;
printf("%c",a[t]);
i--;
}
}
printf("\n");
free(b);
}
main()
{
char a[100];
int len;
printf("in: ");
gets(a);
len=strlen(a);
func2(a,len);
func1(a,len);
}

⑽ 用C语言怎样打乱一组数据

#pragma once
#include <iostream>
#include <Windows.h>

using namespace std;

#pragma comment( lib, "winmm.lib" )

int main()
{
//定义一个数组(自己随便定义,这里以10个大小的数组为例)
const int iSum = 10;
int iAry[iSum] = {3,7,5,87,23,1,65,8,51,64};

//定义一个数组用来保存打乱顺序后的数
int iDistrubAry[iSum] = {0};

//播随机种子(以便每次随机的值有相等的机会)
srand(timeGetTime());

//每次随机的不相同的数存到这个数组里(以便下次随机时判断随机的数是否已经随机过了)
int iRandomData[iSum] = {0};
//将iRandomData元数都赋初值为-1,表示没有产生一个随机数
for ( int i=0; i<iSum; i++ )
{
iRandomData[i] = -1;
}

//共产生不同的随机的个数
int iRandomSum = 0;

//打乱这个数组
for ( int i=0; i<iSum; i++ )
{
//随机一个数
int iRandom = rand()%iSum;

//判断iRandomSum是否为0,是0的话表示没有随机过任何数,就不用查询是否随机到这个数了
if ( iRandomSum != 0 )
{
//用来判断是否连续随机(当随机的数与之前随机的有重复时就连续随机)
for ( int i=0; i<iRandomSum; i++ )
{
if ( iRandom == iRandomData[i] )
{
iRandom = rand()%iSum;
//i要赋值为-1,表示重新查询是否与以前随机的数重复
i = -1;
}
}
}

//将产生的随机数添加到RandomData里面
iRandomData[iRandomSum] = iRandom;

//将随机的数作为原来数组的索引,取出原来数组此索引的值保存在打乱后的数组中
iDistrubAry[iRandomSum] = iAry[iRandom];

//将iRandom加1,表明已经打乱好了一个数
iRandomSum++;
}

//显示未打乱的数组
cout<<"未打乱的数组:";
for ( int i=0; i<iSum; i++ )
{
cout<<iAry[i]<<" ";
}
cout<<endl;

//显示打乱后的数组
cout<<"打乱后的数组:";
for ( int i=0; i<iSum; i++ )
{
cout<<iDistrubAry[i]<<" ";
}

cout<<endl;

system( "pause" );
}