程序代码:
////////////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
int maxa(int s[],int n)
{
if(n==0) return s[n];
int a=s[0];
int b=maxa(s+1,n-1);
return a>b?a:b;
}
//数组按大到小排序
//bug:源数组中不能有相同数据
int main ()
{
int source[10]={1,3,5,7,9,8,6,4,11,10};
int dest[10];
int i,j;
for(i=0;i<10;i++)
{
dest[i]=maxa(source,9);
for(j=0;j<10;j++) if(source[j]==dest[i]) source[j]=-1;
}
for(i=0;i<10;i++) printf("%3d",dest[i]);
printf("\n");
return 0;
}
/////////////////////////////////////////////////////////////////////////////////
#include <stdio.h>
//数组按大到小排序
//bug:源数组中不能有相同数据
struct Count
{
int c;
int count;
};
int main ()
{
int source[10]={1,3,5,7,9,8,6,4,11,10};
struct Count conter[100];
int i;
for(i=0;i<100;i++)
{
conter[i].c=i;
conter[i].count =0;
}
for(i=0;i<10;i++) conter[source[i]].count ++;
for(i=99;i>=0;i--) if(conter[i].count) printf("%3d",conter[i].c);
printf("\n");
return 0;
}
/////////////////////////////////////////////////////////////////////////////////