pta数字黑洞代码查漏补缺

样例有一个没过,请大家看看代码哪里需要完善,谢谢!

img

img


```c
#include<stdio.h>
int main(){
    char n[4]={'0','0','0','0'},ch;
    int i=3,j,num,a=0,b=0,m;
    scanf("%d",&m);//先把数字以字符串形式储存
    while(m!=0){
        n[i--]=m%10+'0';
        m/=10;
    }
    while((a-b)!=6174){
        a=0;
        b=0;
        for(i=3;i>0;i--){//冒泡排序,从大到小
            for(j=0;j<i;j++){
                if(n[j]<n[j+1]){
                    ch=n[j];
                    n[j]=n[j+1];
                    n[j+1]=ch;
                }
            }
        }
        for(i=0;i<=3;i++){//a代表从大到小排序时整数,遍历求a
            if(i==0){
                a+=n[i]-'0';
            }else{
                a=a*10+(n[i]-'0');
            }
        }
        for(i=3;i>=0;i--){////b代表从大到小排序时整数,遍历求b
            if(i==3){
                b+=n[i]-'0';
            }else{
                b=b*10+(n[i]-'0');
            }
        }
        if(a==b){
           printf("%04d - %04d = 0000\n",a,b);
            return 0;
        }
        num=a-b;
        printf("%04d - %04d = %d\n",a,b,num);
        i=3;
        while(num!=0){//把新数字以字符串形式储存
            n[i--]=num%10+'0';
            num/=10;
        }
        for(i;i>=0;i--){
            n[i]='0';
        }


        
   }
    return 0;
}

```

img