c/c++大整数加法

刚入门编程语言的同学可能对大整数加法合乘法有点小头疼。在这里就给大家分享下。希望对大家有所帮助。下面进入正题

Description

求两个不超过200位的非负整数的和。

Input

有两行,每行是一个不超过200位的非负整数,没有多余的前导0。

Output

一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。

Sample Input

22222222222222222222

33333333333333333333

Sample Output

55555555555555555555

代码:

#include <stdio.h>

#include<string.h>

int main(int argc, char *argv[])

{

    int a[200]={0},b[200]={0},i,j,m,l,k,t,h;

    char aa[200],bb[200];

    scanf("%s%s",&aa,&bb);

    l=strlen(aa);              //  计算aa长度

    t=strlen(bb);                 //  计算bb长度

    for(m=0,j=l-1;j>=0;j--,m++)

        a[m]=aa[j]-'0';                //要把字符转化成数字

    for(m=0,j=t-1;j>=0;j--,m++)

        b[m]=bb[j]-'0';                 //要把字符转化成数字

    h=l>t?l:t;

    for(i=0;i<h ; i ++)

        a[i]+=b[i];                        //将相对应的数字相加

//下面这一步是将超过10的位数进位

    for(i=0;i<h;i++)

        if(a[i]>=10)

      {

          a[i+1]=a[i+1]+a[i]/10;

         a[i]%=10;

      }

//这里要倒着输出哦!!!

       for(i=h;i>=0;i--)

        if(a[i]==0)continue;

        else{    k=i;break;    }

        for(i=k;i>=0;i--)

           printf("%d",a[i]);

    printf("\n");

    return 0;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容