码迷,mamicode.com
首页 > 其他好文 > 详细

1019 数字黑洞 (20分)

时间:2020-01-22 16:16:17      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:格式化   语句   格式   har   不可   turn   end   style   pre   

#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

1019 数字黑洞 (20分)

标签:格式化   语句   格式   har   不可   turn   end   style   pre   

原文地址:https://www.cnblogs.com/QRain/p/12228321.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!