當前位置:首頁 » 編程語言 » c語言怎麼亂序輸出數組
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言怎麼亂序輸出數組

發布時間: 2022-08-31 04:56:45

A. c語言如何隨機打亂數組

int a[] = {3,5,7,1,4};
// 本程序考慮時間復雜度最小情況的亂序演算法,O(t)=len-1
// 演算法模仿彩票搖號,從全集中先取一個為第一位,再在剩餘集合中取出一個為第2位,...
// 直至最後一個,只是考慮空間利用,已排序集合利用全集的空間。
int len=sizeof(a); // 全集元素數量
srand(unsigned(time(NULL))); // 搖號機准備
for(int i=len;i>1;i--) // 從全集開始搖號,直至只剩一個,已排在最後
{
int cur=len-i+(rand()%i); // 在剩餘集合中搖號
int tmp=a[len-i]; // 當前序號位置挪空
a[len-i]=a[cur]; // 搖出的綵球放入當前序號
a[lcur]=tmp; // 放好剩餘的綵球
}

B. c語言,逆序輸出一組數,要求用到數組

可以定義一個字元數組,然後由用戶輸入字元,再從數組的後面向前一一輸出字元,即可實現題目要求。下面在手機上用易歷知食軟體里的微C程序設計來編寫一個示常式序,手機上的代碼如下圖:

#include<stdio.h>
intmain(intarg,char*args[])
{
charbuff[100];
inti,len;
printf("請輸入一串字元 ");
gets(buff);
printf("原字元是 %s ",buff);
printf("逆序後的字元是 ");
len=strlen(buff);
for(i=len-1;i>=0;i--)
{
printf("%c",buff[i]);
}
return0;
}

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

D. 用C語言對數組內元素亂序排列並輸出

方法1:比較笨的辦法是先排好。再在裡面找。看是原來的第幾個。 (代碼我就不寫了。)
方法2:有一個很快的方法,就是用快速排序排,
如果你深入的了解了快排,那麼這個就很簡單了。而且效率很高。
我給你寫代碼。

E. 用c語言初始化一個10個元素的數組,賦值為1-10,亂序後,輸出; //(兩種方法)

省去最後列印的printf循環部分。

①在插入的時候隨機。
int a[10] = {0};
int num, i;

srand(time(NULL));
for (num = 1; num < 10; i++)
{
i = rand()% 10;
while (a[i] == 0)
i = rand()%10;
a[i] = num;
}

②先按1-10插入,然後打亂
int a[10];
int temp, pos;

srand(time(NULL));
for(i = 0; i< 10; i++)
a[i] = i + 1;

for (i = 0; i < 10; i++)
{
pos = rand()%10;
temp = a[i];
a[i] = a[pos];
a[pos] = temp;
}

F. 怎樣用C語言打亂一個已排序的數組

如果要求不是很嚴格的話,感覺可以隨機交換N次,每次交換,隨機生成兩個交換的元素的下標。

如果要求嚴格隨機的話,感覺可以依次從數組里無放回的取數,並按照取數的先後順序放入一個新的數組,然後新的數組就是打亂順序之後的數組了。

G. 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;
}

H. C語言,讀取txt文件,每行內容不變,亂序輸出每行,思路

1)申請一個足夠大的指向字元的指針數組,並把每一行字元串的首地址保存到這個數組中,假設有N行;
2)產生一個[0,N)的隨機整數x,輸出第x行的字元串。
3)將指針數組中第x個元素與第N-1個元素交換位置。
4)N=N-1,如果N>0則轉2),否則結束。

I. c語言 輸入一串字元 然後打亂順序隨機輸出

你可以將輸入的字元串放到數組中,然後通過隨機函數生成數組下標(注意限制下標越界),然後輸出就可以啦

J. C語言 把一個數組逆序輸出

從最後一個元素,逆向遍歷到數組的0元素,逐一輸出即可實現。

1、創建數組;

2、輸入值;

3、逆序遍歷輸出數組。

代碼:intmain(){ inta[10]; inti;

for(i=0;i<10;i++)

scanf("%d",a+i);

for(i=9;i>=0;i--)

printf("%d",a[i]);}

(10)c語言怎麼亂序輸出數組擴展閱讀:

將一個數組逆序輸出。

1、程序分析:用第一個與最後一個交換。

2、程序源代碼:

#define N 5

main()

{ int a[N]={9,6,5,4,1},i,temp;

printf(" original array: ");

for(i=0;i printf("%4d",a[i]);

for(i=0;i {temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

printf(" sorted array: ");

for(i=0;i printf("%4d",a[i]);}