第一次知道sprintf这个函数,孤陋寡闻了。
写法一,
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
char cs[100];
sprintf(cs,"%04d",n);
int a = 0,b=0;
while(a-b!=6174){
sort(cs,cs+4,greater<char>());//降序
a=atoi(cs);
sort(cs,cs+4);//升序
b=atoi(cs);
if(a==b){
printf("%04d - %04d = %04d\n",a,b,a-b);
break;
}
//进行打印输出
printf("%04d - %04d = %04d\n",a,b,a-b);
sprintf(cs,"%04d",a-b);
if(a-b==6174) break;
}
return 0;
}
写法二,
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n, a1, b1, a[5], b[5];
cin >> n;
while(1)
{
for(int i = 0; i < 4; ++ i)
{
a[i] = n % 10;
b[i] = n % 10;
n /= 10;
}
sort(a, a + 4, greater<int>());
sort(b, b + 4);
a1 = a[0]*1000 + a[1]*100 + a[2]*10 + a[3];
b1 = b[0]*1000 + b[1]*100 + b[2]*10 + b[3];
n = a1 - b1;
printf("%04d - %04d = %04d\n", a1, b1, n);
if(n == 0) break;
if(n == 6174) break;
}
return 0;
}
sprintf/fprintf/printf 函数区别
sprintf 是将一个格式化的字符串输出到一个目的字符串中;
printf 是将一个格式化的字符串输出到屏幕;
fprintf 是将一个格式化的字符串写入文件中;