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

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");
		
	}
}

猜你喜欢

转载自blog.csdn.net/ailmengi000/article/details/80281302