用c++實現高精度加法

來源:互聯網
上載者:User

標籤:style   end   com   center   font   namespace   ext   代碼實現   注意   

c++實習高精度加法

 

最近遇到一個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;      }  

 

用c++實現高精度加法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.