请求出一个3位数打乱次序后能组成的最小的3位数

分析问题

输入一个三位数n,重新打乱其顺序,变成最小的三位数

建立模型

输入一个三位数n //number的缩写

拆解成百 十 个 位;用b,s,g代表

b=n/100; //除一个10就砍掉一个末位

s=n/10%10; //对一个10取模,就从右侧保留一个位灵敏

g=n%10; //从右侧保留一位

//对abc三个数从小到大排序

如果b>s 交换bs

如果b>g 交换sg

如果s>g 交换sg

如果a等于0 交换ab //三位数的首位不能为零

将bsg按百十个的位数输出

编写代码

#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    int b,s,g;
    //拆解位数
    b = n/100;
    s = n/10%10;
    g = n%10;
    //从小到大排序
    if(b>s) swap(b,s);
    if(b>g) swap(b,g);
    if(s>g) swap(s,g);
    //解决首位为零的问题
    if(b==0) swap(b,s);
    cout<<b*100+s*10+g;
    return 0;
}

保存 编译 运行