大数相加_原创
所谓的大数就是用整形存不下的数;
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;