• 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

  • 相关阅读:
    switch_goto
    隐藏 窗口的整个 标题栏(包括右上角的关闭)
    asp的邦定表达式异常 <_ %_ = strParentid _%_>不能传到下个页面
    【收藏】default.rdp配置
    计算机网络中的性能指标
    当某个快捷键不能用时很可能是热键冲突
    java的FOR循环 打印三角形
    二进制 八进制 十进制 十六进制
    linux的vim编辑命令常用
    JIRA的备份
  • 原文地址:https://www.cnblogs.com/QRain/p/12228321.html
Copyright © 2020-2023  润新知