#include <stdio.h> #include <stdlib.h> #include <time.h> /* * 问题描述 * 用rand生成10个随机数置与数组,对该数组从大到小排序 * 输入一个任意数,插入数组 */ #define SIZE 15 //数组大小 #define INITSIZE 10 //随机生成数字的个数 static int compar_reverse(const void *val1, const void *val2); int main(void) { int array[SIZE] = {0}; int *q; int i; int input; //随机生成INITSIZE个数 srand(time(NULL)); for(i = 0; i < INITSIZE; ++i) array[i] = rand()%1000; //对array快速排序(由大到小) qsort(array, INITSIZE, sizeof(int), compar_reverse); scanf("%d",&input); //找位置 for(i = 0; array[i] > input && i < INITSIZE; ++i) ; //移动 for(q = array + INITSIZE -1; q >= array + i; --q) *(q+1) = *q; //插入 *(q + 1) = input; //输出结果 for(i = 0; i < INITSIZE + 1; ++i) printf("%d%c", array[i], i == INITSIZE -1 ? '/n' : ' '); exit(0); } static int compar_reverse(const void *val1, const void *val2) { return *(int*)val2 - *(int*)val1; }