#include <stdio.h>
#include <string.h>
int stn(char a[]);
void incre(char a[],char b[]);
void decre(char a[],char b[]);
void digui(char a[]);
int main()
{
static char a[5];
int i,n;
scanf("%d",&n);
a[0]=n/1000+'0'; a[1]=(n/100)%10+'0';
a[2]=(n/10)%10+'0'; a[3]=n%10+'0';
a[4]='\0';
if(a[0]==a[1]&&a[0]==a[2]&&a[0]==a[3])
printf("%s - %s = 0000",a,a);
else{
digui(a);
}
return 0;
}
void digui(char a[])
{
char b[5];
char c[5];
decre(a,b);
incre(a,c);
int subs = stn(b)-stn(c);
if(subs==6174)
printf("%s - %s = 6174\n",b,c);
else{
char d[5];
d[0]=subs/1000+'0'; d[1]=(subs/100)%10+'0';
d[2]=(subs/10)%10+'0'; d[3]=subs%10+'0';
d[4]='\0';
printf("%s - %s = %s\n",b,c,d);
digui(d);
}
}
int stn(char a[])
{
return 1000*(a[0]-'0')+100*(a[1]-'0')+10*(a[2]-'0')+a[3]-'0';
}
void incre(char a[],char b[])
{
int i,j,temp;
for(i=0;i<5;i++)
b[i]=a[i];
for(i=0;i<4;i++)
for(j=i;j<4;j++){
if(b[j]<b[i]){
temp=b[j];
b[j]=b[i];
b[i]=temp;
}
}
}
void decre(char a[],char b[])
{
int i,j,temp;
for(i=0;i<5;i++)
b[i]=a[i];
for(i=0;i<4;i++)
for(j=i;j<4;j++){
if(b[j]>b[i]){
temp=b[j];
b[j]=b[i];
b[i]=temp;
}
}
}
PAT乙级 1019 数字黑洞 c语言题解
最新推荐文章于 2022-01-27 16:06:41 发布