HDU1002

#include <stdio.h>
#include <string.h>
#define MAX 1000
int a1[MAX+100];
int a2[MAX+100];
char str1[MAX+100];
char str2[MAX+100];
int main()
{
    int N, k;
    scanf("%d",&N);
    for(k=1;k<=N;k++)
    {
        scanf("%s%s",str1,str2);
        memset(a1,0,sizeof(a1));   //数组全部赋值为0
        memset(a2,0,sizeof(a2));
        int i, j, len1, len2;
        len1=strlen(str1);
        len2=strlen(str2);
        /*for(i=MAX+100-1;i>=0;i--)
        printf("%d",a1[i]);
        printf("\n");
        printf("**********************************\n");*/
        for(i=len1-1,j=0;i>=0;i--)    //把数字按右对齐的方式存放在整型数组中
        {
            a1[j++]=str1[i]-'0';   //字符型转化成整型数
        }
        /*for(i=MAX+100-1;i>=0;i--)
        printf("%d",a1[i]);
        printf("\n");
        printf("**********************************\n");*/
        for(i=len2-1,j=0;i>=0;i--)
        {
            a2[j++]=str2[i]-'0';
        }
        for(i=0;i<MAX+100;i++)
        {
            a1[i]+=a2[i];
            if(a1[i]>=10)     //看是否进位
            {
                a1[i]=a1[i]-10;
                a1[i+1]++;     //进位的话它的下一位的加1
            }
        }
        /*for(i=MAX+100-1;i>=0;i--)
        printf("%d",a1[i]);*/
        printf("Case %d:\n",k);
        printf("%s + %s = ",str1,str2);
        for(i=MAX+100-1;i>=0;i--)   //注意起点是MAX+100-1并不是MAX+100要不然就要出错,切忌这点
        {
            if(i>=0&&a1[i]!=0)
            {
                for(;i>=0;i--)
                printf("%d",a1[i]);
                printf("\n");
            }
            else if(i==0&&a1[i]==0)
            printf("0\n");
        }
        if(k<N)           //需要注意这点的,最后一个并没有换行的,要不然你就要PE了
        printf("\n");

    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值