高精度之加減乘除之多解總結(加與減篇)

開篇總述:精度計算的教學比較雜亂,無系統的學習,且存在同法多線的方式進行同一種運算,所以我寫此篇的目的只是為了直指本質,不走教科書方式,步驟冗雜。

一,加法

我在此講兩種方法:

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
英文地址,請注明出處:http://en.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有個簡單的認識…