c語言隨機產生50個整數
Ⅰ c語言編程:使用隨機函數rand()產生50個10~99的互不相同的隨機整數
可以先給89 個數組賦值10 至99然後第一次隨機1至89然後取出隨機那個數的下標的值,把最後一個賦值給你剛才隨機的數字下標,第二次從1至88隨機一個數字,依次類推,循環五十次可以得到五十個不相同的。因為手機,沒辦法給出代碼,敬請諒解
Ⅱ c語言生成50個隨機數,對隨機數進行快速排序。
樓下的幾個回答我怎麼看也不是快速排序,所以我做了一個用快速排序法排序的程序
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define LEN 50
//快速排序(升)
void quicksup(int *arr,int low,int high)
{
int temp,l,r;
if(low<high)
{
l=low;
r=high;
temp=arr[low];
while(low<high)
{
while(low<high&&arr[high]>=temp)
high--;
if(low<high)
arr[low]=arr[high];
while(low<high&&arr[low]<=temp)
low++;
if(low<high)
arr[high]=arr[low];
}
arr[low]=temp;
quicksup(arr,l,low-1);
quicksup(arr,low+1,r);
}
}
//快速排序(降)
void quicksdown(int *arr,int low,int high)
{
int temp,l,r;
if(low<high)
{
l=low;
r=high;
temp=arr[low];
while(low<high)
{
while(low<high&&arr[high]<=temp)
high--;
if(high==LEN)
high--;
if(low<high)
arr[low]=arr[high];
while(low<high&&arr[low]>=temp)
low++;
if(low<high)
arr[high]=arr[low];
}
arr[low]=temp;
quicksdown(arr,l,low-1);
quicksdown(arr,low+1,r);
}
}
//初始化數組
void init(int *arr,int len)
{
int i;
for(i=0;i<len;i++)
{
arr[i]=rand()%1000;
}
}
//列印數組元素
void print(int *arr,int len)
{
int i;
printf(" ");
for(i=0;i<len;i++)
printf("%4d ",arr[i]);
printf(" ");
}
int main()
{
int arr[LEN];
srand((unsigned)time(NULL));
init(arr,LEN);
printf("排序前:");
print(arr,LEN);
quicksup(arr,0,LEN);
printf("排序後(升):");
print(arr,LEN);
quicksdown(arr,0,LEN);
printf("排序後(降):");
print(arr,LEN);
return 0;
}
Ⅲ 用c語言隨機產生50個100到900之間的整數找出其中的素數並將這些素數按從小到大的順序排列
#include<stdio.h>
#include<math.h>
intnum1[800];//定義隨機抽取50個數據數組
intnum2[100];//定義素數素組
randomx(intm,intmin,intmax)//產生m個不重復隨機數
{
inti,w,t;
inttotal;
srand(time(0));//設定隨機種子,防止重復數據出現
for(i=min;i<max;i++)
{
num1[i]=i+1;
}
for(i=0;i<m;i++)
{
num1[i]=rand()%(max-min)+min;//隨機函數rand引用
}
printf("隨機從100到900中選取以下50個數值:");
for(i=0;i<m;i++)
{
printf("%d",num1[i]);
}
printf(" ");
}
prime()//判斷是否為素數,並且進行排序
{
inti,k,t,n=0;
inta,b,c;
for(i=0;i<50;i++)//判斷是否為素數
{
k=sqrt(num1[i]);
for(t=2;t<k;t++)
{
if(k%t==0)
{
break;
}
}
if(t>=k)
{
num2[n]=num1[i];
printf("%d",num2[n]);
n++;
}
}
for(a=0;a<n;a++)//從大到小排列數據
{
for(b=a+1;b<n;b++)
{
if(num2[a]<num2[b])
{
c=num2[a];
num2[a]=num2[b];
num2[b]=c;
}
}
}
printf(" ");
printf("其中素數按從大到小的數值排列:");
for(i=0;i<n;i++)
{
printf("%d",num2[i]);
}
}
main()
{
randomx(50,100,900);
prime();
}
問題原因分析:
可能沒有將判斷出來的素數數值進行保存,起碼要定義2個數組分別保存隨機產生的出來的50個數據,和其中素數的數據,上面是我給出的代碼。
運行結果圖:
Ⅳ 如何在C語言中產生50個100到200間的隨機整數啊謝謝大家,您的回答對我真的很有幫助!
產生有重復的50數字
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int i, j;
int array[50];
for (i=0; i<50; i++)
{
array[i] = rand() % 100 + 100;
}
for (i=0; i<50; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
產生不重復的50位數字
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int i, j;
int array[50];
for (i=0; i<50; i++)
{
AA:
array[i] = rand() % 100 + 100;
for (j=0; j<i; j++)
{
if (array[i] == array[j])
{
goto AA;
}
}
}
for (i=0; i<50; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
Ⅳ 用c語言編寫一個函數實現隨機產生50個10到100之間的互不相等的整數,按從小到大的順序排列後存入二進制文
1使用floor函數。floor(x)返回的是小於或等於x的最大整數。如:
floor(2.5)
=
2
floor(-2.5)
=
-3
2使用ceil函數。ceil(x)返回的是大於x的最小整數。如:
ceil(2.5)
=
3
ceil(-2.5)
=
-2
floor()是向負無窮大舍入,floor(-2.5)
=
-3;ceil()是向正無窮大舍入,ceil(-2.5)
=
-2。
Ⅵ 編一個c語言 產生50個100到200之間的隨機整數,找出其中的常數,並將其按升序排
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
intmain()
{
inti,j,k,RAND[50];
srand(time(0));//設計隨機數種子
for(i=0;i<50;i++)//產生隨機數
{
RAND[i]=rand()%200;
if(RAND[i]<=100)
{
RAND[i]+=100;
}
}
for(i=0;i<50;i++)//排序
{
for(j=i;j<50;j++)
{
if(RAND[i]>=RAND[j])//從小到大
{
k=RAND[i];
RAND[i]=RAND[j];
RAND[j]=k;
}
}
}
for(i=0;i<50;i++)//輸出
{
printf("%d ",RAND[i]);
}
return0;
}
Ⅶ C語言 編程 隨機產生50個整數(15~500)之間,並降序排列
#defineN50
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
inta[N],i,j,tmp;
floatavg;
srand(time(0));
for(inti=0;i<N;i++)
a[i]=rand()%(500-15)+15;
//降序排列
for(i=0;i<N-1;i++)for(j=i+1;j<N;j++)
if(a[i]<a[j]){
tmp=a[i];a[i]=a[j];a[j]=tmp;
}
//輸出數組
for(i=0;i<N;i++){
printf("%4d",a[i]);
if(i%5==5-1)printf(" ");//5個數據一行
}
}
Ⅷ c語言,編程產生50個100~200之間的隨機整數,找出其中的素數,並將其按升序排序
#include"stdio.h"
#include<stdlib.h>
#include"time.h"
voidoutprime(inta[]){
intx[50],i,j,k,t;
for(i=0;i<50;i++){//找素數並存入x
printf("%4d",a[i]);
if((a[i]&1)==0)
continue;
for(t=0,k=3;k*k<=a[i];k+=2)
if(a[i]%k==0)
break;
if(k*k>a[i])
x[t++]=a[i];
}
printf(" ");
for(i=0;i<t;i++){//素數排序並輸出
for(k=i,j=k+1;j<t;j++)
if(x[k]>x[j])
k=j;
if(k-i)
j=x[k],x[k]=x[i],x[i]=j;
printf("%4d",x[i]);
}
printf(t?" ":"No... ");
}
intmain(intargv,char*argc[]){
inti,a[50];
printf("50randomnumbersfrom100to200 ");
srand((unsigned)time(NULL));//下偽隨機種子
for(i=0;i<50;i++)
a[i]=rand()%100+100;
outprime(a);
return0;
}
運行結果:
Ⅸ c語言 用循環語句隨機產生50個數 輸出
//限定隨機數為整數,且范圍為0~k,其中k可以自己修改。
#include
#include
int main(void){
int i;
int k=10;
for(i=0;i<50;i++)
printf("%d ",rand()%k);
return 0;
}
//如果限定為小數輸出,保留1位小數,范圍為0~1。其中1可以自己修改。
#include
#include
int main(void){
int i;
int k=10;
for(i=0;i<50;i++)
printf("%.1f ",rand()%k/(k*1.0));
return 0;
}
//如果限定為小數輸出,保留1位小數,范圍為0~k。其中k和小數位數1可以修改。
#include
#include
int main(void){
int i;
int k=10;
for(i=0;i<50;i++)
printf("%.1f ",rand()%k/1.0);
return 0;
}