大数相加_超过longlong类型

多年前写的代码,现在看来写的好烂啊~

 

/*big Integer add * ->use add string*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
	char *num1 = (char*)malloc(20000), *num2 = (char*)malloc(20000), *sum  = (char*)malloc(20000);
	char *temps = (char*)malloc(20000);
	while (~scanf("%s %s",num1,num2)) {
		int len1 = strlen(num1), len2 = strlen(num2), len3;
		int i = 0, j;
		if (len1 > len2)
			len3 = len1 + 1;
		else len3 = len2 + 1;
		char temp;
		sum[i] = '0';
		while (1) {
			sum[i + 1] = '0';
			if(len2<=0)
				temp = num1[len1 - 1] + sum[i] - 2 * '0';
			else if(len1<=0)
				temp = num2[len2 - 1] + sum[i] - 2 * '0';
			else temp = num1[len1 - 1] + num2[len2 - 1] + sum[i] - 3 * '0';
			if (temp > 9) {
				sum[i] = temp - 10 + '0';
				sum[i + 1] = '1';
			}
			else {
				sum[i] = temp + '0';
				sum[i + 1] = '0';
			}
			if (len1 <= 0) 
				len2--;
			if (len2 <= 0)
				len1--;
			if (len1 > 0 && len2 > 0)
				len1--, len2--;
			if (len1 <= 0 && len2 <= 0)
				break;
			i++;
		}
		sum[len3 + 1] = '\0';
		if (sum[len3 - 1] == '0') {
			for (j = 0, i = 2; i < len3 + 1; j++, i++)
				temps[j] = sum[len3 - i];
			temps[len3 - 1] = NULL;
		}
		else {
			for (j = 0, i = 1; i < len3 + 1; j++, i++)
				temps[j] = sum[len3 - i];
			temps[len3] = NULL;
		}
		puts(temps);

    return 0;

}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值