• 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

  • 相关阅读:
    第13课-信号通讯
    第12课-有名管道通讯
    第11课-无名管道通讯
    第10课-进程控制
    第9课-时间编程
    【JVM 知识体系框架总结】
    【深入浅出-口语】(3):自然发音
    【深入浅出-JVM】(76):classloader
    【深入浅出-JVM】(75):class 装载
    【深入浅出-JVM】(77):SPI
  • 原文地址:https://www.cnblogs.com/QRain/p/12228321.html
Copyright © 2020-2023  润新知