題目描述:
在二十進位制中,我們除了使用數字0-9以外,還使用字母a-j(表示10-19),給定兩個二十進位制整數,求它們的和。 輸入是兩個二十進位制整數,且都大於0,不超過100位; 輸出是它們的和(二十進位制),且不包含首0。我們用字串來表示二十進位制整數。
分析:在第一眼看到這道題的時候,我相信你也會有乙個思路:從兩字元的右端開始操作,並且每次都將相應的字元轉化為十進位制後再相加,如果有進製就將進製1加到下一位高位上,最後再將得到的額十進位制結果轉化為字元儲存起來。當我們將所有數加完之後,你也許會發現,假如最高位有進製,那怎麼辦呢?這個問題還是要解決的,而且不難解決,只要我們將儲存結果的字元陣列宣告比輸入兩個數的長度最長的那個長度+1就可。最終判斷最高位是否溢位,如果溢位,那麼就將最高位設定為字元1,否則,則將最高為去掉後再返回位址在輸出。本人就根據這個思路把**實現了,但是由於初出茅廬,**質量不是很好,請見諒。注釋只注釋前一部分,因為後一部分和前面的大致一樣意思。
演算法實現:
char* calculate(char* x, char* y)
else
sum = (char *)malloc((len+1) * sizeof(char));
memset(sum, 0, sizeof(sum));
//從字元後面算起,即低位算起
for (i = len - 1; i >=0; i--)
else
if (i >= clen)//將字元短的y停止,因為y已算完
else
}//轉化為二十進位制,儲存結果
if (cf + tempx + tempy>=20)//該位置的和大於等於20,則有進製
else
cf = 1;
}else
else
cf = 0;
}} else//如果x比y的長度短
else
if (i >= clen)
else
}if (cf+tempx + tempy>=20)
else
cf = 1;
}else
else
cf = 0;
}} }
if (cf==1)
else
return sum;
}
二十進位制數的加法
題目詳情 在二十進位制中,我們除了使用數字0 9以外,還使用字母a j 表示10 19 給定兩個二十進位制整數,求它們的和。輸入是兩個二十進位制整數,且都大於0,不超過100位 輸出是它們的和 二十進位制 且不包含首0。我們用字串來表示二十進位制整數。class program 二十進位制相加 字串...
ZOJ 1205 二十進位制加法
1205 計算兩個二十進位制數的和 sample input 1234567890 abcdefghij 99999jjjjj 9999900001 sample output bdfi02467j iiiij00000 值和字元間的轉換關係 int converttoint char src ch...
二十進位制數的加法 英雄會
今天晚上看到群裡面交流的資訊,發現又出新題了,看了一下,難度還可以,是一般性的題目。事實如此,大家一說簡單,一會兒就由三星難度降為二星了.題目不少,有興趣的朋友們可以去 英雄會.如題 在二十進位制中,我們除了使用數字0 9以外,還使用字母a j 表示10 19 給定兩個二十進位制整數,求它們的和。輸...