您的位置:首页 > 其它

2013年4月_武科大程序设计大赛(复赛-非专业组)_解题报告(problem 1004)

2013-04-09 13:45 316 查看
高进度加法,细心一点就行,就是模拟自己手算的过程。

//高精度加法(模拟)
#include<stdio.h>
#include<string.h>

char a[1100],b[1100];
int sum[1100];

int calc()
{
    int i,j,lena,lenb;
    lena=strlen(a);
    lenb=strlen(b);
    for (i=lena-1;i>=0;i--)
        sum[lena-1-i]=a[i]-'0';
    for (i=lenb-1;i>=0;i--)
        sum[lenb-1-i]+=b[i]-'0';
    if (lena>lenb)
        j=lena;
    else
        j=lenb;
    for (i=0;i<=j+1;i++)
        if (sum[i]>=10)
        {
            sum[i+1]+=sum[i]/10;
            sum[i]=sum[i]%10;
        }
    return j;
}

int output(int i)
{
    int j;
    for (j=i+1;j>=0;j--)
        if (sum[j])
            break;
    printf("%s + %s = ",a,b);
    for (i=j;i>=0;i--)
        printf("%d",sum[i]);
    printf("\n");
    return 0;
}

int main()
{
    int n,i;
    scanf("%d",&n);
    for (i=0;i<n;i++)
    {
        scanf("%s%s",a,b);
        memset(sum,0,sizeof(sum));
        printf("Case %d:\n",i+1);
        output(calc());
        if (i<n-1)
            printf("\n");
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