本帖最后由 jackz007 于 2019-3-18 16:22 编辑
用 sort() 函数按从大到小排序,然后,取前 n 个即可#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void random(int array[] , const int n)
{
int c , k , m ;
bool f ;
srand(time(0)) ;
for(k = 0 ; k < n ; k ++) array[k] = 0 ;
m = 0 ;
while(m < n) {
c = rand() % n + 1 ;
f = true ;
if (m) {
for(k = 0 ; k < m ; k ++) {
if (array[k] == c) {
f = false ;
break ;
}
}
}
if (f) array[m ++] = c ;
}
}
void sort(int array[] , const int m)
{
int d , i , j ;
for(i = 1 ; i < m ; i ++) {
j = i ;
while(j > 0 && array[j - 1] < array[j]) {
d = array[j - 1] ;
array[j - 1] = array[j] ;
array[j] = d ;
j -- ;
}
}
}
main(void)
{
int a[5000] , i , n ;
random(a , 5000) ;
n = 50 ;
printf("%4d" , a[0]) ;
for(i = 1 ; i < n ; i ++) {
if(! (i % 10)) printf("\n%4d" , a[i]) ;
else printf(" , %4d" , a[i]) ;
}
printf("\n\n") ;
sort(a , 5000) ;
printf("%4d" , a[0]) ;
for(i = 1 ; i < n ; i ++) {
if(! (i % 10)) printf("\n%4d" , a[i]) ;
else printf(" , %4d" , a[i]) ;
}
printf("\n") ;
}
|