首先,可以设置数组储存这20个数,然后为了不产生重复数字,可以让产生的数与前面已经产生的数进行比较,如果有重复,那么我们循环次数i就减1,再产生随机数,一直这么循环,那么就可以产生不重复数字。
接下来就是排序,我采用的是冒泡排序,其实也就是进行递归算法。前一个数与后一个数相互比较,如果后面的数小于前面的数,那么两个数的位置进行交换,再一直循环(还有注意循环里边的j,可以看注释)。我的大致思路是这些,具体可以参考一下代码。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>//产生随机数所需要的头文件
int main()
{
int array[20];
int i = 0, t;
srand((unsigned)time(NULL));//初始化随机种子
for (int i = 0; i < 20; i++)
{
array[i] = rand() % 20;//产生随机数,%就是取余符号
for (int j = 0; j < i; j++)
{
if (array[j] == array[i])
{
i--;
}
}
}//避免产生重复的数
for (int i = 0; i < 20; i++)
{
printf("%-03d", array[i]);
}
printf("\n");
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 20; j++)
{
if (array[i] > array[j])
{
int t = array[j];
array[j] = array[i];
array[i] = t;
}
}
}//这里是按降序排序,然后如果把for循环里边的j初始化为i就是升序
for (int i = 0; i < 20; i++)
{
printf("%-03d", array[i]);
}
return 0;
}
冒泡排序时j=0降序排序:
这个就是把j初始化为i的结果: