汉扬编程 编程大纲 C语言库函数之qsort()详解

C语言库函数之qsort()详解

原函数:

void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))

函数说明:void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) 数组进行排序。

参数:

base — 是指针的数组的第一个元素进行排序。nitems — 是由基部指向的数组中的元素数目。size — 是在数组中的每个元素的大小(以字节为单位)。compar — 函数比较两个元素。返回值:

函数不返回任何值。

如何使用 qsort() 函数:

#include <stdio.h>

#include <stdlib.h>

int values[] = { 78, 56, 100, 2, 25 };

int cmpfunc (const void * a, const void * b) {

return ( *(int*)a – *(int*)b );

}

int main() {

int n;

printf("Before sorting the list is: \\n");

for( n = 0 ; n < 5; n++ ) {

printf("%d ", values[n]);

}

qsort(values, 5, sizeof(int), cmpfunc);

printf(" After sorting the list is: \\n");

for( n = 0 ; n < 5; n++ ) {

printf("%d ", values[n]);

}

return(0);

}

编译和运行上面的程序,产生如下结果:

Before sorting the list is: 78 56 100 2 25

After sorting the list is: 2 25 56 78 100

C语言:编程常用10个知识点

C语言库函数之qsort()详解

1.常用的4个返回关键词

C语言库函数之qsort()详解

2.const修饰的指针const离谁最近,const就修饰谁const修饰谁,谁就不能变const char *p; //*p不能变char const *p; //*p不能变char * const p; //p不能变const char * const p; //p和*p都不能变3.string.h中的内存操作函数

C语言库函数之qsort()详解

注:如果源和目标参数有重叠,使用memmove比memcpy有保障

C语言库函数之qsort()详解

4.time.h中常用时间函数

C语言库函数之qsort()详解

//函数举例#include <stdio.h>#include <time.h>int main(int argh,const char *argv[]){ struct tm *local; time_t tm; tm = time(NULL); local = localtime(&tm); printf(\”Local time and date:%s\\n\”,asctime(local)); local = gmtime(&tm); printf(\”UTC time and date:%s\\n\”,asctime(local)); return 0;}/**程序运行结果 * Local time and date:Sat May 10 16:05:18 2013 * UTC time and date:Sat May 10 08:05:18 2013 */5.排序函数qsort()(1)函数原型

C语言库函数之qsort()详解

void qsort(void *buf,size_t num,size_t size,int (*compare)(const void *,const void *)); (2)头文件stdlib.h

(3)函数qsort()使用了QuickSort算法对buf指向的数组进行排序.QuickSort算法一般被认为是最佳的通用排序算法

(4)变元num指出数组中元素的数目

(5)size说明每个元素的大小(按字节)

(6)compare指向的函数用于比较数组的两个元素

compare函数必须是如下的形式:

int func_name(const void *arg1,const void *arg2) 其返回值必须为:

数组必须按照升序排序,最低地址处存放最低元素,如果数组中,不含关键字(key),函数返回空指针

(7)程序举例#include <stdio.h>#include <stdlib.h>int main(int argh,const char *argv[]){ //变量定义 int comp(const void *,const void *); void printEveryElemntOfArray(int count,int *array); int i; int num[12] = {14, 5, 9, 7, 6, 0, 91, 4, 1, 3, 2, 8}; //排序前 printf(\”Original array:\”); printEveryElemntOfArray(12,num); //排序操作 qsort(num,12,sizeof(int),comp); //排序后 printf(\”Sorted array:\”); printEveryElemntOfArray(12,num); return 0;}int comp(const void *num1,const void *num2){ return *(int *)num1 – *(int *)num2;}void printEveryElemntOfArray(int count,int *array){ for (i = 0; i < count; i++) { printf(\”%d\”,array[i]); } printf(\”\\n\”);}6.四舍五入函数(math.h)

//程序举例#include <stdio.h>#include <math.h>int main(int argh,const char *argv[]){ double number = 123.54; double down = 0; double up = 0; down = floor(number); up = ceil(number); printf(\”number = %5.2lf\\n\”,number); printf(\”down = %5.2lf\\n\”,down); printf(\”up = %5.2lf\\n\”,up); return 0;}/**运行结果 *number = 123.54 *down = 123.00 *up = 124.00 */7.计算x的y次幂double pow(double x,double y)8.延时函数unsigned sleep(signed seconds) //头文件unistd.h9.由一个日期,怎么知道是星期几?①mktime()

②localtime()

③或用如下代码

// 0 = sundayint dayOfWeek(int year,int month,int d){ static int t[] = {0,3,2,5,0,3,5,1,4,6,2,4}; y -= m < 3; return (y + y / 4 – y / 100 + y / 400 + t[m – 1] + d) % 7;}10.怎样显示一个百分比或转动的短棒的进展表示器

①输出字符\\r通常可以复写当前行

②字符\\b代表退格,通常会使光标左移一格.记住要用fflush()

如有侵权,请联系删除!

学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习C语言或者有兴趣学习C语言的伙伴可以私信回复小编“学习”领取全套免费C语言学习资料、视频

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/mianfei/6332.html

C语言库函数之fwrite()详解

经常用到的的排序(快速排序和归并排序)简单的计算机算法学习

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部