當前位置:首頁 » 編程語言 » c語言中的元素隨機排序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中的元素隨機排序

發布時間: 2022-07-24 09:17:07

c語言編程:隨機輸入五個整數,利用選擇排序法對輸入的數進行從小到大排序

你的程序邏輯有些問題,輸入,排序,輸出分開做,這樣更明確,更清晰,代碼如下:

#include<stdio.h>
#include<stdlib.h>

intmain()
{
inta[5];
inti,j,t;
intmin;

//輸入
printf("input5numbers: ");
for(i=0;i<5;i++)
scanf("%d",&a[i]);

//選擇排序
for(i=0;i<5;i++){
for(j=i+1;j<5;j++){
if(a[j]<a[i]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}

//輸出
printf("thesorrtednumbers: ");
for(i=0;i<5;i++){
printf("%d",a[i]);
}

printf(" ");

system("pause");
return0;
}

運行結果:

⑵ C語言全排列演算法如何實現隨機排列望指教 ,謝謝大家。

數量不大的情況下,就記錄下所有的排列,再隨機打亂位置。。。要是數據量大的話,就每次記錄k個數然後隨機輸出這k個數,然後繼續全排列演算法。。。

⑶ C語言數組隨機賦值排序

#include <stdio.h>
#include <stdlib.h>
int cmp(const void* a, const void* b)
{
return *(int*)a - *(int*)b;
}
int main()
{
int k, i;
int* arr;
printf("請輸入一個3位數作為一維數組的維數:");
scanf("%d", &k);
printf("生成隨機數組:\n");
arr = (int*)malloc(k * sizeof(int));
for(i = 0; i < k; ++i)
{
arr[i] = rand();
printf("%d ", arr[i]);
}
printf("\n");
printf("排序後的數組:\n");
qsort(arr, k, sizeof(int), cmp);
for(i = 0; i < k; ++i)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}

⑷ 1到25的數字,如何通過C語言實現隨機排列

首先不管是不是通過編譯。
做到隨即排列,需要用到隨機數產生函數。

#include <stdio.h>
#include <time.h>

main()
{
int i;
int cp1[10];
clrscr();

srand((unsigned)time(NULL)); /*隨機數發生器,時間作為種子 */

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

cp1[i]=rand()%100+1;/*rand產生的隨機數字*/

}

textcolor(12);
for(i=0;i<10;i++)
{
printf("\n");
cprintf("%d",cp1[i]);

}
getch();
}
以上是列印1到100的隨機數字。

你說的要隨機排列25個數字。
必須要產生25個隨機數字。處理方法有很多,可以採用讓隨機數產生為1~25的數字,但是要保證每個數字不一樣。不能有重復,這個可以通過比較來完成。然後可以一一對應輸出,或者直接輸出產生的隨機數也可以。另外一種方法是允許有重復,但是必須給每個數字1~25和產生的25個隨機數字進行一一對應編號,然後首先按照隨機數對應的輸出,如果遇到相同的隨機數,就隨機數先後順序排下來對應輸出。方法有很多,自己可以思考一下。

⑸ C語言:生成20個隨機數,然後把它們排序,最後要把排序前和排序後的數都顯示出來。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nums[21],num[21]; /*你的角標從1開始,這里的20就不夠了*/
int i,j;
int index,temp;

srand(time(NULL));
for (i=1;i<=20;i++)
{
nums[i] = rand(); /*這個應當是i*/
printf("%d\n",nums[i]);
num[i]=nums[i]; /*備份原始數據*/
}

/*選擇法,從小到大排序*/
for (i=1;i<=20;i++)
{
index=i; /*從i到20這幾個元素中最小值的序號*/
for (j=i+1;j<=20;j++)
if (nums[index]>nums[j])
index=j;

if (index!=i)/*交換i和index的元素的值*/
{
temp=nums[index];
nums[index]=nums[i];
nums[i]=temp;
}
}
for (i=1;i<=20;i++)
printf("%d\t%d\n",num[i],nums[i]);

getch();
return 0;
}

⑹ C語言 隨機數組排序

#include "stdlib.h"
#include "stdio.h"

