每个数字的数字的和的比较
输入4个数,如何根据各位数字之和按从小到大排序呢?比如
输入 123 27 1121 356
输出 1121 123 27 356
请问怎样做到呢?就是根据各位数字之和
程序代码:
root@~ #cat h.c
#include <stdio.h>
struct number {
int len;
int number;
};
int main (void) {
struct number num[4];
int n,i,j,t1,t2;
int sum(int n);
//input
for(i=0;i<4;i++) {
scanf("%i",&num[i].number);
num[i].len=sum(num[i].number);
}
//sort
for(i=0;i<3;i++) {
for(j=i+1;j<4;j++) {
if(num[i].len>num[j].len) {
t1=num[i].len;
num[i].len=num[j].len;
num[j].len=t1;
t2=num[i].number;
num[i].number=num[j].number;
num[j].number=t2;
}
}
}
//print
for(i=0;i<4;i++) {
printf("%i ",num[i].number);
}
printf ("\n");
return 0;
}
int sum(int n) {
int sum=0;
do {
sum+=n%10;
n/=10;
}while(n!=0);
return sum;
}
root@~ #
root@~ #./h
123 27 1121 356
1121 123 27 356
root@~ #
