#include int n;////用于【临时】存储输入的5位数,以及以后计算的最大值和最小值的差值(递归算法)。 int m[100],flag=0;///m[100]用于存放输入的5位数,以及计算出的最大值和最小值的差值; ///flag用于记录数组m的最后一个不为零的下标(或者说是递归的次数)。 fun() { int temp[5]; int i,j,t; int max=0,min=0; ////如果n是四位数则在前面补0 if(n<10000) temp[0]=0; temp[0]=n/10000; temp[1]=n/1000%10; temp[2]=n/100%10; temp[3]=n/10%10; temp[4]=n%10; ////////如果五个数字全部相等 if(temp[0]==temp[1] && temp[1]==temp[2] && temp[2]==temp[3] && temp[4]==temp[5]) { printf(\"[0]\\n\"); return; } ///////////从大到小进行排序 for(i=0;i<5;i++) for(j=i+1;j<5;j++) if(temp[i] t=temp[i]; temp[i]=temp[j]; temp[j]=t; } ////求出最大值 for(i=0;i<5;i++) max=max*10+temp[i]; ////求出最小值 for(i=4;i>=0;i--) min=min*10+temp[i]; ////求出差值,并且赋值给n,以便进行递归计算 n=max-min; ////n的值与数组中的每个元素进行比较 for(i=0;i { printf(\"[\"); for(j=i;j printf(\"]\\n\"); return ; } m[flag++]=n; fun(); } void main() { scanf(\"%d\ m[0]=n; flag++; fun(); } 因篇幅问题不能全部显示,请点此查看更多更全内容