大整数之加法(无符号)

本文介绍了如何进行大整数的高精度加法运算。针对非负整数,首先将字符串数组倒序存储到整型数组,然后进行加法运算。在运算过程中,根据和是否大于等于10来决定是否进位。最后,倒序输出结果。通过实例解释了位数不变和增加的情况。
摘要由CSDN通过智能技术生成

一、高精度加法

思路:

前提:非负整数
1、将字符串数组倒序存储到整型数组中(倒序存储和正序存储皆可)
void change(char *str, int *sub);str是将要转换的字符数组,sub是转换为数字的整型数组

2、开始加法运算
情况一、两数相加后位数不变
假设输入字符串a为"28", 字符串b为"34",倒序存储后整数数组为:
a转为82 (存储在m数组)
b转为43 (存储在n 数组)
相同的位数进行相加,若和大于等于10,保留和的个位数,然后进1
8+4 = 12 > 10, 保留个位数2,然后进1(这里的进1:给整数82的数字2加1,即2变成3)
3+3 = 6 < 10, 保留个位数6,不需要进1;
s所以结果为26,由于之前是倒序相加,所以最终结果还需要倒序输出,所以为62,位数不增加

情况二、两数相加后位数增加
假设输入字符串a为"87", 字符串b为"34",倒序存储后整数数组为:
a转为78 (存储在m数组)
b转为43 (存储在n 数组)
7 + 4 = 11 > 10,保留个位数1,然后进1
9 + 3 = 12 > 10,保留个位数2,然后进1,关键就在这个地方,当最后一个相同位数相加时,如果大于等于10,这时候位数会加1。

3、倒序输出

代码如下

/*大整数的高精度加法*/
#include<stdio.h>
#include<string.h>
#define MAX 1000

void change(char *str, int *sub) {
   
	int len = strlen(str)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值