如何进行大整数加法?
需要用到数组,模拟竖式运算。
一般而言,拿数组零号元素存最低位,因为如果存最高位的话,需要考虑进位问题,要为进位预留空间。
这里以** 1234567890+9987654321 **为例
int main()
{
int a[10] ={0,9,8,7,6,5,4,3,2,1};
int b[10] ={1,2,3,4,5,6,7,8,9,9};
//求和存放的数组,因为可能有进位 ,多给他一位空间
int sum[11] = {0};
//标志进位
int carry = 0;
// 循环计算从最低位到最高位的值(假如最高位无进位)
for (int i = 0 ; i < 10 ; i ++){
int s;
s = a[i]+b[i] + carry;
carry = s/10;
sum[i] = s%10;
}
// 如果有进位 手动给进位赋值
sum[10] = carry;
for(int i = 10 ;i >=0 ; i--){
printf("%d",sum[i]);
}
}
网友评论