1019 数字黑洞(stl)

第一次知道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 是将一个格式化的字符串写入文件中;

posted @ 2024-04-15 18:41  YuKiCheng  阅读(9)  评论(0编辑  收藏  举报