高精度之加减乘除之多解总结(加与减篇)

开篇总述:精度计算的教学比较杂乱,无系统的学习,且存在同法多线的方式进行同一种运算,所以我写此篇的目的只是为了直指本质,不走教科书方式,步骤冗杂。

一,加法

我在此讲两种方法:

1,首先科普常识:

length()和size()函数不可统计字符型数组大小;sizeof返回的是总数组

2,为什么字符型数组可以直接接收输入而不用索引接收

原因:​数组名的隐式转换规则​ 和 ​输入函数的设计机制

(1)数组名的隐式转化:

在代码中直接使用字符型数组组名,它会 ​自动退化为指向数组首元素的指针​。

s1 作为指针传递了数组的起始内存地址,输入函数(如 scanf)会从该地址开始 ​连续写入字符,直到遇到终止符(如空格、换行或字符串结束符 \0

(2)输入函数工作机制:

以 scanf("%s", s1) 为例:

  1. 按格式读取​:%s 表示按字符串格式读取输入。
  2. 连续内存写入​:
    • 从 s1 的起始地址开始,逐个写入字符到 s1[0]s1[1]s1[2]...
    • 自动在末尾添加 \0 终止符(因此数组长度需足够大)

3,为什么其他数组不能一次输入连续读入

  • 字符数组的特殊性​:
    • 字符串本质是 ​连续的字符序列,天然适合用指针连续操作。
    • 输入函数(如 scanf)专门为字符串设计了 %s 格式符。
  • 其他类型数组​:
    • 例如 int a[505],每个元素可能需不同格式(如 %d),无法统一连续处理。
    • 必须显式指定索引或指针偏移

好了,基础知识已经掌握了,让我们直接看代码吧。

法一:

倒置是因为加法是从后往前加的,所以倒置过来在代码里从前往后加模拟,只是换了方向。

此时里面的加法模拟, 我们先不看加号就是这样,e[i] = c[i] + d[i],e数组统计数字总和,每个位数上的数字相加,此时会出现加后为两位数,此时要往后进一位 ,所以有  e[i + 1]  = e[i]/ 10;
而原来的位数上保留个位上的数字 所以有  e[i] = e[i] % 10; 但之后进入下一次循环,开始加下一个位数,此时会出现一种情况,在前一位的加法里面,如果有进位发生到此处怎么把进位的数加上,所以此时有了   e[i] += c[i] + d[i]  将之前的进位的情况数字加上。

法二:

只是进位的方式发生改变,此时jw单独设成一个变量,如果前面有jw,在下一次循环加上。

之后循环完毕,看是否还有进位,若还有则总位数加1,将jw变量设在开头代表进位的数字,m数组在函数里面就已经将结果输入完毕,最后只需要传入位数。

最后返回的是运算完成后数字的位数

二,减法

注意:此题重在分析:

1,减是两个数字相减,此时如果第一个数比第二个大,则可以安全相减,若比第二个小,则需要添负号,再把两数反过来相减,这就涉及到数学知识,两个数若相减,前一个数比后一个数小,则它们最后的结果相当于后面大的数减前面小的数,再在前面添负号。

2,而此时,就需要设置一个布尔类型判断两数谁小了。

原题解如下:

此时涉及到字符串的知识

字典序:

字符串比较规则。

字典序的核心规则​(以 m > n 为例):

m 和 n 都是字符串,但怎么比较大小

  1. 从左到右逐字符比较
    比较 m 和 n 的第一个字符:

    • 如果 m[0] 的ASCII码 ​大于​ n[0] → 直接判定 m > n 为 true
    • 如果 ​小于​ → 判定为 false
    • 如果 ​相等​ → 继续比较下一个字符。
  2. 若所有字符均相同

    • 较长的字符串更大(例如 "hello" > "hell")。
    • 长度和内容完全相同时 → m > n 为 false

比较的是字符串里面每个字符的ASCLL编码。

 m > n ,此为逐个逐个比较字符串里面逐个的字符编码,看谁先出现大的数,

但是思考 "100"和"99"这类情况,则反而判断出后面比前面大,那该怎么克服呢,只需要按我题解一样先判断长短就行。

ok,结束,下期的事我们下期再聊。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/904951.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/904951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

气象大模型光伏功率预测中的应用:从短期,超短期,中长期的实现与开源代码详解

1. 引言 光伏功率预测对于电力系统调度、能源管理和电网稳定性至关重要。随着深度学习技术的发展,大模型(如Transformer、LSTM等)在时间序列预测领域展现出强大能力。本文将详细介绍基于大模型的光伏功率预测方法,涵盖短期(1-6小时)、超短期(15分钟-1小时)和中长期(1天-1周…

玩转Docker(一):基本概念

容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行。 本文将对其基本概念和基本使用做出介绍。包括容器生态系统、容器的原理、怎样运行第一个容器、容器技术的概念与实践、Docker镜像等等 目录 一. 鸟瞰容器生态系统 1. 容器…

计算机视觉与深度学习 | 基于数字图像处理的裂缝检测与识别系统(matlab代码)

🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅🍅 基于数字图像处理的裂缝检测与识别系统 🥦🥦🥦🥦🥦🥦🥦🥦🥦🥦🥦🥦🥦**系统架构设计****1. 图像预处理**目标:消除噪声+增强裂缝特征**2. 图像分割**目标:提取裂缝区域**3. 特征…

推荐一款免费开源工程项目管理系统软件,根据工程项目全过程管理流程开发的OA 办公系统

在当今的工程项目管理领域,许多企业和团队面临着诸多难题。传统的管理方式往往依赖于人工记录和分散的工具,导致项目进度难以实时把控,任务分配不够清晰,合同管理混乱,事件提醒不及时,财务管理缺乏系统性&a…

Proser:在使用中改进

上位机接收到下位机发送的协议,解析出工作模式,然后依据此模式切换到相应的界面。为了调试这个功能,由Proser提供的Block与Sequence生成器相当有用: 使用Block生成器:忽略掉不感兴趣的数据使用Sequence生成器&#xf…

C语言_程序的段

在 C 语言程序中,内存通常被分为多个逻辑段,每个段存储不同类型的数据。理解这些段的结构和功能,有助于你更高效地编写、调试和优化程序。以下是 C 语言程序中主要的内存段及其特点: 1. 代码段(Text Segment) 存储内容:编译后的机器指令(程序代码)。特性: 只读:防止…

【桌面】【输入法】常见问题汇总

目录 一、麒麟桌面系统输入法概述 1、输入法介绍 2、输入法相关组件与服务 3、输入法调试相关命令 3.1、输入法诊断命令 3.2、输入法配置重新加载命令 3.3、启动fcitx输入法 3.4、查看输入法有哪些版本,并安装指定版本 3.5、重启输入法 3.6、查看fcitx进程…

Node.js 24.0 正式发布:性能跃升与开发体验全面升级

Node.js v24.0.0 震撼发布!V8 13.6、npm 11、权限模型稳定化等重磅更新 2025年5月6日 —— Node.js 社区迎来重大里程碑!Node.js v24.0.0 正式发布,带来一系列激动人心的新特性、性能优化和 API 改进。本次更新涵盖 V8 JavaScript 引擎升级至…

MySQL 查询优化全攻略:从原理到实战

为什么查询优化如此重要? 在当今数据驱动的时代,数据库性能直接影响着用户体验和业务效率。根据统计,网页加载时间每增加1秒,转化率可能下降7%,而数据库查询往往是性能瓶颈的关键所在。作为最流行的开源关系型数据库之…

《从零开始:构建你的第一个区块链应用》

一、引言 区块链技术,这个曾经只在金融领域被广泛讨论的技术,如今已经渗透到各个行业。从供应链管理到智能合约,区块链的应用场景越来越丰富。对于开发者来说,理解区块链的基本原理并构建一个简单的区块链应用,是进入这…

使用AES-CBC + HMAC-SHA256实现前后端请求安全验证

AES-CBC HMAC-SHA256 加密验证方案,下面是该方案二等 优点 与 缺点 表格,适用于文档、评审或技术选型说明。 ✅ 优点表格:AES-CBC HMAC-SHA256 加密验证方案 类别优点说明🔐 安全性使用 AES-CBC 对称加密使用 AES-128-CBC 是可…

Veins同时打开SUMO和OMNeT++的GUI界面

进入 Veins 工程目录(即包含 sumo-launchd.py 的目录),打开终端设置 SUMO_HOME 环境变量(指向你安装的 SUMO 路径): export SUMO\_HOME/home/veins/src/sumo-1.11.0编译 Veins 工程(包含 OMNeT…

suricata之日志截断

一、背景 在suricata的调试过程中,使用SCLogXXX api进行信息的输出,发现输出的日志被截断了,最开始以为是解析逻辑有问题,没有解析完整,经过排查后,发现SCLogXXX api内部进行了长度限制,最长2K…

navicat 如何导出数据库表 的这些信息 字段名 类型 描述

navicat 如何导出数据库表 的这些信息 字段名 类型 描述 数据库名字 springbootmt74k 表名字 address SELECT COLUMN_NAME AS 字段名,COLUMN_TYPE AS 类型,COLUMN_COMMENT AS 描述 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA springbootmt74k AND TABLE_NAME a…

LVGL图像导入和解码

LVGL版本:8.1 概述 在LVGL中,可以导入多种不同类型的图像: 经转换器生成的C语言数组,适用于页面中不常改变的固定图像。存储系统中的外部图像,比较灵活,可以通过插卡或从网络中获取,但需要配置…

【Web前端开发】HTML基础

Web前端开发是用来直接给用户呈现一个一个的网页,主要包含实现用户的结构(HTML)、样式(CSS)、交互(JavaScript)。然而一个软件通常是由后端和前端完成的。可以查阅文档:HTML 教程 (w…

MySQL 8.0 单节点部署与一主两从架构搭建实战

前言:在数据驱动的时代,数据库作为数据存储与管理的核心组件,其架构的选择与配置对系统的性能、可用性和扩展性至关重要。MySQL 作为一款广泛应用的开源关系型数据库,凭借其稳定的性能和丰富的功能,深受开发者和企业的…

数据库故障排查全攻略:从实战案例到体系化解决方案

一、引言:数据库故障为何是技术人必须攻克的 "心腹大患" 在数字化时代,数据库作为企业核心数据资产的载体,其稳定性直接决定业务连续性。据 Gartner 统计,企业每小时数据库 downtime 平均损失高达 56 万美元&#xff0…

牛客周赛round91

C 若序列为1 4 5 7 9 1 2 3,1 9一定大于1 1或1 4...所以只需要记录当前数之前数字的最大值,然后遍历取max即可,所以对于上面的序列有效的比较为1 9,2 9,3 9取max 代码 //求大于当前数的最大值,然后…

【MCAL】TC397+EB-tresos之I2c配置实战(同步、异步)

I2C总线是Philips公司在八十年代初推出的一种串行、半双工的总线,主要用于近距离、低速的芯片之间的通信。本篇文章首先从理论讲起,介绍了英飞凌TC3x系列芯片对应MCAL中对I2C驱动的定义与介绍,建议读者在阅读本篇文章之前对I2C有个简单的认识…