【C语言】大数相加代码

朋友问的,就写了一下,顺便记录记录

#include <stdio.h>

void add(char* a, char* b) {
	int ret[1024] = {0};
	int location = 0;
	int lentha = strlen(a);
	int lenthb = strlen(b);
	int lenth = lentha > lenthb ? lenthb : lentha;
	int uper = 0;
	int this = 0;
	for (int i = 1; i <= lenth; i++) {
		this = (a[lentha - i] - '0' + b[lenthb - i] - '0' + uper) % 10;
		uper = (a[lentha - i] - '0' + b[lenthb - i] - '0' + uper) / 10;
		ret[location++] = this;
	}
	if (lentha == lenthb && uper == 1) {
		ret[location++] = 1;
		location--;
		for (; location >= 0; location--)printf("%d", ret[location]);
		return;
	}
	if (lentha > lenthb) {
		for (int i = lenth+1; i <= lentha; i++) {
			this = (a[lentha - i] - '0'+ uper) % 10;
			uper = (a[lentha - i] - '0'+ uper) / 10;
			ret[location++] = this;
		}
	}
	else {
		for (int i = lenth + 1; i <= lenthb; i++) {
			this = (b[lenthb - i] - '0' + uper) % 10;
			uper = (b[lenthb - i] - '0' + uper) / 10;
			ret[location++] = this;
		}
	}
	if (uper == 1)ret[location++] = 1;
	location--;
	for (; location >= 0; location--)printf("%d", ret[location]);
}
int main() {
	add("534234555", "5555");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值