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