1019 数字黑洞 (20分)

#include <stdio.h>
#include <vector>
#include <algorithm>
#include <string.h>
#include <cmath>
#include <stdlib.h>
#include <iostream>

using namespace std;

int main()
{
    int N,h,l,i,j;
    char num[5],num1[5];
    char tmp;
    cin>>N;
    do
    {
        sprintf(num,"%d",N);
        if(strlen(num)==3)
            num[3]='0';
        else if(strlen(num)==2)
        {
            num[3]='0';
            num[2]='0';
        }
        else if(strlen(num)==1)
        {
            num[3]='0';
            num[2]='0';
            num[1]='0';
        }
        for(i=0;i<3;i++)
        {
            for(j=0;j<3-i;j++)
            {
                if(num[j]<num[j+1])
                {
                    tmp=num[j];
                    num[j]=num[j+1];
                    num[j+1]=tmp;
                }
            }
        }
        num1[0]=num[3];
        num1[1]=num[2];
        num1[2]=num[1];
        num1[3]=num[0];
        h = atoi(num);
        l = atoi(num1);
        N=h-l;
        printf("%04d - %04d = %04d\n",h,l,N);
        }while(N!=6174&&N!=0);
    return 0;
}

上面的代码可以正确通过

下面的用cout+判断语句有三个样例不可以通过,不知道为什么错。

#include <stdio.h>
#include <vector>
#include <algorithm>
#include <string.h>
#include <cmath>
#include <stdlib.h>
#include <iostream>

using namespace std;

int main()
{
    int N,h,l,i,j;
    char num[5],num1[5];
    char tmp;
    cin>>N;
    do
    {
        sprintf(num,"%d",N);
        if(strlen(num)==3)
            num[3]='0';
        else if(strlen(num)==2)
        {
            num[3]='0';
            num[2]='0';
        }
        else if(strlen(num)==1)
        {
            num[3]='0';
            num[2]='0';
            num[1]='0';
        }
        for(i=0;i<3;i++)
        {
            for(j=0;j<3-i;j++)
            {
                if(num[j]<num[j+1])
                {
                    tmp=num[j];
                    num[j]=num[j+1];
                    num[j+1]=tmp;
                }
            }
        }
        num1[0]=num[3];
        num1[1]=num[2];
        num1[2]=num[1];
        num1[3]=num[0];
        h = atoi(num);
        l = atoi(num1);
        N=h-l;
        //printf("%04d - %04d = %04d\n",h,l,N);
        cout<<num<<" - "<<num1<<" = ";
        if(N<1000&&N>=100)
            cout<<"0"<<N<<endl;
        else if(N<100&&N>=10)
            cout<<"00"<<N<<endl;
        else if(N<10)
            cout<<"000"<<N<<endl;
        else
            cout<<N<<endl;
            
        }while(N!=6174&&N!=0);
    return 0;
}

总结:格式化输出用printf

猜你喜欢

转载自www.cnblogs.com/QRain/p/12228321.html