C語言高精度加法,c語言程式設計 高精度加減法

2022-03-01 12:16:19 字數 4257 閱讀 3668

1樓:小毛擼

首先,你的進位沒有處理好,就是最後那個迴圈,其次,你這樣把字元陣列轉換成整型陣列沒有提高程式的執行效率,反而降低了,要麼就直接用字元陣列進行操作,或者可以每四個字元數字轉換成一個整型資料。(ps,我也不是很厲害,如果有什麼不對,請指正)

2樓:匿名使用者

#include

#include

void addnum(void)

, num2[numbuffersize] = ;

char sum[numbuffersize] = ;

if (null == fgets(num1, numbuffersize, stdin))

return;

if (null == fgets(num2, numbuffersize, stdin))

return;

cntnum1 = strlen(num1) - 1;//去除'\n'

cntnum2 = strlen(num2) - 1;//去除'\n'

i = 0;

while (i < cntnum1)

num1[i] -= 48;

++i;

}i = 0;

while (i < cntnum2)

num2[i] -= 48;

++i;

}if (cntnum1 > cntnum2)

else

cntsum = cntmax;

sum[cntsum] = '\n';

sum[cntsum + 1] = '\0';

addup = 0;

while (cntmix > 0)

else

}while (cntmax > 0)

else

}i = 0;

while (i < cntsum)

fputs((const char *)sum, stdout);}

3樓:匿名使用者

分解成32位加法就行了

c語言程式設計 高精度加減法

4樓:張風富志勇

等十分鐘

在給你寫

加法函式

好久沒寫程式了

本來以為十分鐘能寫好

。。。。。(修改:修復了個小bug)

void

plus(char

*a,char

*b,char

*c)for(i=0;i=0;i--)

for(i=0;i=0)

else

carry=0;

index_c--;

}if(carry==1)

c[0]=1;

}c[temp_index_c+1]=0;}

5樓:匿名使用者

用字串儲存資料 並且初始化陣列全部為'\0' 比如你把213914儲存到陣列a[10]裡面 那麼結果就是 a="000213914\0" 同理 b="023466123\0" 然後對應位相加 加完後逢十進一 進完後再保留個位數就好了 就和你小時候列豎式算加法一個道理 減法一個道理 但要注意進位

6樓:匿名使用者

#include"stdio.h"

#include"stdlib.h"

#include"ctype.h"

#include"string.h"

#define error -999999999int

*pstr1='\0';

num1=(int)strtol(str1,null,10);

while((*str!='+')&&(*str!='-'))str++;

if(isdigit(*str))

return error;

else

som=*str;

str++;

while(isdigit(*str))

*pstr2='\0';

num2=(int)strtol(str2,null,10);

free(str1);

free(str2);

}int

main(void)

return 0;}

c語言高精度加法

7樓:巫素芹拜君

所謂高精度加法一般都是把數字存成字元型,然後按照加法規則一位一位的加並進位。我做過長整數的,基本上位數沒什麼限制。如果帶小數的話需要處理一下,稍微麻煩一些

8樓:匿名使用者

我在自己的電腦上執行了,沒錯誤現在

#include "stdio.h"

void main()

for(i=0;i<(lb/2);i++)m=la>lb?la:lb;

for(i=0;i9)

}for(i=0;i

printf("%d",c[i]);

}不懂看下面,我幫你徹底搞定,呵呵

急!!!!求c語言高精度加法計算的程式

9樓:在古雁橋駕車的黃蓋

#include

#include

using namespace std;

交換兩數*/

void bigplus(string plus1, string plus2)  /*大數加法*/

else

}i = strplus[0] == 0 ? 1 : 0;  /*捨去高位無用0*/

for ( ; i <= len1+1; ++i)     /*列印結果*/

cout<>plus1>>plus2;

if (plus1.size() < plus2.size())  /*使plus1位數不小於plus2*/

swap(plus1,plus2);

bigplus(plus1,plus2);                /*大數加法*/

return 0;

}快速 超級大數加法,支援無上限大數加法~~~~

思想:由於int型最大為10億左右,當超過這個位數的時候,將會給計算帶來問題,這時候就需要大數計算。

這裡講數字按位儲存在陣列裡面進行操作~

然後對陣列進行按位加,需要注意的就是進位操作。

10樓:終結者

那你需要自己定資料型別了

c語言,高精度加法的思路。和**。

11樓:匿名使用者

只寫了整數加法的。類似的,你把浮點數,分成整數和小數兩個部分,然後小數部分相加,整數部分相加。先算小數部分相加,把進位加到整數部分。

再算整數部分相加。最後再合併起來。我還沒寫過浮點數相加的。

只寫了整數的,你可以參考下: http://blog.

12樓:匿名使用者

建議不要用十進位制,很浪費空間的,可以採取萬進位制或者更多進位制的,進位只要a%10保留,a/10進位就可以啦(假定定使用十進位制),

13樓:匿名使用者

先要進行小數點對齊,然後如果第i個字元相加過10就讓i-1的字元增1就行

c語言高精度計算

c語言高精度實數加法 5

14樓:等你呢

#include

void main()

15樓:匿名使用者

隨便給你個大點的資料就爆了,而且如果小數位是三位、四位怎麼辦不會。

求大牛糾錯c語言程式(有關高精度加減法)

16樓:匿名使用者

你的程式時實現什麼功能?連功能都不知道怎麼改啊

17樓:匿名使用者

日 我還沒有學到這呢!!!

18樓:匿名使用者

為什麼用a,b,c要用char型?直接用int不就行了,也不用分正負了。 題目裡都說了是兩個 int 型的a,b

高精度問題,C語言,求二的n次方

自己一個一個 敲的,希望對題主有用 int main else 模擬乘2過程 ret j 2 ret j iscarry if ret j 10 else 一輪模擬乘2結束,判斷是否還有進位,如果有進位,則在下位賦值為1 if 1 iscarry 最後一次模擬需要儲存,總共計算了的長度。if i n...

c語言程式設計,C語言程式設計

這麼簡單還用不到結構體陣列和檔案 include include static int find x unsigned int number,int x char t 0 int count 0 int i 0 if itoa number,buf,10 null return 0 for buf ...

用C語言程式設計,用c語言程式設計?

有庫函式的大哥,如下 include下 函式原型 int cdecl islower int c int cdecl isupper int c int cdecl tolower int c int cdecl toupper int c 如何判斷一個字元是小寫字母?查上一章提供的ascii碼錶....