问题标题: 酷町堂:1214 数字顺序重构

0
0
已解决
高舒豪
高舒豪
中级光能
中级光能

1214   数字顺序重构

经验值:800 时间限制:1000毫秒

题目描述 Description

任意输入一个正整数(位数不超过15位),取出其中的每一位数,用一个数组保存,并按照其各位数从小到大排列,将其重构组成一个新的数,输出该整数。
(注:输出的是一个整数,而不是一个数组)

输入描述 Input Description

输入为一行,表示一个位数不超过15的正整数。

输出描述 Output Description

输出为一行,表示经过顺序重构之后得到的新数。

样例输入 Sample Input

645312

样例输出 Sample Output

123456

数据范围及提示 Data Size & Hint

输出的整数首位不能为0哦

#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
	
	return a>b;
}
int main(){
	int n,a[105],ge,res,i=1;
	cin>>n;
	while(n){
		ge=n%10;
		n=n/10;
		res=res*10+ge;
		a[i]=res;
		i++;
	}
	sort(a,a+i,cmp);
	int s;
	for (int j=1;j<=i;j++){
		s=s*10+a[j];
	}
    cout<<s;
	return 0;
}
//cout<<fixed<<setprecision(1)<<v;

咋拆数字啊?

高舒豪在2021-05-17 18:31:55追加了内容

又咋存数组里啊


0
已采纳
李子杰
李子杰
资深光能
资深光能

我通过网上查询,循环取位数终于懂了!!!

另外,取位数还有一个网站循环取位数讲义

李子杰在2021-05-18 17:20:43追加了内容

思路:

李子杰在2021-05-18 17:28:02追加了内容

1.定义 int类型,b[20],i;

  定义long long类型a;

   并输入a。

2.while(a){

    3.i++;

    4.取位数   :b[i]=a%10;   a/=10;

}

5.sort(a+1,a+n+1);

6. for(int j=1;j<=i;j++){
       7.如果(b[j]==0)continue;

       8.输出<<b[j];
    }

祝您满分愉快!!!

0
被禁言 高乐彤
高乐彤
修练者
修练者
int main(){
    //定义long long数组 ans=0,n,a[20],i1=1,s=0;
    cin>>n;
    while(1){            |
        if(n>=10){       |
            a[i1]=n%10;  |
            n/=10;       |
            i1++;        |
        }if(n<10){       |循环取位数
            a[i1]=n%10;  |
            break;       |
        }                |
    }                    |
    for(int i=1;i<=i1-1;i++){    |
        for(int j=i+1;j<=i1;j++){|
            if(a[i]<a[j]){       |
                int t=a[i];      |
                a[i]=a[j];       |排序(选择)
                a[j]=t;          |
            }                    |
        }                        |
    }                            |
    for(int j=i1;j>=1;j--){          /
        //ans+=a[j]*pow(10,i1-j+1);  /
        if(a[j])                     /输出操作
            cout<<a[j];              / 
    }                                /                       
    return 0; 
}

看在同学的份上,采纳一下吧!!!

0
朱优扬
朱优扬
中级天翼
中级天翼

字符串轻松水过

代码:

    cin>>s;
    sort(s.begin(),s.end());
    while(s[0]=='0')    s.erase(0,1);
    for(int i=0;i<s.size();i++)
        cout<<s[i];

 

0
李子杰
李子杰
资深光能
资深光能

sort函数 课后讲义

知识点:sort()排序

  1. sort()默认从小到大排序
    加头文件#include<algotithm>
    数组长度为n,
    a[1] a[2] a[3]......a[n]这n 个数排序
    sort(a+1,a+n+1);
    a[0] a[1] a[2]......a[n-1]这n 个数排序
    sort(a,a+n);
  2. sort()自定义函数cmp,实现从大到小排序
 

bool cmp(int a,int b) {

return a>b;

}

int a[100005];

int main(){

    int n; cin>>n;

    for(int i=1;i<=n;i++) cin>>a[i];

    sort(a+1,a+n+1,cmp);

    for(int i=1;i<=n;i++) cout<<a[i]<<' ';

    return 0;

}

0
孙楷航
孙楷航
资深光能
资深光能

while(b>0){

a[cnt]=b%10;

b=b/10;

cnt++;

}

for(int i=0; i<=cnt-1; i++){

for(int j=i+1; j<=cnt; j++){

if(a[i]>a[j]){

swap(a[i],a[j]);

}

}

}

for(int j=cnt;j>=1; j--){

d+=a[j]*c; c*=10;

}

我要回答