问题描述
输入 𝑛个不超过 30000的整数(𝑛≤10 )。然后求出每个数的数字和,再按每个数的数字和由小到大排列输出。
输入
第一行为整数 𝑛;
第二行为 𝑛 个整数。
输出
由小到大排列的每个数的数字和(每个数之间保留一个空格)。
附代码:
#include<iostream>
using namespace std;
int main()
{
int n,sum=0,b,temp;
cin>>n;
if(n<=10)
{
int arr[n];
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
for(int j=0;j<n;j++)
{
b=arr[j];//这里使用一个变量来存放数据,因为后面如果直接使用数组里的数据会被替换更新掉
while(b!=0)
{
sum=sum+b%10;
b /= 10;
}
arr[j]=sum;
sum=0;
}
for(int x=0;x<n-1;x++)//使用冒泡排序来升序重新排列这组数据
{
for(int y=0;y<n-1-x;y++)
{
if(arr[y]>=arr[y+1])
{
temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
}
}
}//打印重新排列过的数组;
for(int i=0;i<n;i++)
cout<<arr[i]<<" ";
}
return 0;
}