C语言实验——各位数字之和排序
Time Limit: 1000MS Memory limit: 65536K
题目描述
输入
输出
示例输入
2 1 2 3 121 10 111 0
示例输出
1 2 10 111 121
提示
#include <stdio.h>
#include <stdlib.h>
#define max 10200
typedef struct
{
int *a;
int *b;
int len;
int list;
}sq;
void init(sq &l)
{
l.a=(int *)malloc(max*sizeof(int));
l.b=(int *)malloc(max*sizeof(int));
l.len=0;
l.list=max;
}
int jia(int n)
{
int m,sum=0;
while(n)
{
m=n%10;
n=n/10;
sum=sum+m;
}
return sum;
}
void creat(sq &l,int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d",&l.a[i]);
l.b[i]=jia(l.a[i]);
}
l.len=n;
}
void compare(sq &l)
{
int i,j,t;
for(i=0;i<l.len-1;i++)
{
for(j=0;j<l.len-i-1;j++)
{
if(l.b[j]>l.b[j+1])
{
t=l.a[j];
l.a[j]=l.a[j+1];
l.a[j+1]=t;
t=l.b[j];
l.b[j]=l.b[j+1];
l.b[j+1]=t;
}
}
}
}
void dis(sq &l)
{
int i=0;
for(i=0;i<l.len;i++)
{
if(i==0) printf("%d",l.a[i]);
else printf(" %d",l.a[i]);
}
printf("\n");
}
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n==0) break;
sq l;
init(l);
creat(l,n);
compare(l);
dis(l);
}
}