黑洞数

自然语言解决问题:

(1)将任一个三位数进行拆分。

(2)拆分后的数据重新组合,将可以组合的最大值减去最小值,差赋给变量 j。
(3)将当前差值暂存到另一变量 h中: h=j。(4)对变量/执行拆分、重组、求差操作,差值仍然存储到变量j中。(5)判断当前差值是否与前一次的差 h 相等,若相等将差值输出并结束循环,否则重复步骤 (3)、(4)和 (5)。

流程图:无

具体代码:

#include <stdio.h>
int maxof3(int,int,int);
int minof3(int,int,int);
int main(){
int i,k;
int hun,oct,data,max,min,j,h;
printf("请输入一个三位数: ");
scanf("%d",&i);
hun=i/100;
oct=i%100/10;
data=i%10;
max=maxof3(hun,oct,data);
min=minof3(hun,oct,data);
j=max-min;
for(k=0;;k++)
{
h=j;
hun=j/100;
oct=j%100/10;
data=j%10;
max=maxof3(hun,oct,data);
min=minof3(hun,oct,data);
j=max-min;
if(j==h){

printf("%d\n",j);
break;
}
}
}
int maxof3(int a,int b,int c)
{

int t;
if(a<b)
{

t=a;
a=b;
b=t;

}
if (a<c)
{

t=a;
a=c;
c=t;
}
if(b<c)
{
t=b;
b=c;
c=t;

}
return(a*100+b*10+c);
}
int minof3(int a,int b,int c)
{int t;
if(a<b)
{

t=a;
a=b;
b=t;

}if(a<c)
{
t=a;
a=c;
c=t;}
if(b<c)
{
t=b;
b=c;
c=t;
}
return(c*100+b*10+a);
}

posted @ 2023-05-16 10:52  Mini-Q  阅读(18)  评论(0编辑  收藏  举报