main()
{
int i,j,k,a[10000],b[10000],n,t;
printf("please input the number of integer: ");
scanf("%d",&n);

for(i = 0; i < n; i++)
{
a[i] = random(80) + 20; /*生成數組*/
}

for(i = 0;i < n;i++) /*初始化元素數量*/
b[i] = 1;

for(i = 0; i < n; i++)
{
for(j = i + 1;j < n;j++)
{
if(a[i] == a[j])
{
b[i]++; /*計數*/
n--;

for(k = j;k < n;k++) /*去掉數組中重復值*/
a[k] = a[k + 1];

j--;
}
}
}

for(i = 1;i < n;i++) /*升序排序*/
for(j = 0;j < n - i;j++)
if(a[j] > a[j+1])
{
t = a[j];a[j] = a[j + 1];a[j + 1] = t;
t = b[j];b[j] = b[j + 1];b[j + 1] = t;
}

printf("\n Integer numbers\n");
for(i = 0;i < n;i++) /*輸出*/
{
printf(" %d %d\n",a[i],b[i]);
}
getch();
}

⑺ 用C語言如何將一個一維數組中的元素隨機排序

#include

#include

#include

intmain()

{

inti,j,n,k,t,a[100];

srand((unsigned)time(NULL));

<p

利用rand()函數產生隨機數字,rand()%n產生小於n的隨機數,然後交換。

運行的結果:

#include

#include

intmain()

{

int&nbs

利用rand()函數產生隨機數字,rand()%n產生小於n的隨機數,然後交換。

(7)c語言中的元素隨機排序擴展閱讀

C語言排序法

在一層循環找出最小數的下標,該下標用min保存,直到比較完整個數組,即可找到最小的數,然後將該數放入數組的第一位。

這樣只能排好一個元素,於是需要再嵌套一層外層循環即可排好所有元素。第二次循環就不用再比較第一個元素了,因為第一個元素已經排好,依次類推,每一次循環就會排好一個,進行n-1次循環即可排好所有元素。

⑻ C語言:隨機產生序號和成績,為6個結構體數組的元素排序。咋寫

代碼文本:

#include "stdio.h"

#include <stdlib.h>

#include "time.h"

struct A{

int S_N,score;

};

int main(int argc,char *argv[]){

A stu[10],t;

char i,j,k;

printf("隨機輸入情況... ");

srand((unsigned)time(NULL));

for(i=0;i<6;i++){

stu[i].S_N=rand();

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

if(stu[i].S_N==stu[j].S_N){

i--;

break;

}

stu[i].score=rand()%51+50;

printf("%05d %4d ",stu[i].S_N,stu[i].score);

}

printf(" 按學號由小到大排序... ");

for(i=0;i<6;i++){

for(k=i,j=k+1;j<6;j++)

if(stu[k].S_N>stu[j].S_N)

k=j;

if(i!=k)

t=stu[k],stu[k]=stu[i],stu[i]=t;

printf("%05d %4d ",stu[i].S_N,stu[i].score);

}

printf(" 按成績由大到小排序... ");

for(i=0;i<6;i++){

for(k=i,j=k+1;j<6;j++)

if(stu[k].score<stu[j].score)

k=j;

if(i!=k)

t=stu[k],stu[k]=stu[i],stu[i]=t;

printf("%05d %4d ",stu[i].S_N,stu[i].score);

}

puts(" ");

return 0;

}

⑼ 用C語言如何將一個一維數組中的元素隨機排序

利用rand()函數產生隨機數字,rand()%n產生小於n的隨機數, 然後交換。
下面是我寫的程序:
#include <stdio.h>#include <stdlib.h>int main(){ int a[1000], n, i, j, p, q, t; while(1) { printf("\n\n請輸入一維數組的維數,0結束 n = "); scanf("%d", &n); if(n==0) break; printf("請輸入一維數組中的數據:\n"); for(i=0; i<n; i++) scanf("%d", &a[i]); j=10; while(j--)//隨機交換10次 { p=rand()%n;//產生兩個隨機數 q=rand()%n; t=a[p];//交換 a[p]=a[q]; a[q]=t; } printf("\n隨機交換後數組的元素為:\n"); for(i=0; i<n; i++) printf("%d ", a[i]); }}

⑽ 在C語言中,自定義一個數組,100個元素,對其進行隨機賦值,數值范圍為0~255。要求從小到大排序

代碼如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

intmain()
{
intnumbers[100],i,j,temp;

srand(time(NULL));

//產生隨機數
for(i=0;i<100;i++){
numbers[i]=rand()%(255+1);
}

//冒泡法排序
for(i=0;i<(100-1);i++){
for(j=0;j<(100-i-1);j++){
if(numbers[j]>numbers[j+1]){
temp=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=temp;
}
}
}

//輸出
for(i=0;i<100;i++){
printf("%d",numbers[i]);
}

printf(" ");

system("pause");
return0;
}