【C&C++】分支结构(重排最大数)

实验要求:

输入一个1000(不包含1000)以内的正整数,首先将其补齐为三个数字(如果是两位数或者一位数,则前面补0),然后将这三个数字按不同顺序排列成一组数据,输出排列中最大的那个数。

例如:

如果输入249,可以重排出429,249,924,942等等,其中最大的应该是942,因此应输出942;

如果输入的是14,则在前面补0得到014,据此可以重排出041,140,410等等,其中最大的应该是410,因此应输出410。

相关知识参照前两篇分支结构:点击这里点击这里

【要得到一个三位数的某个数字可以使用求余运算除法运算

例如下面的程序可以获取一个三位数的十位数并输出:

int num = 258;
int a = num / 10 % 10;
cout << a;

第二条语句先计算num /10得到25,然后用25对10求余得到5,程序最后输出5。

在这里插入图片描述

程序实现:

测试输入:5
预期输出:500

测试输入:185
预期输出:851
// 包含两种I/O库,可以使用任一种输入输出方式
#include <stdio.h>
#include <iostream>
using namespace std;

int main()
{
    // n-输入的数,m-重排后的数
    int n, m;
    // 请在此添加代码,输入一个小于1000的正整数,重排出最大的数存入m中
    /********** Begin *********/
    int max, mid, min;

	cin >> n;

	int a = n / 100;// 百位数
	int b = n / 10 % 10;//十位数
	int c = n % 10;//个位数

	//比较三位数的大小,最大值赋给max,中间值赋给mid,最小值赋给min。
	if (a <= b)
	{
		if (c >= b)
		{
			mid = b;
			max = c;
			min = a;
		}
		else if (c >= a)
		{
			mid = c;
			max = b;
			min = a;
		}
		else
		{
			mid = a;
			max = b;
			min = c;
		}
	}
	else
	{
		if (c < b)
		{
			mid = b;
			max = a;
			min = b;
		}
		else if(c < a)
		{
			mid = c;
			max = a;
			min = b;
		}
		else if (c > a)
		{
			mid = a;
			max = c;
			min = b;
		}
	}
	//扩大max到百位,mid到十位,min到个位
	m = max * 100 + mid * 10 + min;
	
    /********** End **********/
    // 输出重排后的数
    cout << m << endl;
    return 0;
}

测试为:
在这里插入图片描述
【其中先将三位数的百位,十位,个位分离出来后再比较三位数的大小,最终输出结果依次扩大百位,十位与个位。】

第二种方法:

在这里插入图片描述

  • 23
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值