m0_64889852 2022-05-09 17:34 采纳率: 28.6%
浏览 660

c++将正整数中数字重新排列分别组成最大数和最小数

输入正整数,将正整数中每位数字重新排列,分别组成一个最大数和最小数依次输出,两数间用空格分隔

  • 写回答

4条回答 默认 最新

  • 关注

    如下:

    img

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int n;
        int a[20];
        int i, j, len=0,t;
        cin >> n;
        //将n的各位数字存入数组
        while (n)
        {
            a[len] = n % 10;
            len++;
            n /= 10;
        }
        //冒泡排序
        for (i = 0; i < len - 1; i++)
        {
            for (j = 0; j < len - 1 - i; j++)
            {
                if (a[j] > a[j + 1]) //升序排列(从小到大)
                {
                    t = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = t;
                }
            }
        }
        //最大数
        int max = 0;
        for (i = len - 1; i >= 0; i--)
        {
            max = max * 10 + a[i];
        }
        //最小数
        int min = 0;
        for (i = 0; i < len; i++)
        {
            min = min * 10 + a[i];
        }
        cout << max << " " << min;
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 5月9日