高精度加法(C语言实现)

2023-11-02

高精度,是学C语言漫长的路上必须要学的一类程序
>>>高精度模板( 加,减,乘低精高精,除低精高精(有余数),高精阶乘(200000以内) ) (C语言实现)(注释多多)<<<
>>>高精度加法(C语言实现)<<<
>>>高精度减法(C语言实现)<<<
>>>高精度乘法(高精乘低精)(C语言实现)<<<
>>>高精度乘法(高精乘高精)(C语言实现)<<<
>>>高精度除法(高精除低精)(C语言实现)<<<
那么,先来讲一下高精度加法吧!


源代码&注释

//小程序版
#include<stdio.h>
#include<string.h>
char s[10100],ss[10100];
int a[10100],b[10100];
int len;

void jia()     //自定义函数"jia"(名字low了一点(好像不是一点,但容易理解不是吗)) 
{
	int l1 = strlen(s);     //"strlen"是一个计算字符串长度的函数 
	int l2 = strlen(ss);    //将输入的两个字符串的长度赋值给l1,l2
	if (l1 > l2) 
		len = l1;      //将len赋值为l1,l2中大的那个 
	else 
		len = l2;
//		for (int i = 0 ; i <= len ; i++)  //清零(这里for循环和下面三句memset都为将字符串清零 ) 
//			a[i] = b[i] = c[i] = 0;
	memset(a,0,sizeof(a));    //清零too(只能清零,不能干别的) 
	memset(b,0,sizeof(b));    //这是清零函数(字符串) 
	                                       //两个for循环是将输入的两个字符串倒过来
	for (int i = l1 - 1 ; i >= 0 ; i--)    //再将字符串里的字符转换为数字赋值给a,b整型数组 
		a[l1 - i - 1] = s[i] - '0';        //但为什么大数要用字符串存呢?
	for (int i = l2 - 1 ; i >= 0 ; i--)    //因为大数太大,用任何整型变量都存不下 
		b[l2 - i - 1] = ss[i] - '0';       //为什么要把字符串倒过来赋值呢? 
	                                //因为大数与大数是一位一位运算的,还要涉及进位等 
	for (int i = 0 ; i < len ; i++)
	{
		a[i] = a[i] + b[i];    //运算 
		a[i+1]+= a[i] / 10;    //如有进位,在后一位上加上 
		a[i] = a[i] % 10;      //原来那一位减掉进位了的 
	}
	if (a[len] != 0) len++;    //如果有进位就多显示一位(这句话很重要) 

	while (a[len - 1] == 0 && len>1) len--;		//我叫它while去零法
		
	for (int i = len - 1 ;i >= 0 ;i--)  //输出结果 
		printf("%d",a[i]);
	printf("\n");
}                              //高精度加法你懂了吗?

int main()
{
	printf("高精度加法(By STY)\n\n");
	printf("退出请按“Ctrl+Z”(在键盘上),并按回车,谢谢使用!\n"); 
    printf("请输入两个数字:\n");
    printf("数字:(用空格隔开)\n");
	while (scanf("%s%s",s,ss)!=EOF)
	{
        printf("\n结果:\n"); 
		jia();     //引用高精度加法函数
        printf("\n\n");
        printf("高精度加法(By STY)\n\n"); 
        printf("退出请按“Ctrl+Z”(在键盘上),并按回车,谢谢使用!\n");
	    printf("请输入两个数字:\n");
	    printf("数字:(用空格隔开)\n");
	}
	return 0;
}

思路

这就是高精度加法的整段代码,
思路就是:因 int 变量最大只能存2147483647 ( 即 2 32 − 1 ) (即2^{32}-1) 2321)这么大的数,存不了更大的数了,
所以只能把一个大数一位一位存入数组中,并进行相应的运算,
当然还有进位等一系列麻烦的问题,使得高精度运算是个难题
这些在上面的"源代码&注释"中解决了这些问题,
希望大家在看了这篇文章后理解和会使用高精度加法的运算了


希望大家喜欢这篇文章!!!
如有问题请留言,谢谢!!!
>>>我的博客<<<

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高精度加法(C语言实现) 的相关文章

