高手帮帮忙啊.请用c++做下题:特急啊

来源:百度知道 编辑:UC知道 时间:2024/05/17 09:21:42
编程。使用标准库函数qsort(),对各类数组进行排序。函数原型为:
void qsort((void*)a,int size,int width,int(*fcmp)(const void*,const void*));
(1) 对整数数组排序。要求按每个元素各位数字元之和,升序排列。
(12,32,42,51,8,16,51,21,19,9)
(2) 对浮点数组排序。升序排列。
(32.1,456.87,332.67,442.0,98.12,451.79,340.12,54.55,99.87,72.5)
(3) 对字符串数组排序。升序排列,先按串长度排,若长度相等,再比较字符串的值。
(enter,number,size,begin,of,cat,cap,program,certain,a)
高手帮帮啊,我想了很久,不知咋调用此函数.谢啊谢谢谢谢谢谢谢谢谢谢谢谢........
高手帮忙啊.第三问还是做不来啊.写具体点,有针对性啊,越细越好啊.谢谢谢谢谢谢谢谢谢.......

c函数qsort()和bsearch()的用法2006年08月14日 星期一 15:09qsort 的函数原型是void __cdecl qsort ( void *base, size_t num, size_t width, int (__cdecl *comp)(const void *, const void* ) )

其中base是排序的一个集合数组,num是这个数组元素的个数,width是一个元素的大小,comp是一个比较函数。

比如:对一个长为1000的数组进行排序时,int a[1000]; 那么base应为a,num应为 1000,width应为 sizeof(int),comp函数随自己的命名。

qsort(a,1000,sizeof(int ),comp);

其中comp函数应写为:

int comp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}

是对一个二维数组的进行排序:

int a[1000][2]; 其中按照a[i][0]的大小进行一个整体的排序,其中a[i][1]必须和a[i][0]一起移动交换。

qsort(a,1000,sizeof(int)*2,comp);

int comp(const void *a,const void *b)
{
return ((int *)a)[0]-((int *)b)[0];
}

对字符串进行一个排序:

char a[1000][20];

qsort(a,1000,sizeof(char)*20,comp);

int comp(const void *a,const void *b
{
return strcmp((char *)a,(char *)b);
}

对一个结构体进行排序:<