❶ 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語言如何將一個一維數組中的元素隨機排序
#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的隨機數,然後交換。
(2)c語言18個固定數字隨機排序擴展閱讀
C語言排序法
在一層循環找出最小數的下標,該下標用min保存,直到比較完整個數組,即可找到最小的數,然後將該數放入數組的第一位。
這樣只能排好一個元素,於是需要再嵌套一層外層循環即可排好所有元素。第二次循環就不用再比較第一個元素了,因為第一個元素已經排好,依次類推,每一次循環就會排好一個,進行n-1次循環即可排好所有元素。
❸ c語言隨機產生20個整數然後排序 順序 越簡單越好(新新手)
#include<stdio.h>
#include<stdlib.h>
intmain(void){
inti,j,n,a[20];
//限定整數范圍為0~k。如果不需要范圍,可以去掉%k
intk=100;
for(i=0;i<20;i++)
a[i]=rand()%k;
//排序a[20],從小到大
for(i=0;i<19;i++){
for(j=i+1;j<20;j++){
if(a[i]>a[j]){
n=a[i];
a[i]=a[j];
a[j]=n;
}
}
}
//輸出a[20]
for(i=0;i<20;i++)
printf("%d",a[i]);
return0;
}
❹ 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語言編寫一個程序把一列隨機輸入的數字從小到大排列
//起泡排序,小->大,,隨機產生k個數
#include"stdio.h"
#include"time.h"
#include"stdlib.h"
void main()
{int str[200],str2;
int i,j,k;
srand(time(NULL));
k=rand()%100+10;
printf("input three numbers:\n");
for(i=0;i<k;i++)
str[i]=rand()%100;
for(j=0;j<k;j++)//比較5趟
for(i=0;i<k-j;i++)//第j趟就比較5-j次,共比較4+3+2+1=10次
if(str[i]>str[i+1])
{str2=str[i];str[i]=str[i+1];str[i+1]=str2;}
//輸出
for(i=1;i<k;i++)
printf("%3d ",str[i]);
printf("\n");
}
❼ C語言中怎麼對數組隨機排序
可以用一個輔助數組進行隨機排序,方法如下:
1 獲取要排序的數組長度L。
2 定義整型的輔助數組,長度為L。
3 生成L個隨機整型數字,存與輔助數組中,這樣要排序數組和輔助數組就是一一對應的了。
4 對輔助數組排序,排序過程中,當改變輔助數組中數字的位置時,同步改變要隨機排序的原數組中對應的元素位置。比如為排序交換輔助數組的第三個和第五個元素,那麼就要同時交換原數組中的第三個和第五個元素。
5 當輔助數組排序完成後,原數組中的值就是隨機順序了。
6 刪除輔助數組。