`
lovnet
  • 浏览: 6704960 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

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;
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics