一问题描述
求三位数中的黑洞数,三位数排列作差最后的差不变,那么差就是黑洞数。
二设计思路
分别求去各个位上的数,然后将其中最大和最小数作差同时和上次的查比较想同就是黑洞数。
三程序流程图
 
四伪代码实现
#include<iostream>
using namespace std;
int max(int a,int b,int c){
	int temp;
	if(a<b){
		temp=a;
		a=b;
		b=temp;
	}
	if(a<c){
		temp=a;
		a=c;
		c=temp;
	}
	if(b<c){
		temp=b;
		b=c;
		c=temp;
	}
	return (100*a+10*b+c);
}
int min(int a,int b,int c){
	int temp;
	if(a>b){
		temp=a;
		a=b;
		b=temp;
	}
	if(a>c){
		temp=a;
		a=c;
		c=a;
	}
	if(b>c){
		temp=b;
		b=c;
		c=temp;
	}
	return (100*a+10*b+c);
} 
int main(){
	int x,a=3,b=2,c=1,h,y,i=0;
	cin>>x;
	while(i!=EOF){
		a=x/100;b=x/10-a*10;c=x%10;
		h=max(a,b,c)-min(a,b,c);
		i++;
		if(h==x)
		{
			cout<<h<<endl;
			break;
		}
		x=h;
	}
}
2
#include<iostream>
using namespace std;
int main(){
 int x,a,b,c,h,max,min,i=0;
 cin>>x;
 while(i!=EOF){
  //x=h;
  a=x/100;b=x/10-a*10;c=x%10;
  cout<<a<<" "<<b<<" "<<c<<endl;
  if(a>b&&a>c&&b>c){
   max=a*100+b*10+c;
   min=c*100+b*10+a;
  }
  if(b>c&&b>a&&a>c){
   max=b*100+a*10+c;
   min=c*100+a*10+b;
  }
  if(c>a&&c>b&&a>b){
   max=c*100+a*10+b;
   min=b*100+a*10+c;
  }
  if(a>b&&a>c&&b<c){
   max=a*100+c*10+b;
   min=b*100+c*10+a;
  }
  if(b>c&&b>a&&a<c){
   max=b*100+c*10+a;
   min=a*100+c*10+b;
  }
  if(c>a&&c>b&&a<b){
   max=c*100+b*10+a;
   min=a*100+b*10+c;
  }
  h=max-min;
  i++;
  if(h==x)
  {
   cout<<h<<endl;
   break;
  }
  x=h;
 }
} 
五代码实现


 
                    
                 
