首页 > 代码库 > 大数相加_原创

大数相加_原创

所谓的大数就是用整形存不下的数;

EG : 123466789123456789

由于数组能够进行逐操作;

所以考虑到用数组来逐一存放这个大数的每一位元素;

这时候问题来了;

 

1 怎么解决该数的输入以及将其存放到数组里面;

2 如何解决进位;

3 万一第一位是0如何解决;

 

C语言有一种输入方法为%s;

也就是所谓的字符串输入;

与%c不同的是%s可以以空格为结束标识符;

那么现在我们用一个字符型数组  ch[] 来输入该数;

现在

ch[1]=‘1‘;

ch[2]=‘2‘;

目前的元素都为字符型;

现在要将其转化为整形来对其操作;

同样用整形数组 a[]; b[]; 来存储;

1=‘1‘-‘0‘;

为了方便操作;

我将其倒叙存放;

目前;

a[1]=9; a[2]=8;

数据的存放便解决了;

 

先比较这两个数组的长度;

取最大记为L;

用一个整形数组来存储ans;

现在来解决进位;

for(int i=0;i<L;i++)

{

  c[i]=a[i]+b[i];      //记录每个位的答案;

     if(c[i]>=10)         //需要进位;

  {

    c[i++]++;    //向前一位进1;

    c[i]-=10;

  }

}

最后还有最后一点那就数判0;

声明:c[0]存储个位;

if(c[L]!=0)

L=L+1;

 

for(int  i=L;i>0;i--)

cout<<c[i];

 

OVER;

 

大数相加_原创