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

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

时间: 1ms        内存:64M

描述:

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

输入:

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

输出:

输出每组排序的结果。

示例输入:

2 1 2
3 121 10 111
0


示例输出:

1 2
10 111 121

提示:

参考答案(内存最优[752]):

#include<stdio.h> 
#include<math.h> 
void suan(int n); 
int main() 
{ 
    int n; 
    scanf("%d",&n); 
    while(n!=0) 
    { 
      suan(n); 
      scanf("%d",&n); 
    } 
    return 0; 
} 
void suan(int n) 
{ 
    int a[1000],b[1000],c[1000]={0},i,j,t,k; 
    for(i=0;i<=n-1;i++) 
    { 
        scanf("%d",&a[i]); 
        b[i]=a[i]; 
        while(b[i]!=0) 
        { 
           c[i]=c[i]+b[i]%10; 
           b[i]=b[i]/10; 
        } 
    } 
        for(i=0;i<=n-2;i++) 
        { 
            for(j=0;j<=n-2;j++) 
            { 
                if(c[j]>c[j+1]) 
               { 
                   t=c[j]; 
                   c[j]=c[j+1]; 
                   c[j+1]=t; 
                   k=a[j]; 
                   a[j]=a[j+1]; 
                   a[j+1]=k; 
               } 
            } 
        } 
    for(i=0;i<=n-1;i++) 
    { 
       if(i<n-1) 
        printf("%d ",a[i]); 
        else
        printf("%d",a[i]); 
    } 
printf("\n"); 
} 

参考答案(时间最优[0]):

#include<stdio.h> 
#include<math.h> 
void suan(int n); 
int main() 
{ 
    int n; 
    scanf("%d",&n); 
    while(n!=0) 
    { 
      suan(n); 
      scanf("%d",&n); 
    } 
    return 0; 
} 
void suan(int n) 
{ 
    int a[1000],b[1000],c[1000]={0},i,j,t,k; 
    for(i=0;i<=n-1;i++) 
    { 
        scanf("%d",&a[i]); 
        b[i]=a[i]; 
        while(b[i]!=0) 
        { 
           c[i]=c[i]+b[i]%10; 
           b[i]=b[i]/10; 
        } 
    } 
        for(i=0;i<=n-2;i++) 
        { 
            for(j=0;j<=n-2;j++) 
            { 
                if(c[j]>c[j+1]) 
               { 
                   t=c[j]; 
                   c[j]=c[j+1]; 
                   c[j+1]=t; 
                   k=a[j]; 
                   a[j]=a[j+1]; 
                   a[j+1]=k; 
               } 
            } 
        } 
    for(i=0;i<=n-1;i++) 
    { 
       if(i<n-1) 
        printf("%d ",a[i]); 
        else
        printf("%d",a[i]); 
    } 
printf("\n"); 
} 

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注