验证命题:任何各位数字不全相同的三位正整数经以下变换后均能变为495,称495为三位整数的黑洞数。
变换步骤:对于任意一个各位数字不全相同三位正整数,将组成该整数的3个数字重新组合分别生成一个最大数和最小数,用最大数减去最小数得到一个新的三位数;再对新的三位数重复上述操作,最多重复7次。
编写程序,接收键盘输入的一个三位正整数,判断各位数字是否不全相同,若不全相同则实施以上变换(不超过7次),输出每步变换后得到的三位整数。
【测试数据】
输入486时应输出:486 396 594 495
输入591时应输出:591 792 693 594 495
输入其他任意的三位数再做验证。
既然是三位整数,用n/100,n/10%10和n%10就可以得到三位数字进行比较就行
#include <stdio.h>
void fun(int n,int *a,int *b,int *c)
{
*a = n/100;
*b = n/10%10;
*c = n%10;
}
int isSame(int n)
{
int a,b,c;
fun(n,&a,&b,&c);
if(a==b && b==c)
return 1;
return 0;
}
void getnew(int *n)
{
int a,b,c,max,min;
fun(*n,&a,&b,&c);
if(a>b)
{
max = a;
min = b;
}
else
{
max = b;
min = a;
}
if(c>max)
max = c;
if(c<min)
min = c;
*n = max*100 + min - min*100-max;
}
int main()
{
int n,count=0;
scanf("%d",&n);
while(isSame(n))
{
printf("三位数字不能完全相同,请重新输入:");
scanf("%d",&n);
}
while(n!=495 && count <= 7)
{
count++;
printf("%d ",n);
getnew(&n);
}
if(count<=7)
printf("%d\n",495);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!