输入n个正整数(1<n<=10),然后按照每个数的数字和(取该数的各位数字相加)的大小,从大到小输出这n个数(如果其中有几个数的数字和相同,则这几个数按其输入时的先后顺序输出)
输入格式:
先输入n;
再输入n个正整数
输出格式:
按数字和的大小从大到小输出这n个数,数与数之间用“,”进行分隔。
10
1 2 3 4 5 11 12 13 21 22
输出样例:
5,4,13,22,3,12,21,2,11,1
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
代码参考:
#include <stdio.h>
int sum(int a);
void sort(int a[],int n);
int main (void)
{
int n;
scanf("%d",&n);
int a[n-1];
for(int i = 0;i<n;i++)
{
scanf("%d",&a[i]);
}
sort(a,n);
printf("%d",a[0]);
for(int i = 1;i<n;i++)
{
printf(",%d",a[i]);
}
return 0;
}
int sum(int a)
{
int temp = 0;
while(a != 0)
{
temp += a%10;
a=a/10;
}
return temp;
}
void sort(int a[],int n)
{
int temp;
for(int i = 1;i<n;i++)
for(int j = 0;j<n-i;j++)
{
if(sum(a[j])<sum(a[j+1]))
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}