第 16 章 C 预处理器和 C 库(qsort() 函数)
程序员文章站
2022-07-02 20:45:44
1 /* 2 qsorter.c -- 用 qsort() 排序一组数字 3 */ 4 5 #include 6 #include //提供函数 rand() 原型 7 8 #define NUM 40 9 10 void fillarray(double ......
1 /*---------------------------------------- 2 qsorter.c -- 用 qsort() 排序一组数字 3 ----------------------------------------*/ 4 5 #include <stdio.h> 6 #include <stdlib.h> //提供函数 rand() 原型 7 8 #define NUM 40 9 10 void fillarray(double ar[], int n); 11 void showarray(const double ar[], int n); 12 int mycomp(const void *p1, const void *p2); 13 14 int main() 15 { 16 double vals[NUM]; 17 18 fillarray(vals, NUM); 19 puts("Random list:"); 20 showarray(vals, NUM); 21 22 qsort(vals, NUM, sizeof(double), mycomp); 23 puts("\nSorted list:"); 24 showarray(vals, NUM); 25 26 return 0; 27 } 28 29 void fillarray(double ar[], int n) 30 { 31 for (int index = 0; index != n; ++index) 32 ar[index] = (double)(rand()) / ((double)(rand()) + 0.1); 33 } 34 35 void showarray(const double ar[], int n) 36 { 37 int index = 0; 38 39 for (; index != n; ++index) 40 { 41 printf("%9.4f ", ar[index]); 42 if (index % 6 == 5) putchar('\n'); 43 } 44 45 if (index % 6 != 0) putchar('\n'); 46 } 47 48 int mycomp(const void *p1, const void *p2) 49 { 50 const double *a1 = (double*)p1; 51 const double *a2 = (double*)p2; 52 53 if (*a1 > *a2) 54 return 1; 55 else if (*a1 == *a2) 56 return 0; 57 else 58 return -1; 59 }
上一篇: 入门设计模式之代理模式
下一篇: 优秀的后台管理模板
推荐阅读
-
第 16 章 C 预处理器和 C 库(string.h 库中的 memcpy() 和 memmove())
-
第 16 章 C 预处理器和 C 库(可变参数:stdarg.h)
-
第 16 章 C 预处理器和 C 库(直角坐标转换极坐标)
-
第 16 章 C 预处理器和 C 库(qsort() 函数)
-
第 16 章 C 预处理器和 C 库(预定义宏)
-
第 16 章 C 预处理器和 C 库(条件编译)
-
第 16 章 C 预处理器和 C 库(可变参数:stdarg.h)
-
第 16 章 C 预处理器和 C 库(string.h 库中的 memcpy() 和 memmove())
-
第 16 章 C 预处理器和 C 库(预定义宏)
-
第 16 章 C 预处理器和 C 库(直角坐标转换极坐标)