大数加法

#include"stdio.h"
#include"string.h"
#define NM 1001
char a[NM],b[NM],sum[NM+1]={0};
int main()
{
    int n,i,j,la,lb,k,l;
    scanf("%d",&n);//确定要计算多少组数
    for(i=1;i<=n;i++)
    {
        scanf("%s%s",a,b);
      //  因大数所几十位上百位里能超过1001位
//所数值类型都能表示出来只好用字符数组来表示
     la=strlen(a);//得输入数据位数
        lb=strlen(b);
        //把每位数分别加sum项用sum[0]表示位sum[1]表示十位
        for(j=la-1,k=0;j>=0;j--)
	sum[k++]=a[j]-'0';//得每位表示数大小
        for(j=lb-1,k=0;j>=0;j--) 
	sum[k++]+=b[j]-'0';//与上面相应数相加此时某项大于等于10
        l=la>lb?la:lb;//得长数据长度
        for(j=0;j<l;j++) //逐扫描数据数组
            if(sum[j]>=10)//某项大于等于10进位
           {
	sum[j]-=10;
	sum[j+1]++;
          }
/*notice here sum[j]>=10 not sum[j]>10*/
      if(sum[j]) //总体进位多位数总长度加
	l++;
      printf("Case %d:\n%s + %s = ",i,a,b);
     for(j=l-1;j>=1;j--)//逆序打印即打印所谓位
    {
       printf("%d",sum[j]);
       sum[j]=0;
   }
      printf("%d\n",sum[0]);//先把数组第位置0下轮做准备
      if(i<n) //还初定好轮数换行
           printf("\n");
    }
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值