栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

高精度加法(C语言)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

高精度加法(C语言)

学过编程的我们都知道,编写一个long long类型范围内的加法计算器很简单,但加数的范围超过了long long的范围,这时我们该怎么办呢?

表示多个数的数据类型在c语言里有数组和字符串,这个时候我们可以用数组或字符串来储存这个范围非常大的数据,用数组模拟小学学过的竖式计算,从低位开始相加,产生进位,保留个位。

这里注意,我们要想用数组模拟数学的竖式计算,但他们还是有些许的不同。因为如果两个加数的位数不一样,两个模拟加数的数组他们的下标是对不齐的,这个时候进行逆序处理会比较好。(文字描述还是有点抽象,下面用图说明问题)

图片来源
CSDN博主「zimegll」
原文链接:https://blog.csdn.net/qq_40790042/article/details/119846094

数学的竖式加法计算

图片来自CSDN博主「zimegll」

数组模拟竖式计算

逆序之前

图片来自CSDN博主「zimegll」

 逆序之后(方便进行各位相加)

图片来自CSDN博主「zimegll」

但是数组和字符串各有优缺点。

数组:每个数组元素储存一位数,数组的优点是可以直接进行加减计算,而缺点却是无法直接输入,每位数之间需要有分隔符,这不符合数值输入的习惯。
字符串:字符串的优点便是可以直接输入,符合数值输入的习惯,但是它每一个元素储存的是一个字符而不是数字,不可以直接进行运算。

所以两者结合,用字符串输入,用数组进行运算输出。

下面来看代码如何实现。

#include
#include
#define MAX 66
int main()
{
	char str[MAX];
	int arr1[MAX]={0},arr2[MAX]={0},temp,temp1,temp2,i,j;
	scanf("%s",str);
	temp1=strlen(str);//计算str的长度
	for(i=0;itemp2)?temp1:temp2;
	for(i=0;i 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/955065.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号