做不出来踢协会!!!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/windywo/article/details/47746941

时间限制: 1 Sec
内存限制: 128 MB
提交: 298
解决: 37
[提交][状态][讨论版]

题目描述
这是今天最水的一道题,如果没写出来的,呵呵,踢协会。

给你两个整数a和b。输出较大的数,若两个数相等输出任一个都可以。这么水啊。。。

输入
输入有多组测试数据。每组数据有a和b两个整数。

小提示:数据保证不会有前导0。

输出

输出最后结果。

样例输入
0 0
样例输出
0

这道题要考虑大数,还要考虑有负数的情况,第一次看到这道题就直接让他们比了,欠考虑。。。

我的代码

#include<cstdio>
#include<cstring>
#define maxx 100000
int main()
{
    char a[maxx],b[maxx],c[maxx];
    int len1,len2,i,j;
    while(~scanf("%s",&a))
    {
        int flag=0;
        getchar();
        scanf("%s",&b);
        len1=strlen(a);
        len2=strlen(b);
        memset(c,0,sizeof(c));
        if(a[0]=='-'&&b[0]!='-')
        printf("%s",b);
        else if(a[0]!='-'&&b[0]=='-')
        printf("%s",a);
        else if(a[0]=='-'&&b[0]=='-')
        {
            if(len1>len2)
                printf("%s",b);
            else if(len2>len1)
                printf("%s",a);
            else if(len1==len2)
            {
                for(i=0;i<len1;i++)
                {
                    if(a[i]>b[i])
                    {
                        for(j=0;j<len1;j++)
                            c[j]=b[j];
                        break;
                    }   
                    else if(a[i]<b[i])
                    {
                        for(j=0;j<len2;j++)
                            c[j]=a[j];
                        break;
                    }
                    else if(a[i]==b[i])
                        flag++;
                }
                if(flag==len1)
                    for(i=0;i<len1;i++)
                        printf("%c",a[i]);
                else
                    for(i=0;i<len1;i++)
                        printf("%c",c[i]);
            }           
        }
        else if(a[0]!='-'&&b[0]!='-')
        {
            if(len1>len2)
                for(i=0;i<len1;i++)
                    printf("%c",a[i]);
            else if(len2>len1)
                for(i=0;i<len2;i++)
                    printf("%c",b[i]);
            else if(len1==len2)
            {
                for(i=0;i<len1;i++)
                {
                    if(a[i]>b[i])
                    {
                        for(j=0;j<len1;j++)
                            c[j]=a[j];
                        break;
                    }   
                    else if(a[i]<b[i])
                    {
                        for(j=0;j<len2;j++)
                            c[j]=b[j];
                        break;
                    }
                    else if(a[i]==b[i])
                        flag++;
                }
                if(flag==len1)
                    for(i=0;i<len1;i++)
                        printf("%c",a[i]);
                else
                    for(i=0;i<len1;i++)
                        printf("%c",c[i]);
            }                       
        }
        printf("\n");
    }
    return 0;
}

大神的,看完真心觉得神奇,用strcmp函数竟然这么方便

#include<cstdio>
#include<cstring>
#define maxx 1000
int main()
{
    char a[maxx],b[maxx];
    int len1,len2;
    while(~scanf("%s",&a))
    {
        getchar();
        scanf("%s",&b);
        len1=strlen(a);
        len2=strlen(b);
        if(a[0]=='-'&&b[0]!='-')
            printf("%s\n",b);
        else if(a[0]!='-'&&b[0]=='-')
            printf("%s\n",a);
        else if(a[0]=='-'&&b[0]=='-')
        {
            if(len1==len2)
                printf("%s\n",strcmp(a,b)>0?b:a);//写成相反的,注意
            else
                printf("%s\n",len1>len2?b:a);
        }
        else if(a[0]!='-'&&b[0]!='-')
        {
            if(len1==len2)
                printf("%s\n",strcmp(a,b)>0?a:b);
            else
                printf("%s\n",len1>len2?a:b);
        }       
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/windywo/article/details/47746941