HDU 1002 A + B Problem II(模拟)

题目链接:Click here~~

今天无聊,把A + B Problem II用字符串做了一遍。感觉挺有成就感的,所以记录下来吧。

#include <stdio.h>
#include <string.h>
#define M 1005
//#include <stdlib.h>
//#define creat (char *)malloc(sizeof(char))
int main()
{
    //char *a,*b,*f;
    //a=creat; b=creat; f=creat;/*当数字位数大时会有BUG。后来直接用数组就没BUG了。不知道为什么。*/
    char a[M],b[M],f[M];
    int z;
    scanf("%d",&z);
    for(int k=1;k<=z;k++)
    {
        memset(f,'0',sizeof(f));
        scanf("%s%s",a,b);
        int i,la=strlen(a)-1,lb=strlen(b)-1;//la代表a[]的下标,lb代表b[]的下标
        for(i=0;la>=0 && lb>=0;i++)
        {
            f[i]+=a[la--]-'0'+b[lb--]-'0';
            if(f[i]>'9')
            {
                f[i+1]++;
                f[i]=(f[i]-'0')%10+'0';
            }
        }
        if(la>=0)
        {
            for(;la>=0;i++)
            {
                f[i]+=a[la--]-'0';
                if(f[i]>'9')
                {
                    f[i+1]++;
                    f[i]=(f[i]-'0')%10+'0';
                }
            }
        }
        if(lb>=0)
        {
            for(;lb>=0;i++)
            {
                f[i]+=b[lb--]-'0';
                if(f[i]>'9')
                {
                    f[i+1]++;
                    f[i]=(f[i]-'0')%10+'0';
                }
            }
        }
        printf("Case %d:\n%s + %s = ",k,a,b);
        for(i=(f[i]=='0'?i-1:i);i>=0;i--)
            printf("%c",f[i]);
        printf("\n");
        if(k!=z)
            printf("\n");
    }
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值