C++某題(函數(shù)體+排序問題)
題目描述
輸入n個不超過30000的整數(shù)(n≤10)。然后求出每個數(shù)的數(shù)字和,再按每個數(shù)的數(shù)字和由小到大排列輸出。
輸入格式
第一行為整數(shù)n?
第二行為n個整數(shù)
輸出格式
由小到大排列的每個數(shù)的數(shù)字和(每個數(shù)之間保留一個空格)
樣例輸入
4
33 104 87 16
樣例輸出
5 6 7 15
#include<bits/stdc++.h>
using namespace std;
int jsszh(int a)//計算數(shù)字和?
{
if(a<10)
{
return a;
}
if(10<a&&a<100)
{
return a%10+a/10;
}
if(100<a&&a<1000)
{
int b,c,d;
b=a/100;
c=(a-100*b)/10;
d=a-b*100-c*10;
return b+c+d;
}
if(1000<a&&a<10000)
{
int b,c,d,e;
b=a/1000;
c=(a-1000*b)/100;
d=(a-b*1000-c*100)/10;
e=a-b*1000-c*100-d*10;
return b+c+d+e;
}
if(10000<a&&a<30001)
{
int b,c,d,e,f;
b=a/10000;
c=(a-10000*b)/1000;
d=(a-b*10000-c*1000)/100;
e=(a-b*10000-c*1000-d*100)/10;
f=a-b*10000-c*1000-d*100-e*10;
return b+c+d+e+f;
}
}
int main()
{
int n,a[15],b[15];
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
b[i]=jsszh(a[i]);
}
for(int i=1;i<=n;i++)
{
int tmp=0;
for(int j=1;j<=i;j++)
{
if(b[i]<b[j])
{
tmp=b[j];
b[j]=b[i];
b[i]=tmp;
}
}
}
for(int i=1;i<=n;i++)
{
cout<<b[i]<<' ';
}
}