易错点:
如果 输入 1000
错误输出 1000 - 0001 = 999 这里要考虑格式的问题
正确输出 1000 - 0001 = 0999
所以还是cout 和printf 的格式问题 。我发现 pat乙级20分题目的扣分点 格式自动补零这一块很常见。
会经常遇到 这种 %0nd 的输出格式 ,有必要特别注意一点;
代码实现:
#include <iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
while (1)
{
int qian= n/1000;
int bai= n % 1000 /100;
int shi= n % 100 /10 ;
int ge= n % 10;
if (qian==bai&&bai==shi&&shi==ge)
{
cout<<n<<" - "<<n<<" = "<<"0000"<<endl;
break;
}
int c[4];
c[0]=qian;
c[1]=bai;
c[2]=shi;
c[3]=ge;
sort(c,c+4);
cout<<c[3]<<c[2]<<c[1]<<c[0];
cout<<" - ";
cout<<c[0]<<c[1]<<c[2]<<c[3];
cout<<" = ";
int a=c[3]*1000+c[2]*100+c[1]*10+c[0];
int b=c[0]*1000+c[1]*100+c[2]*10+c[3];
n=a-b;
printf("%04d\n",n);
if (n==6174)
{
break;
}
}
return 0;
}