国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

c++實現高精度加法

2020-01-26 14:07:07
字體:
來源:轉載
供稿:網友

最近遇到一個c++實現高精度加法的問題,高精度問題往往十復雜但發現其中的規律后發現并沒有那么復雜,這里我實現了一個整數的高精度加法,主要需要注意以下幾點:

1:將所需輸入的數據以字符數組的形式輸入,建立字符數組,建立相應的整數數組,然后一一映射,以此來實現數據的輸入,需要注意的是,當實現字符向數字映射時,應該減去相應的ASCII偏移值,即48。

2:為了模擬我們在紙上手算的進位模擬運算,我們將字符數組反向填入整數數組,上圖的后幾行代碼實現了這個操作。

3:實現進位加法,這是整個代碼的核心部分,需要讀者細細體會,認真揣摩,往往需要反復思考,容易遺忘

4:反向輸出數據。因為我們的加法是將數組反置,然后由左到右想加的,加完后,個數位在左邊,所以,需要反向輸出

 

以下是全部代碼:

  #include<iostream>   #include<cstdio>   #include<cstring>   using namespace std;   int main()   {     char a1[100],b1[100];     int a[100],b[100],c[100];     int a1_len,b1_len,lenc,i,x;     memset(a,0,sizeof(a));      memset(b,0,sizeof(b));      memset(c,0,sizeof(c));          gets(a1);      gets(b1); //輸入加數與被加數            a1_len=strlen(a1);      b1_len=strlen(b1);          for (i=0;i<=a1_len-1;i++)      {       a[a1_len-i]=a1[i]-48; //將操作數放入a數組       }           for (i=0;i<=b1_len-1;i++)     {       b[b1_len-i]=b1[i]-48; //將操作數放入b數組      }             lenc =1;      x=0;           while(lenc <=a1_len || lenc <=b1_len)      {        c[lenc]=a[lenc]+b[lenc]+x; //兩數相加         x=c[lenc]/10;  //要進的位       c[lenc]=c[lenc]%10;   //進位后的數       lenc++;   //數組下標加1     }          c[lenc]=x;     if (c[lenc]==0)     {       lenc--; //處理最高進位      }           for (i=lenc;i>=1;i--)     {       cout<<c[i]; //輸出結果       }     cout<<endl;          return 0;   } 

以上就是本文給大家分享的代碼了,希望大家能夠喜歡

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌宁县| 文水县| 巴塘县| 来宾市| 沙坪坝区| 肥城市| 内江市| 朝阳市| 阿合奇县| 大方县| 西宁市| 韩城市| 虹口区| 铜鼓县| 大关县| 广宁县| 自贡市| 十堰市| 桐梓县| 小金县| 遂平县| 时尚| 东方市| 龙泉市| 镇巴县| 潜山县| 泸水县| 牡丹江市| 泽州县| 登封市| 江永县| 陇川县| 罗田县| 大姚县| 涪陵区| 咸阳市| 太和县| 铜川市| 汉中市| 叶城县| 伊金霍洛旗|