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

c語言五個選項隨機排列

發布時間: 2022-08-23 12:10:46

c語言編程:隨機產生,選擇法,每行5個輸出排序後結果(程序模塊化設計)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#defineN10
voidsort(inta[],intn);
intmain()
{
inti,array[N];

srand(time(0));
printf("十個10~100的隨機數 ");
for(i=0;i<N;i++)
array[i]=rand()%90+10;//[10,99]
sort(array,N);
printf(" 排序後數組的值為 ");
for(i=0;i<N;i++)
{
printf("%d",array[i]);
if((i+1)%5==0)
printf(" ");
else
printf("");
}
return0;
}

排序函數是正確的,不用動。

Ⅱ C語言設置5個隨機一位數排序

排序的部分沒啥問題,前面初始化的地方問題很多。
1、int a[] = {}; 在c里不是能定義這樣的數組的,這樣定義你的a數組長度就是0,你這後對a的任何訪問都會出錯,應該寫做
2、我不清楚你為啥要在循環里寫了兩遍隨機數,難道是想算出不重復的隨機數,但題目上也沒看到這個要求,在while (a[i] == a[j])這里,這里的 j本身是沒值的,它的值是個隨機的,所以這里是個死循環,如果只要是普通的隨機數據,初始化地方改為
int a[5]={0};
for (i=0; i<=4; i++) {
a[i] = (10*rand())/(RAND_MAX+1.0); //這里你計算隨機數怪怪的,一般來說是用rand()%10
}

Ⅲ 用c語言怎麼實現排列組合啊比如從100個數裡面任意選出5個數,即C100 5……

#include<stdio.h>
void main()
{
int n = 100;
int m = 5;
int n1 = 1, m1 = 1;
for(int i = 1; i <= m; i++)
{
n1 *= n - i + 1;
m1 *= i;
}
n1 = n1/m1;
printf("C100 5 = %d\n",n1);
}
從n中選出m個,只要改變n和m的值即可,VS2010下測試通過。

Ⅳ c語言 任意輸入5個數從小到大排列 程序怎麼寫

#include <stdio.h>
int main(int argc, char *argv[])
{
int a[5]; /*保存5個數的數組*/
int i = 0 , j = 0; /*計數器*/
int m = 0 ; /*用於標識最小的那個數*/
int n; /*用於兩個數的交換,中間值*/

/*從鍵盤接收5個數*/
for( i = 0 ; i < 5 ; i ++)
{
printf("請輸入第%d個數", i + 1);
scanf("%d",&a[i]);
}

/*排序演算法:選擇排序*/
for( i = 0 ; i < 5 ; i ++)
{
m = i ;
for( j = i +1 ; j < 5 ; j ++)
if( a[j] < a[m] )
m = j ;
n = a[i];
a[i] = a[m];
a[m] = n;
}

/*輸出*/
printf("經過排序後,這些數是:\n");
for( i = 0 ; i < 5 ;i ++)
printf("%d ",a[i]);
printf("\n");
return 0;
}

Ⅳ C語言中怎麼對數組隨機排序

可以用一個輔助數組進行隨機排序,方法如下:

1 獲取要排序的數組長度L。
2 定義整型的輔助數組,長度為L。
3 生成L個隨機整型數字,存與輔助數組中,這樣要排序數組和輔助數組就是一一對應的了。
4 對輔助數組排序,排序過程中,當改變輔助數組中數字的位置時,同步改變要隨機排序的原數組中對應的元素位置。比如為排序交換輔助數組的第三個和第五個元素,那麼就要同時交換原數組中的第三個和第五個元素。
5 當輔助數組排序完成後,原數組中的值就是隨機順序了。
6 刪除輔助數組。

Ⅵ C語言隨機生成5個浮點數,按照小數點後的數字大小進行排序

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{ int nums[20],num[20];
int i;

srand(time(NULL));
for (i=1;i<=20;i++)
{
nums[20] = rand();
printf("%d\n",nums[20]);
}
旦鼎測刮爻鈣詫水超驚getch();
return 0;
}
#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;
}
#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;
}
隨機數真的生成了嗎?為什麼我記得語句不是這樣的= =!你生成隨機數然後。每隨機一次只是一個數字所以你要循環20次存入數組。然後用數組排序來做它~我沒看到你的排序語句……就在最後加個for(int j=0;j<20;j++)
{
旦鼎測刮爻鈣詫水超驚 for(int k=1;k<20;k++)
{
if(a[j]<a[k])
{temp=a[j];a[k]=a[j];a[j]=a[k];}
}
}
這是排序的~然後輸出就可以了~
題目要求你把得到的20個數和排序後的20個數分別顯示出來。

看你的代碼只完成了一部分,剩下的就是排序了,網上有很多排序的方法

如有不明白,可以call我。

才發現,你這個還有問題,只是把第二十個數組的內容顯示出來了

應該把:nums[20] = rand();
printf("%d\n",nums[20]);
中的20都改成i,並且每個數字加上一個空格區分,然後可以按照樓上的方法排序
int sort(int *s,int *max) //最大數的請在main()中聲明,函數返回最小數
{ int min;int i=1,j;min=*s;
while(i<40)
{ if(min<=*(s+j)) if(max<=*(s+j)) max=*(s+j),j++;
else min=*(s+j),j++;
}
return min;}
我英語也不好,猜著大概意思是要你弄20個隨機數然後用選擇排序法排序,然後再顯示出來,但那個單詞list不知道是不是什麼數據結構,畢業3年了,基本沒有編過程,所以也快忘光了。以下是我在vc2008里調試的,你參考一下,至於選擇排序,你可以搜索一下,
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{ int nums[20];
int i;

srand(time(NULL));
for (i=0;i<20;i++)
{
nums[i] = rand()%20;//rand()%20意思是0到19之間的隨機數,這個你自己定
printf("%d\n",nums[i]);//nums數組最後一個應該是num[19]才對,你要顯示num[20]已經越界了
}
getchar();//getch(),我vc2008里有錯,我就用這個了
return 0;
}
float b=rand()/(RAND_MAX+1.0);
printf("%f\n",b);

Ⅶ 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;
}

運行結果: