4 5关于#c语言#的问题:任何各位数字不全相同

验证命题:任何各位数字不全相同的三位正整数经以下变换后均能变为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;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632