#include<iostream> #include<algorithm> #include<cstdio> using namespace std; bool cmp(int a,int b){ return a>b; } void to_array(int n,int num []) { for(int i=0;i<4;i++) { num[i]=n%10; n/=10; } } int to_number(int num[])//void to_number(int num[],int n)这样写就错了; { int sum=0; for(int i=0;i<4;i++){ sum=sum*10+num[i];//注意sum*10 这才是 x10 累加 的正确写法 } return sum;//记得返回总值; } int main () { int a,maxn,minn; cin>>a; int num[5]; while(1){ to_array(a,num); //是num 不是num[5]!!! sort(num,num+4); minn=to_number(num); sort(num,num+4,cmp); maxn=to_number(num); a=maxn-minn; // cout<<maxn<<"-"<<minn<<"="<<a<<endl; // 这种写法不能输出如7850 转换的 0587 ,会错误输出587 printf("%04d - %04d = %04d\n",maxn,minn,a);// 别忘了换行符 // 这里有个比较狗的格式错误“"%04d-%04d=%04d"” (已改) if(a==0||a==6174) break; } return 0; }