码迷,mamicode.com
首页 > 其他好文 > 详细

大数加法

时间:2017-05-16 16:42:07      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:include   string   main   har   sizeof   大数   tail   print   cst   

http://blog.csdn.net/u010258605/article/details/44308149

参考自以上博客。

/**
    Description: 

    Arguments:

    Returns:
(1) 数据的输入

(2) 数据的存储

(3)数据的运算:进位和借位

(4)结果的输出:小数点的位置和处于多余的0 


*/
#include <cstdio>
#include <cstring>
int main()
{
    char a[500],b[500];
    scanf("%s %s",a,b);
    int lena=strlen(a),lenb=strlen(b);
    int aa[500],bb[500],cc[500];
    memset(aa,0,sizeof(aa));
    memset(bb,0,sizeof(bb));
    memset(cc,0,sizeof(cc));
    
    //将字符串转换成数组 
    for(int i=0;i<=lena-1;i++)
    {
        aa[lena-i]=a[i]-48;//倒着储存数字a[]={1,2,3},aa[]={3,2,1};从1开始的,
        
    }
    for(int i=0;i<=lenb-1;i++)
    {
        bb[lenb-i]=b[i]-48;//倒着储存数字a[]={1,2,3},aa[]={3,2,1};从1开始的, 
    }
    // 运算 进位和借位
    int th=1,x=0;//竖式运算时个位对齐,一位一位往前加;
    //x为进位的数字,th为第几位; 
     while(th<=lena||th<=lenb)
     {
         cc[th]=aa[th]+bb[th]+x; 
         x=cc[th]/10;//进位是几; 
         cc[th]%=10;//本位是几; 
         th++;//位数加一 
     } 
    cc[th]=x;
    if(cc[th]==0)//如果最高位为零就不输出,所以位数减一; 
    {
        
        th--;
    } 
    for(int i=th;i>=1;i--)
    {
        
        printf("%d",cc[i]);
    } 
    printf("\n");
} 

 

大数加法

标签:include   string   main   har   sizeof   大数   tail   print   cst   

原文地址:http://www.cnblogs.com/gao-qi/p/6862067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!