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

C语言 简单易懂的高精度加法

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

C语言 简单易懂的高精度加法

场景

 我想大家在小学刚学开始学习列式计算时,应该都有被老妈拎着耳朵说怎么又忘记进一了,都幻想有个机器可以帮自己计算,现在你算看到的高精度加法就是这个原理。


问题描述

它关键的点有简单的几个

1.数据存储问题

当我们的 int 和 longlong也没有办法满足这个数的存储大小时我们该怎么办?

首先想到的就是拆分啊,把一个很长很长的数字拆成一位又一位这样不就方便储存了,这就用到了数组存储的方法

2.拆分之后怎么进行运算

这就简单多了,就和我们小学学的一样满十进一原则

知道这些就ok了,下面看看代码的展示吧!


代码展示
#include
#include
char s1[505],s2[505];
int a[505],b[505],c[505];//定义里面外面都可以
int main()
{
	int la,lb,lc;
	scanf("%s",s1);
	scanf("%s",s2);//由于不知道数字的长度,先将其定义为字符型·
	la=strlen(s1);//直接计算长度没有‘/0’
	lb=strlen(s2);
	for(int i=0;ila)?(lb+1):(la+1);//运用三目运算符,由于不论数有多大最大就是最长长度+1
	for(int i=0;i<=lc;i++)
	{
		c[i]+=a[i]+b[i];//由于c[i]可能不为0,所以也要参与累加
		c[i+1]=c[i]/10;//进位
		c[i]=c[i]%10;//取余
	}
	if(c[lc]==0&&lc>0)//如果最高为0,就将其去除
		lc--;
	for(int i=lc;i>0;i--)
		printf("%d",c[i]);	
	return 0;
}

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

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

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