实验要求:
输入一个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;
}
测试为:
【其中先将三位数的百位,十位,个位分离出来后再比较三位数的大小,最终输出结果依次扩大百位,十位与个位。】