黑洞数

一、问题描述:

 

 

 

 

二、设计思路:

 

 

 

 

三、程序流程图:

 

 

 

 

四、代码实现:

#include<stdio.h>
#include<math.h>

int main()
{
    int a,b,c;
    int x,j,h;
    int max,min;
    int maxof3(int a,int b,int c);//函数的原型声明
    int minof3(int a,int b,int c);//函数的原型声明
    printf("请输入一个三位数来求它的黑洞数:");
    scanf("%d",&x);
    a=x/100%10;
    b=x/10%10;
    c=x%10;
        j=maxof3(a,b,c)-minof3(a,b,c);//此时传参进去
    for(int k=0;;k++)//注意后面要写break进行跳出
    {
        h=j;//转存记录上一次的最大值与最小值之差
    a=j/100%10;
    b=j/10%10;
    c=j%10;
    max=maxof3(a,b,c);
    min=minof3(a,b,c);
    j=max-min;
    
  if(j==h)//两次差相等则为黑洞数
      {
        printf("%d\n",j);
         break;
      }    
    }

  return 0;
}
int maxof3(int a,int b,int c)//求三位数重排后的最大值
{
    int t;
    if(a<b){t=a;a=b;b=t;}
    if(b<c){t=b;b=c;c=t;}
    if(a<c){t=a;a=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(b<c){t=b;b=c;c=t;}
    if(a<c){t=a;a=c;c=t;}
    return (c*100+b*10+a);
}

 

    寝室开空调了,庆祝一下

posted @ 2023-05-12 22:40  软件拓荒人  阅读(71)  评论(0)    收藏  举报