1019 数字黑洞 (20分)

Posted qrain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
",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
",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

以上是关于1019 数字黑洞 (20分)的主要内容,如果未能解决你的问题,请参考以下文章

1019 数字黑洞 (20分)

1019 数字黑洞 (20 分)

PTA | 1019 数字黑洞 (20分)

1019 数字黑洞 (20 分)

1019 数字黑洞 (20分)

PAT Basic 1019 数字黑洞 (20 分)