华为机试—根据各个位的和排序

来源:互联网 发布:淘宝围巾专卖店有哪些 编辑:程序博客网 时间:2024/04/28 03:42
/*  输入10个数字,按各个位上的和从小到大排序,如果相同,则按数字从小到大排序 */#include<stdio.h>#include<stdlib.h>typedef struct node{    int ori;    int n;}node;int cmp(const void *a,const void *b){    if(((node*)a)->n==((node*)b)->n)        return  ((node*)a)->ori-((node*)b)->ori;    return ((node*)a)->n-((node*)b)->n;}int main(int argc, char *argv[]){    node num[100];    int t;    int i=0;    int len;    while(~scanf("%d",&t)){        num[i++].ori=t;    }    len=i;    for(i=0;i<len;++i)    {        num[i].n=0;        int n=num[i].ori;        while(n)        {            num[i].n+=n%10;            n/=10;        }    }    qsort(num,len,sizeof(node),cmp);    for(i=0;i<len-1;++i)        printf("%d ",num[i].ori);    printf("%d\n",num[len-1].ori);    return 0;}

测试数据:

11 3 2 4 5 9 8 7 10 6

测试结果:


0 0