C语言实验——各位数字之和排序
Time Limit: 1000 ms
Memory Limit: 65536 KiB
Problem Description
给定n个正整数,根据各位数字之和从小到大进行排序。
Input
输入数据有多组,每组数据占一行,每行的第一个数正整数n,表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。n<=10
Output
输出每组排序的结果。
Sample Input
2 1 2 3 121 10 111 0
Sample Output
1 2 10 111 121
Hint
Source
#include<stdio.h> int main(){ int n; int a[10]; int sum[10]; int i,j; int temp,m; while(~scanf("%d",&n)&&n){ for(i=0;i<n;i++){ sum[i]=0; } for(i=0;i<n;i++){ scanf("%d",&a[i]); m=a[i]; for(j=0;;j++){ sum[i]=sum[i]+m%10; m=m/10; if(m==0){ break; } }
// m=a[i]; // while(m>0){ // sum[i]=sum[i]+m%10; // m=m/10; // } } for(i=0;i<n-1;i++){ for(j=i+1;j<n;j++){ if(sum[i]>sum[j]){ temp=sum[i]; sum[i]=sum[j]; sum[j]=temp; temp=a[i]; a[i]=a[j]; a[j]=temp; } } } for(i=0;i<n;i++){ if(i==0){ printf("%d",a[i]); } else{ printf(" %d",a[i]); } } printf("\n"); } }