#include<iostream>
using namespace std;
int main(void)
{
int sortmax(int);
int sortmin(int);
int i;
int num;
cout<<"请输入一个四位数:\n";
cin>>num;
int a,b,c,flag(0);
a=sortmax(num);
b=sortmin(num);
for (i=1;;i++)
{
c=a-b;
cout<<"第"<<i<<"步"<<":\n重组最大数为"<<a<<",";
cout<<"重组最小数为"<<b<<",";
cout<<"生成数为"<<a<<"-"<<b<<"="<<c<<endl<<endl;
a=sortmax(c);
b=sortmin(c);
flag++;
if(flag>10)
{
cout<<"输入了特殊值或者不符合卡不雷克运算!";
break;
}
if (c==6174)
{
cout<<"结束!";
break;
}
}
return 0;
}
int sortmax (int num)
{
int i,n(4);
int p[4];
for (i=3;num>0;i--)
{
p[i]=num%10;
num=num/10;
}
int j,k;
int flag;
flag=n;
while (flag>0)
{
k=flag;
flag=0;
for (j=1;j<k;j++)
if (p[j-1]<p[j])
{
int temp;
temp=p[j-1];
p[j-1]=p[j];
p[j]=temp;
flag=j;
}
}
return 1000*p[0]+100*p[1]+10*p[2]+p[3];
}
int sortmin (int num)
{
int i,n(4);
int p[4];
for (i=3;num>0;i--)
{
p[i]=num%10;
num=num/10;
}
int j,k;
int flag;
flag=n;
while (flag>0)
{
k=flag;
flag=0;
for (j=1;j<k;j++)
if (p[j-1]>p[j])
{
int temp;
temp=p[j-1];
p[j-1]=p[j];
p[j]=temp;
flag=j;
}
}
return 1000*p[0]+100*p[1]+10*p[2]+p[3];
}
C/C++卡布列克运算验证
最新推荐文章于 2023-12-18 21:14:46 发布