运行无错,但生成数列重复。
c++随机生成20个1到100的数,安从大到小排列,分别显示排列前和排列后的结果
//c++随机生成20个1到100的数,安从大到小排列,分别显示排列前和排列后的结果
#include <iostream>
using namespace std;
#include <time.h>
int main()
{
srand(time(NULL));
int a[20],i,j,t;
for(i=0;i<20;i++)
{
a[i] = rand()%100+1;
cout<<a[i]<<" ";
}
cout<<endl;
for(i=0;i<19;i++)
for(j=0;j<19-i;j++)
{
if(a[j] < a[j+1])
{
t =a[j];
a[j] = a[j+1];
a[j+1] = t;
}
for(i=0;i<20;i++)
cout<<a[i]<<" ";
}
代码呢?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, t;
char num[20];
srand(time(NULL)); // 初始化随机数种子
printf("排序前:");
for(i=0; i<20; i++) {
num[i] = rand() % 100 + 1; // 生成1~100的随机数
printf("%d", num[i]);
if(i == 19)
printf("\n");
else
printf(" ");
}
for(i=0; i<20; i++) { // 冒泡排序
for(j=0; j<20-i-1; j++) {
if(num[j] > num[j+1]) {
t = num[j];
num[j] = num[j+1];
num[j+1] = t;
}
}
}
printf("排序后:");
for(i=0; i<20; i++) {
printf("%d", num[i]);
if(i == 19)
printf("\n");
else
printf(" ");
}
return 0;
}