两个超大数相加算法

简介:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/************************************************************************/
/* 功能:实现两个超大数相加
/* 参数:source1 -- 被加数,字符型数组,如12
/*       source2 -- 加数,字符型数组,
/*       result  -- 存放和,字符型数组
/************************************************************************/
void Add(char *source1, char *source2, char *result)
{
	int len1 = strlen(source1);
	int len2 = strlen(source2);
	int len = len1 >= len2 ? len1 : len2;
	int i = len1 - 1, j = len2 - 1, k = 0;
	char *temp = (char *)malloc(sizeof(char) * (len + 2));
	char x, y, z;
	int carryBit = 0;
    
	while (i >= 0 || j >= 0)
	{
		if (i < 0) x = '0'; 
		else x = source1[i];

		if (j < 0) y = '0';
		else y = source2[j];

		z = x + y - '0' - '0' + carryBit;
        temp[k++] = z % 10 + '0';
		carryBit = z / 10;

		i--;
		j--;
	}

	while (carryBit)
	{
		temp[k++] = carryBit % 10 + '0';
		carryBit /= 10;
	}

	for (--k, i = 0; k >= 0; k--, i++)
	{
		result[i] = temp[k];
	}
	result[i] = '\0';

	free(temp);// 释放内存
}

int main()
{
	char source1[1000];
	char source2[1000];
	char result[1100];

	scanf("%s%s", source1, source2);
	Add(source1, source2, result);

	printf("%s\n", result);
	return 0;
}

目录
相关文章
|
存储 前端开发 算法
链表两数相加使用JavaScript解题|前端学算法
链表两数相加使用JavaScript解题|前端学算法
142 0
链表两数相加使用JavaScript解题|前端学算法
|
算法 PHP
力扣(LeetCode)算法题解:258. 各位相加
力扣(LeetCode)算法题解:258. 各位相加
76 0
|
存储 算法 Java
算法打卡Day27_leetcode _415字符串相加
算法打卡Day27_leetcode _415字符串相加
算法打卡Day27_leetcode _415字符串相加
|
算法
|
存储 算法 安全
【算法社区】链表之两数相加
字节跳动企业题库,链表系列,从出题频率最高刷到最低,题目有2. 两数相加
【算法社区】链表之两数相加
|
存储 算法 Java
【算法攻坚】链表两数相加
【算法攻坚】链表两数相加
86 0
|
存储 算法 JavaScript
LeetCode 2. 两数相加 | 算法-从菜鸟开始
本文是《算法-从菜鸟开始》系列文章的第3篇,欢迎收藏、留言、点赞。 不积跬步无以至千里,不积小流无以致江海,让我们继续在算法的海洋里遨游。
108 0
|
存储 算法 C#
C#算法题系列(二)各位相加、 整数反转、回文数、罗马数字转整数
C#算法题系列(二)各位相加、 整数反转、回文数、罗马数字转整数
147 0
|
存储 算法
☆打卡算法☆LeetCode 2、两数相加 算法解析
“将两个链表中的数字组合成两个数,两个数相加,并返回一个相同格式的表示和的链表。”
|
存储 算法
从0刷算法---两数相加
题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8] 解释:342 + 465 = 807. 示例 2: 输入:l1 = [0], l2 = [0] 输出:[0] 示例 3: 输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9] 输出:[8,9,9,9,0,0,0,1]