各位数字之和排序

各位数字之和排序

题目链接

#include <stdio.h>
int main(){
	int n;
	int a[10];//进行交换位置的原数组
	int c[10];//可进行破坏的副数组
	while(scanf("%d",&n)!=EOF){
		int t;
		int b[10]={0};//进行循环清零,以防二次循环时破坏b数组的计数
		if(n==0){
			break;
		}
		for(int i=0;i<n;i++){
			//TODO
			scanf("%d",&a[i]);
			c[i]=a[i];
		}
		for(int i=0;i<n;i++){//外层循环控制下标,将三位数组相加之和记录在b数组
			for(int j=0;c[i]>0;j++){//内层循环控制取余次数
					b[i]+=c[i]%10;
					c[i]/=10;
			}
		}
		for(int i=0;i<n-1;i++){//冒泡排序
			for(int j=0;j<n-i-1;j++){
				if(b[j]>b[j+1]){
					t=a[j];
					a[j]=a[j+1];
					a[j+1]=t;
					t=b[j];//更新下标让每个数字的三位之和跟着每个数字
					b[j]=b[j+1];//防止下一次冒泡时会乱掉
					b[j+1]=t;
				}
			}
		}
		for(int i=0;i<n;i++){
			printf("%d ",a[i]);
		}
		printf("\n");
	}
	return 0;
}

本文作者:EricFirst001

本文链接:https://www.cnblogs.com/cuers/p/17541488.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   EricFirst001  阅读(31)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起