大一新生非计算机专业,刚学C++,使用的是VS2017,如有不当之处请多指教ฅʕ•̫͡•ʔฅ。
#include "pch.h"//VS2017
#include <iostream>
using namespace std;
int Step = 0;//步数
bool Check(int Origin)//检验输入的数字是否违规
{
bool b = true;
if (Origin < 1000 || Origin > 9999)
b = false;
else if (Origin % 1111 == 0)//检验是否为1111、2222、3333……9999
b = false;
return b;
}
int Sort(int Origin)//重排四位数
{
int Max, Min;//重排后最大、最小值
int Temp[4];
for (int i = 0; i < 4; i++)
{
Temp[i] = Origin % 10;
Origin /= 10;
}//Temp【4】中储存每位数字
for (int i = 0; i < 4; i++)
{
for (int j = i + 1; j < 4; j++)
if (Temp[i] < Temp[j])
{
int t;
t = Temp[i]; Temp[i] = Temp[j]; Temp[j] = t;
}
}//Temp【4】从大到小排好
Max = 1000 * Temp[0] + 100 * Temp[1] + 10 * Temp[2] + Temp[3];
Min = 1000 * Temp[3] + 100 * Temp[2] + 10 * Temp[1] + Temp[0];
int Next = Max - Min;//下次数字
cout << Max << "-" << Min << "=" << Next << endl;//输出减法算式
return Next;//返回下次数字
}
int main()
{
int x;
cin >> x;
if (Check(x) == false)
{
cout << "输入四位数违规!";
exit(1);
}
while (1)
{
x = Sort(x);
Step++;
if (x == 6174)
break;//当结果为6174时跳出循环
}
cout << Step << endl;//输出步数
}