作者: falcon 發(fā)表日期: 2006-05-31 18:46
復(fù)制鏈接
先說一下思路哦:
1)先從鍵盤屏幕接收兩個大數(shù),按字符串存放到字符數(shù)組中。
2)
初始化進(jìn)位為0
然后從兩個字符數(shù)組中分別取出最后一個字符(數(shù)字)開始來求和
一直求和到字符串長度較小的最小下標(biāo)處停止
結(jié)果保存較大數(shù)字所存放的字符數(shù)組中
(說明:
如果結(jié)果大于106,那么結(jié)果減去58存入,并記錄進(jìn)位為1
否則,結(jié)果減去48存入,并記錄進(jìn)位為0
)
3)如果兩個數(shù)字的位數(shù)不相同,那么需要求出最后一位可能的進(jìn)位
比如5+96=101
4)進(jìn)位為1,那么和之前需要輸出一個1
5)輸出兩個大數(shù)的和
下面是具體代碼
Code:
[Ctrl+A Select All]
補(bǔ)充:在ubuntu下用gcc編譯通過
部分演示結(jié)果
falcon@falcon:~/program/c/code/mylove$ gcc -o add_LN add_LN.c
falcon@falcon:~/program/c/code/mylove$ ./add_LN
Please input two Large Number less than 10000 bit
5
6
兩數(shù)之和為:
11
falcon@falcon:~/program/c/code/mylove$ ./add_LN
Please input two Large Number less than 10000 bit
877848515165484151
996527784841515184
兩數(shù)之和為:
1874376300006999335
falcon@falcon:~/program/c/code/mylove$ ./add_LN
Please input two Large Number less than 10000 bit
8995951
784784987951252178485215254798749874984185416845865215187484520512
兩數(shù)之和為:
784784987951252178485215254798749874984185416845865215187493516463
falcon@falcon:~/program/c/code/mylove$ ./add_LN
Please input two Large Number less than 10000 bit
5
96
兩數(shù)之和為:
101
guest 發(fā)表于 2007-11-20 23:38
#2
你的C語言代碼有點(diǎn)小錯誤!就是在那段:
if(equal==0)
{
Temp=LN[flag1][LN_Len[flag1]+i]+jw;
if(Temp>=58)
{
jw=1;
LN[flag1][LN_Len[flag1]+i]=Temp-10;
}
else
{
jw=0;
LN[flag1][LN_Len[flag1]+i]=Temp;
}
}
缺少了對一直有進(jìn)位即JW=1時候的累加!應(yīng)該加上個while循環(huán):
if(equal==0)
{
while(j>0 && jw==1)
{
Temp=LN[flag1][j+i]+jw;
if(Temp>=58)
{
jw=1;
LN[flag1][j+i]=Temp-10;
}
else
{
jw=0;
LN[flag1][j+i]=Temp;
}
j--;
}
并且初始j=LN_Len[flag1]
歡迎訪問blog.sina.com.cn/Fanmcgrady與我交流!呵呵~~謝謝你的幫助!