1188-C语言实验——各位数字之和排序

版权声明:点个赞再走叭! https://blog.csdn.net/weixin_42822164/article/details/85225348

Problem Description

给定n个正整数,根据各位数字之和从小到大进行排序。

Input

输入数据有多组,每组数据占一行,每行的第一个数正整数n,表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。n<=10

Output

输出每组排序的结果。

Sample Input

3 230 59 110
5 199 220 108 235 120
0

Sample Output

110 230 59
120 220 108 235 199

源代码:

#include <stdio.h>
int main()
{
    int x,i,j,temp;
    
    while (scanf("%d",&x)!=EOF) {
        if(x==0)
            break;
        else{
        int a[2][10],sum=0;
        for(i=0;i<x;i++)
            scanf("%d",&a[0][i]);
            for(i=0;i<x;i++){
                temp=a[0][i];
                while(temp>=1){
                    sum+=temp%10;
                    temp/=10;
                }
                a[1][i]=sum;
                sum=0;
            }
            for(i=1;i<x;i++)
                for(j=0;j<x-i;j++)
                    if(a[1][j]>a[1][j+1]){
                        temp=a[1][j];
                        a[1][j]=a[1][j+1];
                        a[1][j+1]=temp;
                        temp=a[0][j];
                        a[0][j]=a[0][j+1];
                        a[0][j+1]=temp;
                    }
            printf("%d",a[0][0]);
            for(i=1;i<x;i++)
                printf(" %d",a[0][i]);
            printf("\n");
        }
    }
    return 0;
}

说明:

使用了二维数组和冒泡排序,较为复杂。应该还有更为简单的代码。努力!

猜你喜欢

转载自blog.csdn.net/weixin_42822164/article/details/85225348