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

首頁 > 學院 > 開發設計 > 正文

基礎練習 高精度加法

2019-11-11 04:58:40
字體:
來源:轉載
供稿:網友

問題描述   輸入兩個整數a和b,輸出這兩個整數的和。a和b都不超過100位。 算法描述   由于a和b都比較大,所以不能直接使用語言中的標準數據類型來存儲。對于這種問題,一般使用數組來處理。   定義一個數組A,A[0]用于存儲a的個位,A[1]用于存儲a的十位,依此類推。同樣可以用一個數組B來存儲b。   計算c = a + b的時候,首先將A[0]與B[0]相加,如果有進位產生,則把進位(即和的十位數)存入r,把和的個位數存入C[0],即C[0]等于(A[0]+B[0])%10。然后計算A[1]與B[1]相加,這時還應將低位進上來的值r也加起來,即C[1]應該是A[1]、B[1]和r三個數的和.如果又有進位產生,則仍可將新的進位存入到r中,和的個位存到C[1]中。依此類推,即可求出C的所有位。   最后將C輸出即可。 輸入格式   輸入包括兩行,第一行為一個非負整數a,第二行為一個非負整數b。兩個整數都不超過100位,兩數的最高位都不是0。 輸出格式   輸出一行,表示a + b的值。 樣例輸入 20100122201001221234567890 2010012220100122 樣例輸出 20100122203011233454668012 代碼分享:

#include<stdio.h>#include<string.h>int main(){ char A[100],B[100],C[100],D[100]; int S[101]={0},r,k,s,m; int i=0,j=0,count=0; memset(A,0,sizeof(A));//先將三個整型數組全部賦值為0 memset(B,0,sizeof(B)); memset(S,0,sizeof(S)); scanf("%s%s",C,D);//先用字符數組過渡存儲 int len=strlen(C)>strlen(D)?strlen(C):strlen(D);//計算兩個加數最長的,存到len中 for(i=0,j=strlen(C)-1;j>=0;i++,j--){ A[i]=C[j]-'0'; } for(i=0,j=strlen(D)-1;j>=0;i++,j--){ B[i]=D[j]-'0'; }//將所有字符型轉換為整形 for(i=0;i<len;i++){ S[i]+=A[i]+B[i]; if(S[len-1]>=10){//如果最高位的數字大于10.表示需要進位處理 len++;//len就是結果數組中有效的長度 } S[i+1]+=S[i]/10; S[i]%=10;//老套的進位處理 } for(m=len-1;m>=0;m--)//輸出時先輸出高位,即在數組中下標較大的數字
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海口市| 色达县| 土默特左旗| 大兴区| 满城县| 丽水市| 乌兰县| 洪江市| 赞皇县| 凤庆县| 东港市| 栾川县| 洪湖市| 沙坪坝区| 湘乡市| 上蔡县| 山西省| 利川市| 阜宁县| 山丹县| 新丰县| 昌吉市| 嘉鱼县| 台湾省| 凤山市| 开化县| 象州县| 岚皋县| 得荣县| 铜梁县| 湖口县| 资溪县| 泰州市| 布尔津县| 申扎县| 宿州市| 临桂县| 长白| 清河县| 邵武市| 东阿县|