日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大数运算(2)——大数加法

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大数运算(2)——大数加法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*大數加法的中心思想就是:模擬人工列豎式算加法的方法。先從最低位開始相加,判斷是否進1,一直到最高位。
例如:
求12545642233+278545的和,該怎么算?
是這樣的:
? ? ?3 ?3 ?2 ?2 ?4 ?6 ?5 ?4 ?5 ?2 ?1 ?0
+ ?2 ?7 ?8 ?5 ? 4 ?5 ?0 ?0 ?0 ?0 ?0 ?0
————————————————
? ? 5 ? ?//不進位,繼續算下一位
? ? ? ? ?0 ? ?//進位為1,并儲存其各位數0
? ? ? ? ? ? ?1 ? //2+8=10,10+1=11,同樣,進位為1,并儲存其各位數1
? ? ? ? ? ? ? ? ? 8 ? //不進位,繼續算下一位
————————>
由低位向高位相加計算,注意判斷是否進位!計算結束后,注意判斷最后所得數組的長度,并去掉前導0。
下面是C語言代碼實現: #include<stdio.h> #include<string.h> int x[100]={0},y[100]={0},z[105]={0};//將數組元素全部初始化為0 int main() { char a[100],b[100];//通過字符串對大數進行輸入并儲存 int len1,len2,len; while(scanf("%s %s",a,b)) { int i,j=0,k=0; len1=strlen(a); len2=strlen(b); for(i=len1-1;i>=0;i--)//將兩個字符串中的字符轉化為數字,并倒序儲存到數組中,即字符串為123456,則數組為654321 { x[j]=a[i]-'0'; j++; } for(i=len2-1;i>=0;i--) { y[k]=b[i]-'0'; k++; } if(len1>len2) len=len1; else len=len2; i=0;//從最低位(個位)開始進行計算 int m=0; for(i=0;i<len;i++) { z[i]=(x[i]+y[i]+m)%10;//將所得數的個位存到數組z[i]中去 if((x[i]+y[i]+m)>=10) m=1; else m=0; } if((x[i-1]+y[i-1]+m)>=10)//判斷運算的最大位的和是否>=10 z[i]=1; else i=i-1; for(;i>=0;i--)//到序輸出數組 printf("%d",z[i]); printf("\n"); } return 0; }
另外:
有時,你可能會遇到大數,但他是小數,例如125454521564564.56456132145645這樣的,所以可以以小數點為界限,進行相加減。*/

總結

以上是生活随笔為你收集整理的大数运算(2)——大数加法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。