C语言编程问题,求解答,谢谢谢谢?
题目6:数字排序问题描述给定n个整数,请计算每个整数各位数字和,按各位数字和从大到小的顺序输出。输入格式输入的第一行包含一个整数n,表示给定数字的个数。第二行包含n个整数...
题目6:数字排序
问题描述
给定n个整数,请计算每个整数各位数字和,按各位数字和从大到小的顺序输出。
输入格式
输入的第一行包含一个整数n,表示给定数字的个数。
第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。
输出格式
输出多行,每行包含两个整数,分别表示一个给定的整数和它的各位数字和。按各位数字和递减的顺序输出。如果两个整数各位数字和相同,则先输出值较小的,然后输出值较大的。
样例输入
5
101 100 999 1234 110
样例输出
999 27
1234 10
101 2
110 2
100 1
评测用例规模与约定
1 ≤ n ≤ 1000,给出的数都是不超过10000的非负整数。 展开
问题描述
给定n个整数,请计算每个整数各位数字和,按各位数字和从大到小的顺序输出。
输入格式
输入的第一行包含一个整数n,表示给定数字的个数。
第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。
输出格式
输出多行,每行包含两个整数,分别表示一个给定的整数和它的各位数字和。按各位数字和递减的顺序输出。如果两个整数各位数字和相同,则先输出值较小的,然后输出值较大的。
样例输入
5
101 100 999 1234 110
样例输出
999 27
1234 10
101 2
110 2
100 1
评测用例规模与约定
1 ≤ n ≤ 1000,给出的数都是不超过10000的非负整数。 展开
展开全部
#include<stdio.h>int main(){ int n,m,k,t,i,j; int a[1000],b[1000]={0}; while(scanf("%d",&n),n) { for(i=0;i<n;i++) { scanf("%d",&a[i]); m=a[i]; do { b[i]=b[i]+m%10; m=m/10; }while(m!=0); } for(i=0;i<=n-2;i++) { k=i; for(j=i+1;j<=n-1;j++) if(b[k]>b[j]) k=j; if(k!=i) {t=a[k];a[k]=a[i];a[i]=t; t=b[k]; b[k]=b[i]; b[i]=t;} } for(i=0;i<n-1;i++) printf("%d ",a[i]); printf("%d\n",a[n-1]); } return 0;}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询