永发信息网

杭电ACM HDOJ 1002 高精度加法 我的程序哪里错了?请测试下.

答案:3  悬赏:30  手机版
解决时间 2021-01-09 01:35
  • 提问者网友:战魂
  • 2021-01-08 12:19
杭电ACM HDOJ 1002 高精度加法 我的程序哪里错了?请测试下.
最佳答案
  • 五星知识达人网友:轻雾山林
  • 2021-01-08 13:12
你的答案是完全正确的,只是你不能先把“Case”打出来再输入。
所以你要把这句printf("Case %d:\n",k);放到scanf("%s",a);后面,printf("%s + ",a);的前面,修改后就能AC了。
全部回答
  • 1楼网友:玩家
  • 2021-01-08 14:51

Case输出的顺序不对。。。
我AC代码,仅供参考。。
#include
#include
int main()
{
    int t;
    int i,j,k;
    int len1,len2;
    char a[100000],b[100000],c[100000];
    scanf("%d",&t);
    for(k=1;k<=t;k++)
    {
        scanf("%s %s",a,b);
        printf("Case %d: ",k);
        printf("%s + %s = ",a,b);
        len1=strlen(a);
        len2=strlen(b);
        if(len1==len2)
        {
            for(i=len1-1;i>=0;i--)
                c[i]=a[i]+b[i]-'0';
            for(i=len1-1;i>0;i--)
            {
                if(c[i]>'9')
                {
                    c[i]-=10;
                    c[i-1]+=1;
                }
            }
            if(c[0]>'9')
            {
                printf("1");
                c[0]-=10;
            }
            for(i=0;i                printf("%c",c[i]);
            printf(" ");
        }
        else if(len1>len2)
        {
            for(i=0;i                c[i]=a[i];
            for(i=len1-len2,j=0;i                c[i]=a[i]+b[j]-'0';
            for(i=len1-1;i>0;i--)
            {
                if(c[i]>'9')
                {
                    c[i]-=10;
                    c[i-1]+=1;
                }
            }
            if(c[0]>'9')
            {
                printf("1");
                c[0]-=10;
            }
            for(i=0;i                printf("%c",c[i]);
            printf(" ");
        }
        else
        {
            for(i=0;i                c[i]=b[i];
            for(i=len2-len1,j=0;i                c[i]=a[j]+b[i]-'0';
            for(i=len2-1;i>0;i--)
            {
                if(c[i]>'9')
                {
                    c[i]-=10;
                    c[i-1]+=1;
                }
            }
            if(c[0]>'9')
            {
                printf("1");
                c[0]-=10;
            }
            for(i=0;i                printf("%c",c[i]);
            printf(" ");
        }
        if(k            printf(" ");
    }
    return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