zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    sql分页查询
    vi编辑器使用
    Linux命令:
    ubuntu中mysql忘记密码如何修改
    关于MySQL中自增的理解和设置
    MySQL中是索引
    MySQL中的分页操作结合python
    MySQL的分组和排序
    MySQL多表连接操作
    .NET Core App部署Linux
  • 原文地址:https://www.cnblogs.com/QRain/p/12228321.html
Copyright © 2011-2022 走看看