8_3.cpp
资源名称:c.rar [点击查看]
上传用户:puke2000
上传日期:2022-07-25
资源大小:912k
文件大小:2k
源码类别:

C#编程

开发平台:

Visual C++

  1. //8_3
  2. #include <iostream.h>
  3. #include <stdlib.h>
  4. int CompIntBitSum(const void* a, const void* b);
  5. int CompFloat(const void* a, const void* b);
  6. int CompStrLen(const void* a, const void* b);
  7. void main()
  8. {
  9.   int a[]={12,32,42,51,8,16,21,19,9};
  10.   int anum=sizeof(a)/sizeof(*a);
  11.   cout <<"n排序前:n";
  12.   for(int i=0; i<anum; i++)
  13.     cout <<a[i] <<" ";
  14.   cout <<endl;
  15.   qsort(a,anum,sizeof(*a), CompIntBitSum);
  16.   cout <<"排序后:n";
  17.   for(int i=0; i<anum; i++)
  18.     cout <<a[i] <<" ";
  19.   cout <<endl;
  20.   float f[]={32.1,456.87,332.67,442.0,98.12,
  21.              451.79,340.12,54.55,99.87,72.5};
  22.   int fnum=sizeof(f)/sizeof(*f);
  23.   cout <<"n排序前:n";
  24.   for(int i=0; i<fnum; i++)
  25.     cout <<f[i] <<" ";
  26.   cout <<endl;
  27.   qsort(f,fnum,sizeof(*f), CompFloat);
  28.   cout <<"排序后:n";
  29.   for(int i=0; i<fnum; i++)
  30.     cout <<f[i] <<" ";
  31.   cout <<endl;
  32.   char* str[]={"enter","number","size","begin","of","cat",
  33.                "case","program","certain","a"};
  34.   int strnum=sizeof(str)/sizeof(*str);
  35.   cout <<"n排序前:n";
  36.   for(int i=0; i<strnum; i++)
  37.     cout <<str[i] <<" ";
  38.   cout <<endl;
  39.   qsort(str,strnum,sizeof(*str), CompStrLen);
  40.   cout <<"排序后:n";
  41.   for(int i=0; i<strnum; i++)
  42.     cout <<str[i] <<" ";
  43.   cout <<endl;
  44. }
  45. int CompIntBitSum(const void* a, const void* b)
  46. {
  47.   int ia=*(int*)a, ib=*(int*)b;
  48.   int suma=0,sumb=0;
  49.   while(ia){
  50.     suma+=ia%10;
  51.     ia/=10;
  52.   }
  53.   while(ib){
  54.     sumb+=ib%10;
  55.     ib/=10;
  56.   }
  57.   return suma - sumb;
  58. }
  59. int CompFloat(const void* a, const void* b)
  60. {
  61.   return *(float*)a - *(float*)b;
  62. }
  63. int CompStrLen(const void* a, const void* b)
  64. {
  65.   if(strlen(*(char**)a)==strlen(*(char**)b))
  66.     return strcmp(*(char**)a, *(char**)b);
  67.   return strlen(*(char**)a) - strlen(*(char**)b);
  68. }