c语言程序设计实例

来源:百度知道 编辑:UC知道 时间:2024/07/04 21:42:16
编写函数void sortsum(int a[],int i),其功能是根据数组中每个元素
的各位数字之和,按从大往小次序,对a数组中的整数进行排序,然后编写
main函数调用sortsum函数,并输出排序后的结果。

例如,测试数据为 256,18,37,1024,100,29,51,991,32,3,
输出结果为 991,256,29,37,18,1024, 51,32,3, 100

#include <stdio.h>
#define N 100
void SortSum(int a[],int i);
void main()
{
int a[N],i,n;
printf("请输入数组个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
SortSum(a,n);
}
void SortSum(int a[],int i)
{
int j,k,m,b[N],n,s,tmp;
for(j=0;j<i;j++)
{
n=a[j];
s=0;
while(n!=0)
{
s+=n%10;
n/=10;
}
b[j]=s;
}
printf("转换后数组如下:\n");
for(j=0;j<i;j++)
{
m=j;
for(k=j+1;k<i;k++)
{
if(b[k]>b[m])
m=k;
}
if(m!=j)
{
tmp=b[j];
b[j]=b[m];
b[m]=tmp;

tmp=a[j];
a[j]=a[m];
a[m]=tmp;
}
}
for(j=0;j<i;j++)
printf("%d ",a[j]);
printf("\n");
}
------------------------------------
呵呵,我用的是选择法排