随机推荐

  • 这次总结的有点多(python)

    关键字不定长参数 可以接收多个未定义参数的关键字赋值 关键字不定长参数的格式 def 函数名 kwargs 函数体 TypeError a is an invalid keyword argument for print def func
  • java中代码和注释缩进_java编码规范_缩进和注释

    1 缩进排版 Indentation 4个空格常被作为缩进排版的一个单位 缩进的确切解释并未详细指定 空格vs 制表符 一个制表符等于n个空格 视具体的编辑器而定 Eclipse默认一个制表符为4个字符 3 1行长度 Line Length
  • ldconfig用法

    1 ldconfig简介 参考 http man linuxde net ldconfiglinux中ldconfig的使用介绍 chenzixun0的博客 CSDN博客 主要是在默认搜寻目录 lib和 usr lib以及动态库配置文件 e
  • (Redis):string介绍及应用

    目录 数据存储类型介绍 string redis 数据存储格式 string 类型 string 类型数据的基本操作 单数据操作与多数据操作的选择 string 类型数据的扩展操作 string 作为数值操作 string 类型数据操作的注
  • 蓝桥杯-2017-魔方状态-python3

    标题 魔方状态 二阶魔方就是只有2层的魔方 只由8个小块组成 如图p1 png所示 小明很淘气 他只喜欢3种颜色 所有把家里的二阶魔方重新涂了颜色 如下 前面 橙色 右面 绿色 上面 黄色 左面 绿色 下面 橙色 后面 黄色 请你计算一下
  • 实现 App 自动检测更新(Vue3 + Ionic + Cordova + Capacitor)

    目录 一 实现 App 自动检测更新的原理 1 效果 2 原理 二 实现 App 自动检测更新的实践 1 需要安装的插件 1 1 capacitor 1 2 cordova 2 封装 app update main ts 应用检查更新 入口
  • 一个合格的测试工程师必须掌握的技能

    通常情况下一位软件测试工程师需要具备哪些必须的技能 最佳隐形技能 开发语言知识背景 对被测试对象使用的语言有一定的了解 这样有助于测试工作的开展 同时 与开发人员之间的沟通协作也将更顺畅 计算机语言都具有一定的共通性 只要你深刻了解了一门语
  • C++ vector::assign的使用

    一 assign函数介绍 函数原型 void assign const iterator first const iterator last void assign size type n const T x T 功能 将区间 first
  • 安装oracle提示:SQL Developer requires a minimum of Java 8 解决方案

    电脑上安装了Java 12 在安装oracle时候提示 SQL Developer requires a minimum of Java 8 无法进行下一步 解决方案是 卸载已安装Java版本 重新卸载Java 8 oracle只能在Jav
  • SAP-MM:收货转储时提示 M7053“只能在公司代码 **** 的期间 2014/04 和 2014/03 中记账”

    错误信息 消息号M7053 解决方法 Step 1 使用MMPV进入 关闭账期 界面 Step 2 输入 公司代码 期间 会计年度 后 执行 F8 Step 3 使用MMRV进入 查看打开的账期 界面 当前期间仍为 2014 04 Step
  • TCP三次握手连接和四次握手断开

    1 为啥TCP连接需要3次握手 为啥TCP断开需要4次握手 解释1 解释2 解释3 解释4 解释5 解释6 解释7 解释8 解释9 总结 1 全双工 每个方向单独关闭 Client端必须等待Server端关闭后才可以关闭 中间时间不确定 所
  • 【操作系统】王道考研 p27 管程

    管程 知识总览 为什么要引入管程 为了简化PV 管程的定义和基本特征 管程的特点 用管程解决生产者消费者问题 Java总类似管程的机制 总结
  • 百万秒级Id随机生成器不重复

    package com careye common base import com careye common tool IDManager import java util HashMap import java util Map imp
  • OSI与TCP/IP模型区别

    OSI与TCP IP模型区别 1 OSI分七层 而TCP IP分四层 它们都有网络层 或称互联网层 传输层和应用层 但其他的层并不相同 2 OSI模型的网络层同时支持无连接和面向连接的通信 但是传输层上只支持面向连接的通信 TCP IP模型
  • 关于PHP流不得不说的那些事

    关于PHP流不得不说的那些事 相信不少PHP开发者或多或少都见过类似于 php input 或者 php output 这样的内容 很多人都知道这两个的作用一个是接收的 POST 请求中的原始 body 内容 另一个其实和 echo 之类的
  • (短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码

    一 阿里云准备工作 1 阿里云短信服务 注册账号 阿里云官网 https www aliyun com 点击官网首页注册按钮 2 阿里云短信服务 设置短信签名 阿里云提供测试的签名 暂时可以跳过 注册成功后 点击登录按钮进行登录 登录后进入
  • 华为OD机试 - 全量和已占用字符集(Java)

    题目描述 给定两个字符集合 一个是全量字符集 一个是已占用字符集 已占用字符集中的字符不能再使用 要求输出剩余可用字符集 输入描述 输入一个字符串 一定包含 前为全量字符集 后的为已占用字符集 已占用字符集中的字符一定是全量字符集中的字符
  • 【WIN7】基本【网络参数配置】

    可视化界面 步骤 控制面板 网络和Internet 网络和共享中心 连接 本地连接 属性 Internet协议版本4 TCP IPv4 属性 需要手动更改的有 IP地址 子网掩码 默认网关 DNS服务器 示例 IP地址 192 168 1
  • Java:贪心排序,求学校的位置

    解题思路 用双重for循环计算每个点到其它点的路径之和 取路径之和最小且位置最小的点为学校 import java util 求无向完全图的单源最短路径 public class Main public static void main S
  • 高精度加法(C语言实现)

    高精度 是学C语言漫长的路上必须要学的一类程序 gt gt gt 高精度模板 加 减 乘低精高精 除低精高精 有余数 高精阶乘 200000以内 C语言实现 注释多多 lt lt lt gt gt gt 高精度加法 C语言实现 lt lt