搜索
您的当前位置:首页正文

c语言求数字黑洞问题

2021-05-05 来源:星星旅游


#include

int n;////用于【临时】存储输入的5位数,以及以后计算的最大值和最小值的差值(递归算法)。

int m[100],flag=0;///m[100]用于存放输入的5位数,以及计算出的最大值和最小值的差值;

///flag用于记录数组m的最后一个不为零的下标(或者说是递归的次数)。

fun()

{

int temp[5];

int i,j,t;

int max=0,min=0;

////如果n是四位数则在前面补0

if(n<10000)

temp[0]=0;

temp[0]=n/10000;

temp[1]=n/1000%10;

temp[2]=n/100%10;

temp[3]=n/10%10;

temp[4]=n%10;

////////如果五个数字全部相等

if(temp[0]==temp[1] && temp[1]==temp[2] &&

temp[2]==temp[3] && temp[4]==temp[5])

{

printf(\"[0]\\n\");

return;

}

///////////从大到小进行排序

for(i=0;i<5;i++)

for(j=i+1;j<5;j++)

if(temp[i]{

t=temp[i];

temp[i]=temp[j];

temp[j]=t;

}

////求出最大值

for(i=0;i<5;i++)

max=max*10+temp[i];

////求出最小值

for(i=4;i>=0;i--)

min=min*10+temp[i];

////求出差值,并且赋值给n,以便进行递归计算

n=max-min;

////n的值与数组中的每个元素进行比较

for(i=0;iif(n==m[i])////如果有相等的则从i开始到数组结尾是数字黑洞

{

printf(\"[\");

for(j=i;jprintf(\"%d,\j]);

printf(\"]\\n\");

return ;

}

m[flag++]=n;

fun();

}

void main()

{

scanf(\"%d\

m[0]=n;

flag++;

fun();

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top