zoukankan      html  css  js  c++  java
  • nyoj73 比大小

    比大小

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:2
     
    描述

    给你两个很大的数,你能不能判断出他们两个数的大小呢?

    比如123456789123456789要大于-123456

     
    输入
    每组测试数据占一行,输入两个不超过1000位的10进制整数a,b
    数据保证输入的a,b没有前缀的0。
    如果输入0 0表示输入结束。测试数据组数不超过10组
    输出
    如果a>b则输出“a>b”,如果a<b则输出“a<b”,如果相等则输出“a==b”。
    样例输入
    111111111111111111111111111 88888888888888888888
    -1111111111111111111111111  22222222
    0 0
    样例输出
    a>b
    a<b
    View Code
     
    #include<stdio.h>
    #include<string.h>
    #define maxn 1000+10
    char stra[maxn],strb[maxn];
    int main()
    {
        int i,n,lena,lenb,ok;
        while(1)
        {
            scanf("%s",stra);
            scanf("%s",strb);
            lena=strlen(stra);
            lenb=strlen(strb);
            //printf("lena=%d,lenb=%d",lena,lenb);//
            if(lena==1&&lenb==1&&stra[0]=='0'&&strb[0]=='0')
                break;
            if(stra[0]=='-'&&strb[0]!='-')
                printf("a<b\n");
            if(stra[0]!='-'&&strb[0]=='-')
                printf("a>b\n");
            if(stra[0]!='-'&&strb[0]!='-')
            {
                if(lena<lenb)
                {printf("a<b\n");}
                else if(lena>lenb)
                {printf("a>b\n");}
                else
                {
                    ok=0;
                    for(i=0;i<lena;i++)
                    {
                        if(stra[i]>strb[i])
                        {printf("a>b\n");break;}
    
                        else if(stra[i]<strb[i])
                        {printf("a<b\n");break;}
                        ok++;
                        
                    }
                    if(ok==lena)
                        printf("a==b\n");
                }
            }
            if(stra[0]=='-'&&strb[0]=='-')
            {
                if(lena<lenb)
                printf("a>b\n"); 
                else if(lena>lenb)
                printf("a<b\n"); 
                else
                {
                    ok=1;
                    for(i=1;i<lena;i++)
                    {
                    
                        if(stra[i]>strb[i])
                        {printf("a<b\n");break;}
    
                        else if(stra[i]<strb[i])
                        {printf("a>b\n");break;}
                        
                        ok++;
                    }
                    if(ok==lena)
                            printf("a==b\n");
                }
            }
        }
        return 0;
    }
    
    
                
    
        
    
    
    
            
  • 相关阅读:
    MRO C3算法 super的运用
    约束 抛异常
    反射
    Ubuntu
    Vim
    Vim
    Arithmetic
    Docker-常用命令
    Docker
    Docker-LAMP开发环境
  • 原文地址:https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_2012_07_11.html
Copyright © 2011-2022 走看看