问题:随机生成10个1-50的正整数,并输出原来的顺序与从大到小的新排列
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int a[10],temp,j;
srand(time(NULL));
for(i=0;i<10;i++)
{
a[i]=rand()%50+1;
}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
printf("\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}
注意的点:
- srand(time(NULL)) 此语句不要重复播种,以免数据重复
- a[i]=rand()%50+1; 此语句直接赋值于数组中,不能
n=rand()%50+1;
a[i]=n;
原因未知 但会造成数据混乱 - 关于排序(由大到小)
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}