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 自己一個一個 敲的,希望對題主有用 int main else 模擬乘2過程 ret j 2 ret j iscarry if ret j 10 else 一輪模擬乘2結束,判斷是否還有進位,如果有進位,則在下位賦值為1 if 1 iscarry 最後一次模擬需要儲存,總共計算了的長度。if i n... 這麼簡單還用不到結構體陣列和檔案 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 ... 有庫函式的大哥,如下 include下 函式原型 int cdecl islower int c int cdecl isupper int c int cdecl tolower int c int cdecl toupper int c 如何判斷一個字元是小寫字母?查上一章提供的ascii碼錶....高精度問題,C語言,求二的n次方
c語言程式設計,C語言程式設計
用C語言程式設計,用c語言程式設計?