【高精度】加法

核心思想:利用数组处理每位

int* bignumPlus(char *a1, char *b1){
	int   a[10000], b[10000], c[10000];
	int flag, len_a, len_b, len_c;
	memset(a, 0, sizeof(a));
	memset(b, 0, sizeof(b));
	memset(c, 0, sizeof(c));
	//scanf("%s,%s", &a1, &b1);
	len_a = strlen(a1);
	len_b = strlen(b1);
    //将数字倒序处理
	for (int i = 0; i < len_a; i++){
		a[len_a - i - 1] = a1[i] - '0';
	}
	for (int i = 0; i < len_b; i++){
		b[len_b - i - 1] = b1[i] - '0';
	}

    //每位进行相加,进位处理
	flag = 0;//进位标志
	len_c = 0;
	for (len_c = 0; len_c < len_a || len_c < len_b; len_c++){
		c[len_c] = a[len_c] + b[len_c] + flag;
		flag = c[len_c] / 10;
		c[len_c] %= 10;
	}
	if (flag != 0) c[len_c] = flag;
	else len_c--;
	c[len_c + 1] = '\0';

    //将数字倒序处理
	for (int i = 0, j = len_c; i < j; i++, j--){
		int tmp;
		tmp = c[i];
		c[i] = c[j];
		c[j] = tmp;
	}
	return c;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值