精度計算-大數加大數,精度大數加大數

來源:互聯網
上載者:User

精度計算-大數加大數,精度大數加大數
精度計算                大數加大數本演算法是用來計算一個大數(現有的資料類型無法表示的數)加上一個大數(現有的資料類型無法表示的數)。演算法思路是把作為被加數和加數的大數的每一位都當做一個字元分別放入一個字元數組中,再把加數的各個位與被加數的各個位從最低位依次相加,將結果存放在一個字元指標中,最後再放入一個結果數組中。下面是我的C語言實現過程

#include<stdio.h>#include<string.h>void add(char a[],char b[],char back[]);main(){char a[65] = "1312312321";char b[65] = "123123123123";char back[130] = "";add(a,b,back);printf("%s",back);}void add(char a[],char b[],char back[]){int i,j,k,up,x,y,z,l;char *c;if (strlen(a)>strlen(b)) l=strlen(a)+2; else l=strlen(b)+2;c=(char *) malloc(l*sizeof(char));i=strlen(a)-1;j=strlen(b)-1;k=0;up=0;while(i>=0||j>=0){if(i<0)x='0';else x=a[i];if(j<0)y='0';else y=b[j];z=x-'0'+y-'0';if(up) z+=1;if(z>9) {up=1;z%=10;}else up=0;c[k++]=z+'0';i--;j--;}if(up) c[k++]='1';i=0;c[k]='\0';for(k-=1;k>=0;k--)back[i++]=c[k];back[i]='\0';} 


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.