两个超大数相加算法

简介:
#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;
}

目录
相关文章
|
存储 算法 Java
算法打卡Day27_leetcode _415字符串相加
算法打卡Day27_leetcode _415字符串相加
算法打卡Day27_leetcode _415字符串相加
|
存储 前端开发 算法
链表两数相加使用JavaScript解题|前端学算法
链表两数相加使用JavaScript解题|前端学算法
178 0
链表两数相加使用JavaScript解题|前端学算法
|
算法
|
算法 PHP
力扣(LeetCode)算法题解:258. 各位相加
力扣(LeetCode)算法题解:258. 各位相加
109 0
|
存储 算法 安全
【算法社区】链表之两数相加
字节跳动企业题库,链表系列,从出题频率最高刷到最低,题目有2. 两数相加
【算法社区】链表之两数相加
|
存储 算法 JavaScript
LeetCode 2. 两数相加 | 算法-从菜鸟开始
本文是《算法-从菜鸟开始》系列文章的第3篇,欢迎收藏、留言、点赞。 不积跬步无以至千里,不积小流无以致江海,让我们继续在算法的海洋里遨游。
136 0
|
存储 算法 C#
C#算法题系列(二)各位相加、 整数反转、回文数、罗马数字转整数
C#算法题系列(二)各位相加、 整数反转、回文数、罗马数字转整数
190 0
|
存储 算法
☆打卡算法☆LeetCode 2、两数相加 算法解析
“将两个链表中的数字组合成两个数,两个数相加,并返回一个相同格式的表示和的链表。”
|
存储 算法 Java
【算法攻坚】链表两数相加
【算法攻坚】链表两数相加
122 0
|
存储 机器学习/深度学习 算法
《三分钟-算法修行》两数相加之解与应用
《三分钟-算法修行》两数相加之解与应用
142 0
《三分钟-算法修行》两数相加之解与应用

热门文章

最新文章