hd_1002

来源:互联网 发布:java多线程编程例子 编辑:程序博客网 时间:2024/06/14 16:14
#include<stdio.h>
#include<iostream>
#include <string.h>
using namespace std;
int main()
{
    int n,m=0,g,c,i,j,length;
    char a[1005],b[1005];

    scanf("%d",&n);
    getchar();
    g=n;
    while(n--)
    {
        int a1[1005]={0},b1[1005]={0},c1[1005]={0};
        m++;
        int len1,len2;
        i=0,j=0,c=0;
        scanf("%s %s",a,b);//123 789
        getchar();
        len1=(int)strlen(a);//获取字符串长度
        len2=(int)strlen(b);
        while(i<(int)strlen(a))//将字符转换位数字 反向存储
        {
             a1[--len1]=(int)a[i]-48;//321  
             i++;
        }
        while(j<(int)strlen(b))//将字符转换位数字 反向存储
        {
           b1[--len2]=(int)b[j]-48;//987
           j++;
        }
        len1=(int)strlen(a);//重新获取长度
        len2=(int)strlen(b);
        for(i=len1-1;i>=0;i--)//处理0,就是0在开头的数
        {
               if(a1[i]==0)//反向后,0在结尾
               {
                 len1--;//如果是0,长度减一,0就没有了
               }
               else if(a1[i]!=0)//否则跳出循环
               {
                 break;
               }
        }
        for(i=len2-1;i>=0;i--)
        {
           if(b1[i]==0)
           {
             len2--;
           }
           else if(b1[i]!=0)
           {
             break;
           }
        }
       length=(len1<len2)?len2:len1;//找出最长的
      if(len1==0&&len2==0)//如果输入为0   0000   000   经过减0处理都为0
      {
         printf("Case %d:\n%s + %s = 0",m,a,b);//输出0
         printf("\n");
            if(n>=1)printf("\n");
        continue;
      }
       for(i=0;i<length;i++)//相加  进位运算
       {
         c1[i]=(a1[i]+b1[i]+c)%10;
         c=(a1[i]+b1[i]+c)/10;//a1[i]+b1[i]>=10 进一位
       }
       if(c==1) //如果进位
       {
         c1[length]=1;//末尾加1 反向输出时即为第一位
         printf("Case %d:\n%s + %s = ",m,a,b);
         for(int i=length;i>=0;i--)//反向输出
         {
            printf("%d",c1[i]);
         }
            printf("\n");
            if(n>=1)printf("\n");
       }
       else
       {
           printf("Case %d:\n%s + %s = ",m,a,b);
           for(int i=length-1;i>=0;i--)
         {
            printf("%d",c1[i]);
         }
            printf("\n");
            if(n>=1)printf("\n");
       }
    }
    system("pause");
    return 0;
}
原创粉丝点击