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" );
}